分类: LINUX
2014-06-06 14:16:47
原文地址:vim的常用操作 作者:linshangsheng
VI常用命令
(1) 进入vi的命令
vifilename:打开或新建文件,并将光标置于第一行首
vi+nfilename :打开文件,并将光标置于第n行首
vi+filename :打开文件,并将光标置于最后一行首
vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处
vi-rfilename :在上次正用vi编辑时发生系统崩溃,恢复filename
vifilename....filename :打开多个文件,依次编辑
(2) 移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母
h、j、k、l,分别控制光标左、下、上、右移一格。
按Ctrl+B:屏幕往后移动一页。[常用]
按Ctrl+F:屏幕往前移动一页。[常用]
按Ctrl+U:屏幕往后移动半页。
按Ctrl+D:屏幕往前移动半页。
按0(数字零):移动文章的开头。[常用]
按G:移动到文章的最后。[常用]
按w:光标跳到下个word的开头。[常用]
按e:光标跳到下个word的字尾。
按b:光标回到上个word的开头。按$:移到光标所在行的行尾。[常用]
按^:移到该行第一个非空白的字符。按0:移到该行的开头位置。[常用]
按#:移到该行的第#个位置,例:51、121。[常用]
(3) 删除文字
x:每按一次删除光标所在位置的后面一个字符。[超常用]
#x:例如,6x表删除光标所在位置的后面6个字符。[常用]
X:大字的X,每按一次删除光标所在位置的前面一个字符。
#X:例如,20X表删除光标所在位置的前面20个字符。
dd:删除光标所在行。[超常用]
#dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]
(4) 复制
yw:将光标所在处到字尾的字符复制到缓冲区中。(想在和#x、#X的功能相反)
p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
yy:复制光标所在行。[超常用]p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
#yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
ayy:将复制行放入buffera,vi提供buffer功能,可将常用的数据存在buffer
ap:将放在buffera的数据粘贴。
b3yy:将三行数据存入bufferb。
b3p:将存在bufferb的资料粘贴
(5) 取代
r: 取代光标所在处的字符:[常用]
R:取代字符直到按Esc为止。
(6) 复原(undo)上一个指令
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
.:.可以重复执行上一次的指令。
(7) 更改
cw:更改光标所在处的字到字尾$处。
c#w:例如,c3w代表更改3个字。
(8) 跳至指定行
Ctrl+G:列出光标所在行的行号。#G:例如,15G,表示移动光标至文章的第15行行首。[常用]
命令行指令简介读者您要使用命令行指令之前,请记得先按Esc键确定您已经处于Command
mode下后,再按冒号
“:”或“/”或“?”三键的其中一键进入Lastlinemode。
1.列出行号
setnu:输入“setnu”后,会在文章的每一行前面列出行号。
2.跳到文章的某一行
#:井号代表一个数字,在Lastlinemode提示符号“:”前输入数字,再按
Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]
3.寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按
n会往下寻找到您要的关键字为止。?关键字:先按?,再输入您想寻找的字,如果第一次找的
关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。
4.取代字符串
1,$s/string/replae/g:在lastlinemode输入“1,$s/string/replace/g”会将全文的
string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是
表示全部取代不必确认。%s/string/replace/c:同样会将全文的string字符串取代为replace
字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次
确认是否取代。
1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。
5.存文件
w:在命令行提示符号“:”前按w即可将文件存起来。[超常用]
#,#wfilename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,
例如30,50wnice,将您正在编辑文章的第30~50行存成nice这个文件。
6.离开
q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件。
光标控制命令
命令 光标移动
h或^h 向左移一个字符
j或^j或^n 向下移一行
k或^p 向上移一行
l或空格 向右移一个字符
G 移到文件的最后一行
nG 移到文件的第n行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
0或| 移到当前行的第一列
n| 移到当前行的第n列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+或return 移到下一行的第一个字符
- 移到前一行的第一个非空字符
在vi中添加文本
命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
:rfile 读入文件file内容,并插在当前行后
:nrfile 读入文件file内容,并插在第n行后
escape 回到命令模式
^vchar 插入时忽略char的指定意义,这是为了插入特殊字符
在vi中删除文本
命令 删除操作
x 删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
X 删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
dw 删至下一个字的开头
ndw 从当前光标处往后删除n个字
dG 删除行,直到文件结束
dd 删除整行
ndd 从当前行开始往后删除
db 删除光标前面的字
ndb 从当前行开始往前删除n字
:n,md 从第m行开始往前删除n行
d或d$ 从光标处删除到行尾
dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾
^h或backspace 插入时,删除前面的字符
^w 插入时,删除前面的字
修改vi文本
每个命令前面的数字表示该命令重复的次数
命令 替换操作
rchar 用char替换当前字符
Rtextescape 用text替换当前字符直到换下Esc键
stextescape 用text代替当前字符
S或cctextescape 用text代替整行
cwtextescape 将当前字改为text
Ctextescape 将当前行余下的改为text
cGescape 修改至文件的末尾
ccursor_cmdtextescape 从当前位置处到光标命令位置处都改为text
在vi中查找与替换
命令 查找与替换操作
/text 在文件中向前查找text
?text 在文件中向后查找text
n 在同一方向重复查找
N 在相反方向重复查找
ftext 在当前行向前查找text
Ftext 在当前行向后查找text
ttext 在当前行向前查找text,并将光标定位在text的第一个字符
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
:setic 查找时忽略大小写
:setnoic 查找时对大小写敏感
:s/oldtext/newtext 用newtext替换oldtext
:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
& 重复最后的:s命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令
:v/text/command 在所有不包含text的行运行command所表示的命令
在vi中复制文本
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
在vi中撤消与重复
命令 撤消操作
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
, 以相反的方向重复前面的f、F、t或T查找命令
; 重复前面的f、F、t或T查找命令
"np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)
n 重复前面的/或?查找命令
N 以相反方向重复前面的/或?命令
保存文本和退出vi
命令 保存和/或退出操作
:w 保存文件但不退出vi
:wfile 将修改保存在file中但不退出vi
:wq或ZZ或:x 保存文件并退出vi
:q! 不保存文件,退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
vi中的选项
选项 作用
:setall 打印所有选项
:setnooption 关闭option选项
:setnu 每行前打印行号
:setshowmode 显示是输入模式还是替换模式
:setnoic 查找时忽略大小写
:setlist 显示制表符(^I)和行尾符号
:setts=8 为文本输入设置tabstops
:setwindow=n 设置文本窗口显示n行
vi的状态
选项 作用
:.= 打印当前行的行号
:= 打印文件中的行数
^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:l 使用字母"l"来显示许多的特殊字符,如制表符和换行符
在文本中定位段落和放置标记
选项 作用
{ 在第一列插入{来定义一个段落
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z
'(a-z) 将光标移动到指定的标记,如用'z 表示移动到z
在vi中连接行
选项 作用
J 将下一行连接到当前行的末尾
nJ 连接后面n行
光标放置与屏幕调整
选项 作用
H 将光标移动到屏幕的顶行
nH 将光标移动到屏幕顶行下的第n行
M 将光标移动到屏幕的中间
L 将光标移动到屏幕的底行
nL 将光标移动到屏幕底行上的第n行
^e(ctrl+e) 将屏幕上滚一行
^y 将屏幕下滚一行
^u 将屏幕上滚半页
^d 将屏幕下滚半页
^b 将屏幕上滚一页
^f 将屏幕下滚一页
^l 重绘屏幕
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行
vi中的shell转义命令
选项 作用
:!command 执行shell的command命令,如:!ls
:!! 执行前一个shell命令
:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容
:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,
如:w!grepall
:cddirectory 将当前工作目录更改为directory所表示的目录
:sh 将启动一个子shell,使用^d(ctrl+d)返回vi
:sofile 在shell程序file中读入和执行命令
vi中的宏与缩写
(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)
选项 作用
:mapkeycommand_seq 定义一个键来运行command_seq,如:mapeea,无论什么时候都可以
e移到一个字的末尾来追加文本
:map 在状态行显示所有已定义的宏
:umapkey 删除该键的宏
:abstring1string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入
文本时,键入string1然后按Esc键,系统就插入了string2
:ab 显示所有缩写
:unastring 取消string的缩写
在vi中缩进文本
选项 作用
^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:setai 打开自动缩进
:setsw=n 将移动宽度设置为n个字符
n<< 使n行都向左移动一个宽度
n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个
移动宽度
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑
器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,
vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中
最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
1、vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和
底行模式(lastlinemode),各模式的功能区分如下:
1)命令行模式commandmode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insertmode下,或者到last
linemode。
2)插入模式(Insertmode)
只有在Insertmode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3)底行模式(lastlinemode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(lastlinemode)也算入命令行
模式commandmode)。
2、vi的基本操作
a) 进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
$vimyfile
不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(commandmode)」,您要
切换到「插入模式(Insertmode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移
动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插
入模式(Insertmode)」再说吧!
b)切换至插入模式(Insertmode)编辑文件
在「命令行模式(commandmode)」下按一下字母「i」就可以进入「插入模式(Insertmode)」,
这时候你就可以开始输入文字了。
c)Insert 的切换
您目前处于「插入模式(Insertmode)」,您就只能一直输入文字,如果您发现输错了字!想用
光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(commandmode)」
再删除文字。
d)退出vi及保存文件
在「命令行模式(commandmode)」下,按一下「:」冒号键进入「Lastlinemode」,例如:
:wfilename (输入「wfilename」将文章以指定的文件名filename保存)
:wq(输入「wq」,存盘并退出vi)
:q!(输入q!,不存盘强制退出vi)
3、命令行模式(commandmode)功能键
1). 插入模式
按「i」切换进入插入模式「insertmode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2). 从插入模式切换为命令行模式
按「ESC」键。
3). 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、
「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往“后”移动一页。
按「ctrl」+「f」:屏幕往“前”移动一页。
按「ctrl」+「u」:屏幕往“后”移动半页。
按「ctrl」+「d」:屏幕往“前”移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l。
4). 删除文字
「x」:每按一次,删除光标所在位置的“后面”一个字符。
「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行
5). 复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配
合才能完成复制与粘贴功能。
6). 替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
7). 回复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次
回复。
8). 更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
9). 跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4、Lastlinemode下命令简介
在使用「lastlinemode」之前,请记住先按「ESC」键确定您已经处于「commandmode」下后,
再按「:」冒号即可进入「lastlinemode」。
A)列出行号
「setnu」:输入「setnu」后,会在文件中的每一行前面列出行号。
B)跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数
字15,再回车,就会跳到文章的第15行。
C)查找字符
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可
以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可
以一直按「n」会往前寻找到您要的关键字为止。
D)保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。
E)离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些键的功能:
h
左移光标一个字符
l
右移光标一个字符
k
光标上移一行
j
光标下移一行
^
光标移动至行首
0
数字“0”,光标移至文章的开头
G
光标移至文章的最后
$
光标移动至行尾
Ctrl+f
向前翻屏
Ctrl+b
向后翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向后翻半屏
i
在光标位置前插入字符
a
在光标所在位置的后一个字符开始增加
o
插入新的一行,从行首开始输入
ESC
从输入状态退至命令状态
x
删除光标后面的字符
#x
删除光标后的#个字符
X
(大写X),删除光标前面的字符
#X
删除光标前面的#个字符
dd
删除光标所在的行
#dd
删除从光标所在行数的#行
yw
复制光标所在位置的一个字
#yw
复制光标所在位置的#个字
yy
复制光标所在位置的一行
#yy
复制从光标所在行数的#行
p
粘贴
u
取消操作
cw
更改光标所在位置的一个字
#cw
更改光标所在位置的#个字
2、下表列出行命令模式下的一些指令
wfilename
储存正在编辑的文件为filename
wqfilename
储存正在编辑的文件为filename,并退出vi
q!
放弃所有修改,退出vi
setnu
显示行号
/或?
查找,在/后输入要查找的内容
n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?
联用)继续查找,直到找到为止。
对于第一次用vi,有几点注意要提醒一下:
1、用vi打开文件后,是处于「命令行模式(commandmode)」,您要切换到「插入模式(Insert
mode)」才能够输入文字。切换方法:在「命令行模式(commandmode)」下按一下字母「i」
就可以进入「插入模式(Insertmode)」,这时候你就可以开始输入文字了。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)
linuxvi命令简介
linuxvi命令是“Visualinterface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。
它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要
对其进行定制,这是其他编辑程序所没有的。
linuxvi命令不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性
进行编排,它只是一个文本编辑程序。
linuxvi命令没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式:命令行模式、文本输
入模式和末行模式。
命令行模式
任何时候,不管用户处于何种模式,只要按一下键,即可使linuxvi命令行模式;我们在shell
环境(提示符为$)下输入启动linuxvi命令,进入编辑器时,也是处于该模式下。
在该模式下,用户可以输入各种合法的linuxvi命令,用于管理自己的文档。此时从键盘上输入
的任何字符都被当做编辑命令来解释,若输入的字符是合法的linuxvi命令,则linuxvi命令在
接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若
输入的字符不是Vi的合法命令,Vi会响铃报警。
文本输入模式
在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令
s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,
并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键即可。
末行模式
末行模式也称ex转义模式。
linuxvi命令和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单
个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。linuxvi命令有一个专
门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模
式下,此时linuxvi命令会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作
为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编
辑缓冲区的内容写到文件中等)。末行命令执行完后,linuxvi命令自动回到命令模式。例如:
:1,$s/A/a/g
则从文件第一行至文件尾将大写A全部替换成小写a。
若在末行模式下输入命令过程中改变了主意,可按键,或用退格键将输入的命令全部删除之后,
再按一下退格键,即可使linuxvi命令回到命令模式下。
如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式返回,则按
Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。
linuxvi命令的进入与退出
linuxvi命令的进入
用户登录到系统中之后,系统给出提示符“$”。在提示符后键入Vi和想要编辑(或建立)的文
件名,便可进入Vi。
[例1]键入命令:
$viexample.c
屏幕显示如下:
~
~
~
~
~
~
~
“example.c” [NewFile]
如果只键入Vi,而不带文件名,也可以进入Vi。之后在光标处键入文件内容,退出Vi时,只
需在退出命令后输入文件名即可。
进入Vi之后,首先进入的就是命令模式,也就是说等待命令输入而不是文本输入。这时输入的
字母都将作为命令来解释。光标停在屏幕第一行首位上(用表示),其余各行行首均有一个“~”
符号,表示该行为空行。最后一行也称状态行,显示出当前正在编辑的文件名以及其状态。如
本例是[NewFile],表示example.c是一个新建的文件。如果example.c文件已在系统中存在,
那么输入上述命令后,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态
行显示出该文件的文件名、行数和字符数。
[例2]键入命令:
$viexample.c
然后键入:
#include
main()
{intk;
for (k=0;k<3;k++)add();
}
add()
{staticintx=0;
x++;
printf(“x=%d\n”,x);
}
~
~
“example.c” [NewFile]
注意,在这里我们为了节省篇幅起见,屏幕只显示15行。事实上,初始的显示行数与用户所用
终端有关,一般的CRT终端可显示25行。在窗口系统中,显示行数与运行linuxvi命令的那个
窗口有关。然而我们可以对显示行数进行设置。例如,在能显示25行的CRT终端上,让Vi只
显示15行。设置的方法将在本节后面介绍。
当用linuxvi命令建立一个新文件时,在进入linuxvi命令中也可以不给出文件名,当编辑完文
件需要保存数据时,再由用户指定文件名。
进入linuxvi命令时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。
如果希望在进入linuxvi命令之后,光标处于文件中特定的某行上,可在linuxvi命令后加上任
选项+n,其中n为指定的行数。
[例3]键入命令:
$vi+5example1.c
后,屏幕显示如下:
#include
main()
{intk;
for (k=0;k<3;k++)add();
}
add()
{staticintx=0;
x++;
printf(“x=%d\n”,x);
}
~
~
~
“example.c”12lines,125characters
光标将位于文件example1.c中的第5行上。
如果希望在进入linuxvi命令之后光标处于文件最末行,则只需把命令中附加项“+”后面的数字
n省略掉即可。
在进入linuxvi命令时,除了可以指定一个光标起始行号之外,还可以在命令中指定一个模式串,
此时在进入linuxvi命令后,光标就处于文件中第一个与指定模式串相匹配的那行上。
[例4]键入命令:
$vi+/intexample1.c
屏幕显示如下:
#include
main()
{intk;
for (k=0;k<3;k++)add();
}
add()
{staticintx=0;
x++;
printf(“x=%d\n”,x);
}
~
~
~
“example.c”12lines,125characters
光标将位于文件example1.c中的第3行上。
使用linuxvi命令可以同时编辑多个文件,只要在进入linuxvi命令的命令中写入所要操作的文
件即可,还可以使用通配符。
[例5]键入命令:
$vi*.cat
就可以编辑所有后缀为cat的文件了。当然,您还可以使用shell中内置的模式匹配来装载文件,
这样会更富技巧性。一旦您在命令行中包含了所有的待编辑文件名,就可以在linuxvi命令中方
便地移来移去。
退出Vi
当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。
在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,
返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。
在末行模式下,输入命令:w
linuxvi命令保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,
可以再给编辑文件起一个新的文件名。
[例6]
:wnewfile
此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个
已存在的文件,则Vi在显示窗口的状态行给出提示信息:
Fileexists (use!tooverride)
此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令
:w!newfile
否则可选择另外的文件名来保存当前文件。
在末行模式下,输入命令:q
系统退出linuxvi命令返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显
示窗口的最末行显示如下信息:
Nowritesincelastchange (use!tooverrides)
提示用户该文件被修改后没有保存,然后linuxvi命令并不退出,继续等待用户命令。若用户就
是不想保存被修改后的文件而要强行退出linuxvi命令时,可使用命令:q!
linuxvi命令放弃所作修改而直接退到shell下。
在末行模式下,输入命令:wq
linuxvi命令将先保存文件,然后退出linuxvi命令返回到shell。
在末行模式下,输入命令:x
该命令的功能同命令模式下的ZZ命令功能相同。
linuxvi命令中的行号
linuxvi命令中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常
不方便的。为此linuxvi命令提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应
行的内容则显示在行号之后。
使用的命令为:在末行方式下输入命令:
:setnumber
需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。
linuxvi命令一览表2009年08月31日星期一22:52进入vi的命令
vifilename:打开或新建文件,并将光标置于第一行首
vi+nfilename :打开文件,并将光标置于第n行首
vi+filename :打开文件,并将光标置于最后一行首
vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处
vi-rfilename :在上次正用vi编辑时发生系统崩溃,恢复filename
vifilename....filename :打开多个文件,依次进行编辑
移动光标类命令[/b]
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:在转到别的文件时若没保存当前文件则显示NOwrite信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2con3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2mn3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2d:将n1行到n2行之间的内容删除
:w:保存当前文件
:efilename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不
指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行
寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一
个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf
手册下载
1.更改档案拥有者
命令:chown[-cfhvR][--help][--version]user[:group]file...
功能: 更改文件或者文件夹的拥有者
参数格式:
user: 新的档案拥有者的使用者IDgroup: 新的档案拥有者的使用者群体(group)
-c: 若该档案拥有者确实已经更改,才显示其更改动作
-f: 若该档案拥有者无法被更改也不要显示错误讯息
-h: 只对于连结(link)进行变更,而非该link 真正指向的档案
-v: 显示拥有者变更的详细资料
-R: 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐
个变更)
例如:chown-Roracle:oinstall/oracle/u01/app/oracle
更改目录拥有者为oracle
2.修改权限
命令:chmod(changemode)
功能:改变文件的读写和执行权限。有符号法和八进制数字法。
选项:(1)符号法:
命令格式:chmod{u|g|o|a}{+|-|=}{r|w|x}filename
u(user) 表示用户本人。
g(group) 表示同组用户。
o(oher) 表示其他用户。
a(all) 表示所有用户。
+ 用于给予指定用户的许可权限。
- 用于取消指定用户的许可权限。
= 将所许可的权限赋给文件。
r(read) 读许可,表示可以拷贝该文件或目录的内容。
w(write) 写许可,表示可以修改该文件或目录的内容。
x(execute)执行许可,表示可以执行该文件或进入目录。
(2)八进制数字法:
命令格式:chmodabcfile
其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。
4(100) 表示可读。
2(010) 表示可写。
1(001) 表示可执行。
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
例如:#chmoda+rxfilename
让所有用户可以读和执行文件filename。
#chmodgo-rxfilename
取消同组和其他用户的读和执行文件filename的权限。
#chmod741filename
让本人可读写执行、同组用户可读、其他用户可执行文件filename。
#chmod-R755/home/oracle
递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行
3.修改文件日期
命令:touch
格式:touchfilenae
功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。
例如:%touchfile
4.链接文件
命令:ln(link)
格式:ln[option]filenamelinkname
ln[option]directorypathname
功能:为文件或目录建立一个链。其中,filename和directory是源文件名和
源目录名;linkname和pathname分别表示与源文件或源目录名相链接的
文件或目录。
选项:-s 为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接
注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出
现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。
例如:%ln-sfilenamelinkname
5.显示日期
命令:date
例如:%date
6.显示日历
命令:cal(calendar)
格式:cal[month]year
功能:显示某年内指定的日历
例如:%cal1998
7.显示文件头部
命令:head
格式:head[option]filename
功能:显示文件的头部
选项:缺省显示文件的头10行。
-i 显示文件的开始i行。
例如:%headfilename
8.显示文件尾部
命令:tail
格式:tail[option]filename
功能:显示文件的尾部
选项:缺省显示文件的末10行。
-i 显示文件最后i行。
+i 从文件的第i行开始显示。
例如:%tailfilename
9.显示用户标识
命令:id
格式:id[option][user]
功能:显示用户标识及用户所属的所有组。
选项:-a 显示用户名、用户标识及用户所属的所有组
注释:
例如:%idusername
10.查看当前登录的用户
命令:users
11.显示都谁登录到机器上
命令:who
格式:who
功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。
例如:%who
12.显示当前终端上的用户名
命令:whoami
格式:whoami
功能:显示出当前终端上使用的用户。
例如:%whoami
13.寻找文件
命令:find
格式:findpathname[option]expression
功能:在所给的路经名下寻找符合表达式相匹配的文件。
选项:-name 表示文件名
-user 用户名,选取该用户所属的文件
-size 按大小查找,以block为单位,一个block是512B
-mtimen 按最后一次修改时间查找,选取n天内被修改的文件
-perm 按权限查找
-type 按文件类型查找
-atime 按最后一次访问时间查找
例如:%find./-name'*abc*' -print
14.搜索文件中匹配符
命令:grep
格式:grep[option]patternfilenames
功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。
选项:-i 匹配时忽略大小写
-v 找出模式失配的行
例如:%grep-i'java*' ./test/run.sh
15.统计文件字数
命令:wc[option]filename
功能:统计文件中的文件行数、字数和字符数。
选项:-l 统计文件的行数
-w 统计文件的单词数
-c 统计文件的字符数
注释:若缺省文件名则指标准输入
例如:%wc-c./test/run.sh
16.显示磁盘空间
命令:df(diskfree)
格式:df[option]
功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总
字节数、已用字节数、剩余字节数占用百分比。
选项:
-a:显示全部的档案系统和各分割区的磁盘使用情形
-i:显示i-nodes的使用量
-k:大小用k来表示(默认值)
-t:显示某一个档案系统的所有分割区磁盘使用量
-x:显示不是某一个档案系统的所有分割区磁盘使用量
-T:显示每个分割区所属的档案系统名称
-h: 表示使用「Human-readable」的输出,也就是在档案系统大小使用GB、MB等易读的格式。
注释:
例如:%df-hi
17.查询档案或目录的磁盘使用空间
命令:du(diskusage)
格式:du[option][filename]
功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小
选项:
-a:显示全部目录和其次目录下的每个档案所占的磁盘空间
-b:大小用bytes来表示(默认值为kbytes)
-c:最后再加上总计(默认值)
-s:只显示各档案大小的总合
-x:只计算同属同一个档案系统的档案
-L:计算所有的档案大小
-h: 表示档案系统大小使用GB、MB等易读的格式。
例如:%du-a
%du-sh/etc 只显示该目录的总合
%du/etc| sort-nr| more统计结果用sort 指令进行排序,
sort 的参数-nr 表示要以数字排序法进行反向排序。
18.显示进程
命令:ps
格式:ps[option]
功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。
选项:
-a 显示所有进程信息
-Uuidlist列出这个用户的所有进程
-e 显示当前运行的每一个进程信息
-f 显示一个完整的列表
-x 显示包括没有终端控制的进程状况。
注释:
例如:%ps-ef
%ps-aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行
操作。
19.终止进程
命令:kill
格式:kill[option]pid
功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process,
因为大部份送的都是用来杀掉process的SIGKILL或SIGHUP,因此称为kill
选项:-9 强行终止进程
注释:pid标示进程号,可由ps命令得到。
例如:%kill-9pid
你也可以用kill-l 来察看可代替signal 号码的数目字。kill的详细情形请参阅mankill。
20.查看自己的IP地址
命令:ifconfig
格式:ifconfig-a
21.查看路由表
命令:netstat
格式:netstat-rn
22.远程登录
命令:telnet
格式:telnethostname
23.文件传输
命令:ftp(filetransferprogram)
格式:ftphostname
功能:网络文件传输及远程操作。
选项:ftp命令:
cd[dirname] 进入远程机的目录
lcd[dirname] 设置本地机的目录
dir/ls 显示远程的目录文件
bin 以二进制方式进行传输
asc 以文本文件方式进行传输
get/mget 从远程机取一个或多个文件
put/mput 向远程机送一个或多个文件
prompt 打开或关闭多个文件传送时的交互提示
close 关闭与远程机的连接
quit 退出ftp
!/exitftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态
注释:
例如:%ftphostname
24.查看自己的电子邮件
命令:mailx
格式:mailx
选项:
delete 删除
next 下一个
quit 退出
reply 回复
25.回忆命令
命令:history
格式:history
功能:帮助用户回忆执行过的命令。
选项:
注释:
例如:%history
26.网上对话
命令:talk
格式:talkusername
功能:在网上与另一用户进行对话。
选项:
注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部
显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。
例如:%talkusername
27.允许或拒绝接受信息
命令:mesg(message)
格式:mesg[n/y]
功能:允许或拒绝其它用户向自己所用的终端发送信息。
选项:n拒绝其它用户向自己所用的终端写信息
y允许其它用户向自己所用的终端写信息(缺省值)
注释:
例如:%mesgn
28.给其他用户写信息
命令:write
格式:writeusername[ttyname]
功能:给其他用户的终端写信息。
选项:
注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。
例如:writeusername
29.创建、修改、删除用户和群组
a. 创建群组:
例如:groupaddoinstall 创建群组名为oinstall的组
groupadd-g344dba
创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
b.修改群组:
groupmod:该命令用于改变用户组帐号的属性
groupmod–g新的GID用户组帐号名
groupmod–n新组名原组名:此命令由于改变用户组的名称
c. 删除群组:
groupdel组名:该命令用于删除指定的组帐号
d.新建用户:
命令:useradd[-dhome][-sshell][-ccomment][-m[-ktemplate]]
[-finactive][-eexpire][-ppasswd][-r]name
主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
举例:#useradd-goinstall-Gdbaoracle 创建Oracle用户
e. 删除用户
命令:userdel用户名
删除指定的用户帐号
userdel–r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录
例:#useradd-grootkkk//把kkk用户加入root组里
f. 修改用户
命令:usermod
修改已有用户的信息
usermod–l 旧用户名新用户名:修改用户名
usermod–L用户名:用于锁定指定用户账号,使其不能登陆系统
usermod–U用户名:对锁定的用户帐号进行解锁
passwd–d用户名:使帐号无口令,即用户不需要口令就能登录系统
例:#usermod-luser2user1//把用户user2改名为user1
30.启动、关闭防火墙
永久打开或则关闭
chkconfigiptableson
chkconfigiptablesoff
即时生效:重启后还原
serviceiptablesstart
serviceiptablesstop
或者:
/etc/init.d/iptablesstart
/etc/init.d/iptablesstop
31.启动VSFTP服务
即时启动:/etc/init.d/vsftpdstart
即时停止:/etc/init.d/vsftpdstop
开机默认VSFTP服务自动启动:
方法一:(常用\方便)
[root@localhostetc]#chkconfig--list|grepvsftpd( 查看情况)
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhostetc]#chkconfigvsftpdon (执行ON设置)
或者:方法二:
修改文件/etc/rc.local, 把行/usr/local/sbin/vsftpd&插入文件中,以实现开机自动启动。
32.vi技巧
a. 进入输入模式
新增(append)
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A:从光标所在列最後面的地方开始新增资料。
插入(insert)
i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。
开始(open)
o:在光标所在列下新增一列并进入输入模式。
O:在光标所在列上方新增一列并进入输入模式。
b.退出vi
在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直
接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命
令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要
用:q!命令,这个命令将不保存文件而直接退出vi。
c. 删除与修改文件的命令:
x:删除光标所在字符。
dd:删除光标所在的列。
r :修改光标所在字元,r 後接著要修正的字符。
R:进入取替换状态,新增文字会覆盖原先文字,直到按[ESC] 回到指令模式下为止。
s:删除光标所在字元,并进入输入模式。
S:删除光标所在的列,并进入输入模式。
d.屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b:向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
e. 删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本
f. 搜索及替换命令
/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替换
g.复制,黏贴
(1) 选定文本块,使用v进入可视模式;移动光标键选定内容
(2) 复制选定块到缓冲区,用y;复制整行,用yy
(3) 剪切选定块到缓冲区,用d;剪切整行用dd
(4) 粘贴缓冲区中的内容,用p
h.其他
在同一编辑窗打开第二个文件,用:sp[filename]
在多个编辑文件之间切换,用Ctrl+w
Linux下文件的压缩与解压缩命令详解2009-11-0217:42在Windows下最常见的压缩文件就只有
两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众
多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip
和.rar的人就太少了。本文就来对这些常见的压缩文件进行一
番小结,希望你下次遇到这些文件时不至于被搞晕icon_smile.gif
在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指
将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压
缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压
缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助
另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包
,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进
行压缩了,所以首先就来讲讲tar命令的基本用法:
tar命令的选项有很多(用mantar可以查看到),但常用的就那么几个选项,下面
来举例说明一下:
#tar-cfall.tar*.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包
,-f指定包的文件名。
#tar-rfall.tar*.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的
意思。
#tar-ufall.tarlogo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
#tar-tfall.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
#tar-xfall.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压
文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压
缩程序,比如调用gzip、bzip2等。
1)tar调用gzip
gzip是GNU组织(GNU是一个自由软件工程项目)开发的一个压缩程序,.gz结尾的文件就
是gzip压缩的结果。与gzip
相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下
:
#tar-czfall.tar.gz*.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个
gzip压缩过的包,包名为all.tar.gz
#tar-xzfall.tar.gz
这条命令是将上面产生的包解开。
2)tar调用bzip2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。
与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例
说明一下:
#tar-cjfall.tar.bz2*.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个
bzip2压缩过的包,包名为all.tar.bz2
#tar-xjfall.tar.bz2
这条命令是将上面产生的包解开。
3)tar调用compress
compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人
多。.Z结尾的文件就是bzip2压缩的结果。与compress相对的解压程序是uncompress
。tar中使用-Z这个参数来调用compress。下面来举例说明一下:
#tar-cZfall.tar.Z*.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成
一个uncompress压缩过的包,包名为all.tar.Z
#tar-xZfall.tar.Z
这条命令是将上面产生的包解开
有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文
件作一个小结:
1)对于.tar结尾的文件
tar-xfall.tar
2)对于.gz结尾的文件
gzip-dall.gz
gunzipall.gz
3)对于.tgz或.tar.gz结尾的文件
tar-xzfall.tar.gz
tar-xzfall.tgz
4)对于.bz2结尾的文件
bzip2-dall.bz2
bunzip2all.bz2
5)对于tar.bz2结尾的文件
tar-xjfall.tar.bz2
6)对于.Z结尾的文件
uncompressall.Z
7)对于.tar.Z结尾的文件
tar-xZfall.tar.z
另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它
们:
1)对于.zip
linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参
数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
#zipall.zip*.jpg
这条命令是将所有.jpg的文件压缩成一个zip包
#unzipall.zip
这条命令是将all.zip中的所有文件解压出来
2)对于.rar
要在linux下处理.rar文件,需要安装RARforLinux,可以从网上下载,但要记
住,RARforLinux
不是免费的;可从[url]http://www.rarsoft.com/download.htm[/url]下载RARforLinux3.2.
0,然后安装:
#tar-xzpvfrarlinux-3.2.0.tar.gz
#cdrar
#make
这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar
是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
#raraall*.jpg
这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar
扩展名将自动附加到包名后。
#unrareall.rar
这条命令是将all.rar中的所有文件解压出来