vax 发表于 2009 年 1 月 2 日 23:29:25

Shell常用命令整理(SSH管理主机说明)

转载哦   来自:http://xreacn.com   把技术文档搬到这里了
可以SSH连接的主机可以使用客户端直接连接Shell,不能开通SSH的主机,Cpanel面板的主机可以通过cron job执行Shell命令

如何远程连接Shell:

推荐使用免费的客户端: Putty

下载后运行
host name 输入主机ip或者域名
Port 一般默认使用22,如果主机商设置为其他端口自己修改
Connection type 选择SSH

然后点击Open

在打开的界面中:
Login as 输入用户名
Password 输入密码
回车,登陆到Shell,就可以运行shell命令了

注意: linux的命令行方式在输入密码的时候光标不动,不要认为没有输入成功,输入后回车即可.
----------------------------------------------------------------------------------------------------------------
Shell基本命令
几个基本的shell命令,用ssh管理主机必备。
1.ls列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件
# ls
file.html public_htmltest
#
参数:
ls -a 列出所有文件,包括隐藏文件
# ls -a
....bash_logout.bash_profile.bashrcfile.html public_htmltest
#
ls -l列出所有者 size 文件权限 修改日期
ls -R递归列出所有子目录的内容

2. cd转移目录
cd /home/steph 将转移到/home/steph
cd ..上移一个目录
cd 回到根目录

3. 建立新文件和文件夹
touch 新的filename建立新文件
mkdir 新的directory建立新目录

4.删除文件和目录
rm filename删除名为 filename的文件
rmdir foldername 删除名为foldername的目录

5.修改文件夹权限
chmod 755 foldername将把名为foldername的文件夹的权限修改为755

6.修改用户
chown steph:steph file.html   把file.html的用户修改为steph:steph
-------------------------------------------------------------------------------------------
2. 压缩和解压缩文件
gzip 和 gunzip

压缩:
gzipfilename

文件即会被压缩,并被保存为 filename.gz

解压缩:

gunzip filename.gz

filename.gz 会被删除,而继之以 filename

可以通过命令man gip 和man gunzip获得命令的详细说明.

zip 和 unzip

要使用 zip 来压缩文件,在 shell 提示下键入下面的命令:

zip -r filename.zip filesdir

在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。

要解压缩 zip 文件的内容,键入以下命令:

unzip filename.zip

你可以使用 zip 命令同时处理多个文件水产觯?⒂每崭窦涓簦?

zip -r filename.zip file1 file2 file3 /usr/work/school

上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[ 本帖最后由 vax 于 2009-1-2 23:33 编辑 ]

vax 发表于 2009 年 1 月 2 日 23:29:46

MYSQL 常用命令
有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。

一、连接MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码

1、例1:连接到本机上的MYSQL。

进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)

二、修改密码。

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令

mysqladmin -uroot -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、例2:再将root的密码改为djg345。

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"

例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:

grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。

例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";

如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";

在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

一、操作技巧

1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。

2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。

二、显示命令

1、显示数据库列表。

show databases;

刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示库中的数据表:

use mysql; //打开库,学过FOXBASE的一定不会陌生吧

show tables;

3、显示数据表的结构:

describe 表名;

4、建库:

create database 库名;

5、建表:

use 库名;

create table 表名 (字段设定列表);

6、删库和删表:

drop database 库名;

drop table 表名;

7、将表中记录清空:

delete from 表名

8、显示表中的记录:

select * from 表名;

三、一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表结束

//以下为插入字段

insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');

注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。(4)将YEAR设为日期字段。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

四、将文本数据转到数据库中

1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.

例:

3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23

2、数据传入命令 load data local infile \"文件名\" into table 表名;

注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。

五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)

mysqldump --opt school>school.bbb

注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。

后记:其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是"晏子"译的"MYSQL中文参考手册"不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是象\"PHP4中文手册 \"那样是chm的格式,在查找函数命令的时候不太方便。

vax 发表于 2009 年 1 月 2 日 23:31:58

运行FTP Wget实现上载下载
1. 用FTP将服务器上的文件上载到其他服务器

$ ftp   /*启用FTP客户端
ftp> open202.103.1.2   /*打开远程服务器IP
Connected to 202.103.1.2.
220 ProFTPD 1.2.9 Server ready.
Name (218.93.205.112:qqroot): user/*输入用户名
331 Password required for oran.
密码:                  /*输入密码
230 User oran logged in.
put idcspy.tar.gz idcspy.tar.gz   
/*这是关键,put是上载命令,第一个idcspy.tar.gz是本地文件名,第二个是远程文件名。。意思就是把本地的idcspy.tar.gz上载到远程FTP里,并且命名为idcspy.tar.gz这样,SSH就可以自己上载了。你就可以做别的事情了。

2. Wget下载文件

使用方法:

wget的使用形式是:

wget [参数列表] URL

首先来介绍一下wget的主要参数:

· -b:让wget在后台运行,记录文件写在当前目录下"wget-log"文件中;

· -t :尝试次数,当wget无法与服务器建立连接时,尝试连接多少次

。比如"-t

120"表示尝试120次。当这一项为"0"的时候,指定尝试无穷多次直到连接成功为止,这个

设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续

下载没有传完的文件;

· -c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中

途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使

用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/Linux的Web/FTP服务器

都支持断点续传;

· -T :超时时间,指定多长时间远程服务器没有响应就中断连接

,开始下一次尝试。比如"-T

120"表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比

较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常

也不少于60,一般设置在120左右比较合适;

· -w :在两次尝试之间等待多少秒,比如"-w 100"表示两次尝试

之间等待100秒;

· -Y on/off:通过/不通过代理服务器进行连接;

· -Q :限制下载文件的总大小最多不能超过多少,比如"-Q2k"表示不能超过2K

字节,"-Q3m"表示最多不能超过3M字节,如果数字后面什么都不加,就表示是以字节为单

位,比如"-Q200"表示最多不能超过200字节;

· -nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;

· -x:与"-nd"设置刚好相反,创建完整的目录结构,例如"wget -nd

http://www.gnu.org"将创建在当前目录下创建"www.gnu.org"子目录,然后按照服务器

实际的目录结构一级一级建下去,直到所有的文件都传完为止;

· -nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目

录下;

· --http-user=username

· --http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;

· --proxy-user=username

· --proxy-passwd=password:如果代理服务器需要输入用户名和口令,使用这两个选项



· -r:在本机建立服务器端目录结构;

· -l :下载远程服务器目录结构的深度,例如"-l 5"下载目录深度小于或者等

于5以内的目录结构或者文件;

· -m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设

定其他合适的选项以便于站点镜像;

· -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们

假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载

这个人的个人主页,如果不设置这个选项,甚至--有可能把整个站点给抓下来,这显然是

我们通常不希望的;

vax 发表于 2009 年 1 月 2 日 23:32:19

ü 如何设定wget所使用的代理服务器

wget可以使用用户设置文件".wgetrc"来读取很多设置,我们这里主要利用这个文件来是

设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的".wgetrc"文件就起

作用。例如,"root"用户如果想使用".wgetrc"来设置代理服务器,"/root/.wgert"就起

作用,下面给出一个".wge

trc"文件的内容,读者可以参照这个例子来编写自己的"wgetrc"文件:

http-proxy = 111.111.111.111:8080

ftp-proxy = 111.111.111.111:8080

这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定

HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

第二篇:

$ wget --help

GNU Wget 1.9.1,非交互式的网络文件下载工具。

用法: wget [选项]... ...

长选项必须用的参数在使用短选项时也是必须的。

启动:

-V, --version      显示 Wget 的版本并且退出。

-h, --help       打印此帮助。

-b, -background     启动后进入后台操作。

-e, -execute=COMMAND  运行‘.wgetrc’形式的命令。

日志记录及输入文件:

-o, --output-file=文件   将日志消息写入到指定文件中。

-a, --append-output=文件  将日志消息追加到指定文件的末端。

-d, --debug        打印调试输出。

-q, --quiet        安静模式(不输出信息)。

-v, --verbose        详细输出模式(默认)。

-nv, --non-verbose     关闭详细输出模式,但不进入安静模式。

-i, --input-file=文件   下载从指定文件中找到的 URL。

-F, --force-html      以 HTML 方式处理输入文件。

-B, --base=URL       使用 -F -i 文件选项时,在相对链接前添加指定的 URL。

下载:

-t, --tries=次数       配置重试次数(0 表示无限)。

--retry-connrefused   即使拒绝连接也重试。

-O  --output-document=文件  将数据写入此文件中。

-nc, --no-clobber       不更改已经存在的文件,也不使用在文件名后

添加 .#(# 为数字)的方法写入新的文件。

-c, --continue        继续接收已下载了一部分的文件。

--progress=方式     选择下载进度的表示方式。

-N, --timestamping      除非远程文件较新,否则不再取回。

-S, --server-response    显示服务器回应消息。

--spider         不下载任何数据。

-T, --timeout=秒数      配置读取数据的超时时间 (秒数)。

-w, --wait=秒数       接收不同文件之间等待的秒数。

--waitretry=秒数     在每次重试之间稍等一段时间 (由 1 秒至指定的 秒数不等)。

--random-wait      接收不同文件之间稍等一段时间(由 0 秒至 2*WAIT 秒不等)。

-Y, --proxy=on/off      打开或关闭代理服务器。

-Q, --quota=大小       配置接收数据的限额大小。

--bind-address=地址   使用本机的指定地址 (主机名称或 IP) 进行连接。

--limit-rate=速率    限制下载的速率。

--dns-cache=off     禁止查找存于高速缓存中的 DNS。

--restrict-file-names=OS 限制文件名中的字符为指定的 OS (操作系统) 所允许的字符。

目录:

-nd --no-directories      不创建目录。

-x, --force-directories     强制创建目录。

-nH, --no-host-directories    不创建含有远程主机名称的目录。

-P, --directory-prefix=名称   保存文件前先创建指定名称的目录。

--cut-dirs=数目       忽略远程目录中指定数目的目录层。

HTTP 选项:

--http-user=用户  配置 http 用户名。

--http-passwd=密码  配置 http 用户密码。

-C, --cache=on/off    (不)使用服务器中的高速缓存中的数据 (默认是使用的)。

-E, --html-extension   将所有 MIME 类型为 text/html 的文件都加上 .html 扩展文件名。

--ignore-length    忽略“Content-Length”文件头字段。

--header=字符串     在文件头中添加指定字符串。

--proxy-user=用户  配置代理服务器用户名。

--proxy-passwd=密码  配置代理服务器用户密码。

--referer=URL     在 HTTP 请求中包含“Referer:URL”头。

-s, --save-headers    将 HTTP 头存入文件。

-U, --user-agent=AGENT  标志为 AGENT 而不是 Wget/VERSION。

--no-http-keep-alive 禁用 HTTP keep-alive(持久性连接)。

--cookies=off     禁用 cookie。

--load-cookies=文件  会话开始前由指定文件载入 cookie。

--save-cookies=文件  会话结束后将 cookie 保存至指定文件。

--post-data=字符串  使用 POST 方法,发送指定字符串。

--post-file=文件   使用 POST 方法,发送指定文件中的内容。

HTTPS (SSL) 选项:

--sslcertfile=文件   可选的客户段端证书。

--sslcertkey=密钥文件 对此证书可选的“密钥文件”。

--egd-file=文件    EGD socket 文件名。

--sslcadir=目录     CA 散列表所在的目录。

--sslcafile=文件   包含 CA 的文件。

--sslcerttype=0/1   Client-Cert 类型 0=PEM (默认) / 1=ASN1 (DER)

--sslcheckcert=0/1   根据提供的 CA 检查服务器的证书

--sslprotocol=0-3   选择 SSL 协议;0=自动选择,

1=SSLv2 2=SSLv3 3=TLSv1

FTP 选项:

-nr, --dont-remove-listing  不删除“.listing”文件。

-g, --glob=on/off      设置是否展开有通配符的文件名。

--passive-ftp      使用“被动”传输模式。

--retr-symlinks     在递归模式中,下载链接所指示的文件(连至目录

则例外)。

递归下载:

-r, --recursive     递归下载。

-l, --level=数字     最大递归深度(inf 或 0 表示无限)。

--delete-after    删除下载后的文件。

-k, --convert-links   将绝对链接转换为相对链接。

-K, --backup-converted  转换文件 X 前先将其备份为 X.orig。

-m, --mirror       等效于 -r -N -l inf -nr 的选项。

-p, --page-requisites  下载所有显示完整网页所需的文件,例如图像。

--strict-comments  打开对 HTML 备注的严格(SGML)处理选项。

递归下载时有关接受/拒绝的选项:

-A, --accept=列表        接受的文件样式列表,以逗号分隔。

-R, --reject=列表        排除的文件样式列表,以逗号分隔。

-D, --domains=列表        接受的域列表,以逗号分隔。

--exclude-domains=列表    排除的域列表,以逗号分隔。

--follow-ftp         跟随 HTML 文件中的 FTP 链接。

--follow-tags=列表      要跟随的 HTML 标记,以逗号分隔。

-G, --ignore-tags=列表      要忽略的 HTML 标记,以逗号分隔。

-H, --span-hosts         递归时可进入其它主机。

-L, --relative          只跟随相对链接。

-I, --include-directories=列表  要下载的目录列表。

-X, --exclude-directories=列表  要排除的目录列表。

-np, --no-parent         不搜索上层目录。


一个讲解的不错的Wget说明

wget是一个命令行工具,用于批量下载文件,支持HTTP和FTP。究竟比其他的工具好在哪里?看看内容吧
wget基本上所有的Linux版本都自己带了,但是有多少人在用呢?呵呵,如果你没有用过,不妨试试。Windows下面的用户可以使用GNUwin32的项目,wget,基本功能完全一致。好吧,我们来以几个简单的例子看看wget的威力。

如果我们想下载ftp里面某个目录里面的所有文件,我们也可以不用ftp这个笨蛋,呵呵,可以享受cute ftp等图形化工具的拖一个目录的轻松了。如
wget -r ftp://10.8.8.8/movie/
呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子

wget -r -nd ftp://10.8.8.8/movie/
结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用
wget -r -nH ftp://10.8.8.8/movie/
恩?movie也不要?OK,那就这样
wget -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

这有什么用啊?cuteftp比他好用多了,而且,你这断了线能连吗?呵呵,不好意思,可以连
wget -c -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

但是cuteftp能做下面的事情吗?比如,现在很多网站使用Apache建站,并不提供ftp服务,但是Apache有一个indexing功能,可以提供一个类似于ftp的界面,好多文件我想下啊,怎么办?由于是HTTP协议,CuteFTP无能为力了,倒是flash get等有什么get all这种功能,不知道他们对于目录处理怎么样。但是wget一点问题都没有,不信?我们拿CTAN为例(例子并不恰当,CTAN有FTP服务),我们下载这里面所有的宏包,呵呵
wget -r -k http://www.ctan.org/tex-archive/macros/latex/

-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么
wget -r -l2 -k http://www.ctan.org/tex-archive/macros/latex/
现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧
wget -r -R ".htm\?*" -k http://www.ctan.org/tex-archive/macros/latex/

这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A "*.gif"将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。

那么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在 bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum等等)
export http_proxy=http://10.20.30.40:8080
然后,proxy就默认打开了,如果需要暂时关闭,可以使用

wget --proxy=off -r -k http://www.ctan.org/tex-archive/macros/latex/
当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。

下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用
wget -nc -r -k http://www.ctan.org/tex-archive/macros/latex/

可以避免这件事情。为了不被有的连接指向非http://www.ctan.org/tex-archive/macros/latex/内层目录,我们还应该加上
wget -nc -np -r -k http://www.ctan.org/tex-archive/macros/latex/
避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用
wget -nc -np -H -r -k http://www.ctan.org/tex-archive/macros/latex/

使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由<a>这种东西作出来的,你就得使用--follow-tags和--ignore-tags了。

嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要
wget -i your.file

如果是,那也不繁
wget -F -i your.file

vax 发表于 2009 年 1 月 2 日 23:32:44

Vi指令大全----编辑文件
进入vi的命令
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi + filename: 打开文件,并将光标置于最后一行首
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename: 打开多个文件,依次进行编辑

移动光标类命令
h: 光标左移一个字符
l: 光标右移一个字符
space: 光标右移一个字符
Backspace: 光标左移一个字符
k或Ctrl+p: 光标上移一行
j或Ctrl+n: 光标下移一行
Enter: 光标下移一行
w或W : 光标右移一个字至字首
b或B : 光标左移一个字至字首
e或E : 光标右移一个字至字尾
): 光标移至句尾
(: 光标移至句首
}: 光标移至段落开头
{: 光标移至段落结尾
nG: 光标移至第n行首
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
H: 光标移至屏幕顶行
M: 光标移至屏幕中间行
L: 光标移至屏幕最后行
0: 光标移至当前行首
$: 光标移至当前行尾

屏幕翻滚类命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行

删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本

搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换

选项设置
all: 列出所有选项设置情况
term: 设置终端类型
ignorance: 在搜索中忽略大小写
list: 显示制表位(Ctrl+I)和行尾标志($)
number: 显示行号
report: 显示由面向行的命令修改过的数目
terse: 显示简短的警告信息
warn: 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic: 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan: 禁止vi在搜索到达文件两端时,又从另一端开始
mesg: 允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令
:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d: 将 n1行到n2行之间的内容删除
:w: 保存当前文件
:e filename: 打开文件filename进行编辑
:x: 保存当前文件并退出
:q: 退出vi
:q!: 不保存文件并退出vi
:!command: 执行shell命令command
:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之,
若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command: 将命令command的输出结果放到当前行

寄存器操作
"?nyy: 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw: 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl: 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

vax 发表于 2009 年 1 月 2 日 23:34:33

占楼编辑
页: [1]
查看完整版本: Shell常用命令整理(SSH管理主机说明)