??xml version="1.0" encoding="utf-8" standalone="yes"?>
http://www.cnblogs.com/hexapodsoft/archive/2007/04/24/724902.html
]]>
该命令的功能是将l出的文件或目录拯到另一文g或目录中Q同MSDOS下的copy命o一P功能十分强大?
语法Q?cp [选项] 源文件或目录 目标文g或目?
说明Q该命o把指定的源文件复制到目标文g或把多个源文件复制到目标目录中?/p>
该命令的各选项含义如下Q?/p>
- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,q归地拷贝目录,其作用等于dpR选项的组合?/p>
- d 拯时保留链接?/p>
- f 删除已经存在的目标文件而不提示?/p>
- i 和f选项相反Q在覆盖目标文g之前给出提C求用L认。回{y时目标文件将被覆盖,是交互式拯?
- p 此时cp除复制源文g的内容外Q还把其修Ҏ(gu)间和讉K权限也复制到新文件中?
- r 若给出的源文件是一目录文gQ此时cp递归复制该目录下所有的子目录和文g。此时目标文件必Mؓ一个目录名?/p>
- l 不作拯Q只是链接文件?
需要说明的是,为防止用户在不经意的情况下用cp命o破坏另一个文Ӟ如用h定的目标文g名已存在Q用cp命o拯文g后,q个文g׃被新源文件覆盖,因此Q徏议用户在使用cp命o拯文gӞ最好用i选项?/p>
mv命o
用户可以使用mv命o来ؓ文g或目录改名或文件由一个目录移入另一个目录中。该命o如同MSDOS下的ren和move的组合?/p>
语法Qmv [选项] 源文件或目录 目标文g或目?
说明Q视mv命o中第二个参数cd的不同(是目标文件还是目标目录)Qmv命o文仉命名或将其移至一个新的目录中。当W二个参数类型是文gӞmv命o完成文g重命名,此时Q源文g只能有一个(也可以是源目录名Q,它将所l的源文件或目录重命名ؓl定的目标文件名。当W二个参数是已存在的目录名称Ӟ源文件或目录参数可以有多个,mv命o各参数指定的源文g均移至目标目录中。在跨文件系l移动文件时Qmv先拷贝,再将原有文g删除Q而链臌文g的链接也丢失?/p>
命o中各选项的含义ؓQ?/p>
- I 交互方式操作。如果mv操作导致对已存在的目标文g的覆盖,此时pȝ询问是否重写Q要求用户回{y或nQ这样可以避免误覆盖文g?/p>
- f 止交互操作。在mv操作要覆盖某已有的目标文件时不给M指示Q指定此选项后,i选项不再v作用?/p>
如果所l目标文Ӟ不是目录Q已存在Q此时该文g的内容将被新文g覆盖。ؓ防止用户用mv命o破坏另一个文Ӟ使用mv命oUd文gӞ最好用i选项?
rm命o
用户可以用rm命o删除不需要的文g。该命o的功能ؓ删除一个目录中的一个或多个文g或目录,它也可以某个目录及其下的所有文件及子目录均删除。对于链接文Ӟ只是断开了链接,原文件保持不变?/p>
rm命o的一般Ş式ؓQ?/p>
rm [选项] 文g…
如果没有使用- r选项Q则rm不会删除目录?
该命令的各选项含义如下Q?/p>
- f 忽略不存在的文gQ从不给出提C?
- r 指示rm参C列出的全部目录和子目录均递归地删除?/p>
- i q行交互式删除?
使用rm命o要小心。因Z旦文件被删除Q它是不能被恢复的。了防止q种情况的发生,可以使用i选项来逐个认要删除的文g。如果用戯入yQ文件将被删除。如果输入Q何其他东西,文g则不会删除?/p>
◎语? grep [options] PATTERN [FILE...]
grep (globalsearch regular expression(RE) and print out theline,全面搜烦正则表达式ƈ把行打印出来)是一U强大的文本搜烦工具Q它能用正则表辑ּ搜烦文本Qƈ把匹配的行打印出来。Unix的grep家族包括grep?egrep和fgrep。egrep和fgrep的命令只跟grep有很不同。egrep是grep的扩展,支持更多的re元字W,fgrep是 fixed grep或fastgrepQ它们把所有的字母都看作单词,也就是说Q正则表辑ּ中的元字W表C回其自w的字面意义Q不再特D。linux使用GNU版本的grep。它功能更强Q可以通过-G?E?F命o行选项来用egrep和fgrep的功能?br />
grep的工作方式是q样的,它在一个或多个文g中搜索字W串模板。如果模板包括空|则必被引用Q模板后的所有字W串被看作文件名。搜索的l果被送到屏幕Q不影响原文件内宏V?br />
grep可用?a class="infotextkey" target="_blank">shell脚本Q因为grep通过q回一个状态值来说明搜烦的状态,如果模板搜烦成功Q则q回0Q如果搜索不成功Q则q回1Q如果搜索的文g不存在,则返?。我们利用这些返回值就可进行一些自动化的文本处理工作?br />
2. grep正则表达式元字符?基本?
^
锚定行的开?如:'^grep'匚w所有以grep开头的行?br />
$
锚定行的l束 如:'grep$'匚w所有以grepl尾的行?br />
匚w一个非换行W的字符 如:'gr.p'匚wgr后接一个Q意字W,然后是p?br />
*
匚w零个或多个先前字W?如:'*grep'匚w所有一个或多个I格后紧跟grep的行?.*一L代表L字符?br />
[]
匚w一个指定范围内的字W,?[Gg]rep'匚wGrep和grep?br />
[^]
匚w一个不在指定范围内的字W,如:'[^A-FH-Z]rep'匚w不包含A-R和T-Z的一个字母开_紧跟rep的行?br />
(..)
标记匚w字符Q如'(love)'Qlove被标Cؓ1?br />
<
锚定单词的开始,?'\>
锚定单词的结束,?grep>'匚w包含以grepl尾的单词的行?br />
x{m}
重复字符xQmơ,如:'0{5}'匚w包含5个o的行?br />
x{m,}
重复字符x,臛_mơ,如:'o{5,}'匚w臛_?个o的行?br />
x{m,n}
重复字符xQ至mơ,不多于nơ,如:'o{5,10}'匚w5--10个o的行?br />
w
匚w文字和数字字W,也就是[A-Za-z0-9]Q如Q?Gw*p'匚w以G后跟零个或多个文字或数字字符Q然后是p?br />
W
w的反|Ş式,匚w一个或多个非单词字W,如点号句L?br />
b
单词锁定W,? 'bgrepb'只匹配grep?br />
3. 用于egrep?grep -E的元字符扩展?br />
+
匚w一个或多个先前的字W。如Q?[a-z]+able'Q匹配一个或多个写字母后跟able的串Q如loveable,enable,disable{?br />
?
匚w零个或多个先前的字符。如Q?gr?p'匚wgr后跟一个或没有字符Q然后是p的行?br />
a|b|c
匚wa或b或c。如Qgrep|sed匚wgrep或sed
()
分组W号Q如Qlove(able|rs)ov+匚wloveable或loversQ匹配一个或多个ov?br />
x{m},x{m,},x{m,n}
作用同x{m},x{m,},x{m,n}
4. POSIX字符c?br />
Z在不同国家的字符~码中保持一臻IPOSIX(The Portable Operating SystemInterface)增加了特D的字符c,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成ؓ正则表达式,如[A-Za-z0-9]或[[: alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字W类?br />
[:alnum:]
文字数字字符
[:alpha:]
文字字符
[:digit:]
数字字符
[:graph:]
非空字符(非空根{控制字W?
[:lower:]
写字符
[:cntrl:]
控制字符
[:print:]
非空字符(包括I格)
[:punct:]
标点W号
[:space:]
所有空白字W?新行Q空|制表W?
[:upper:]
大写字符
[:xdigit:]
十六q制数字(0-9Qa-fQA-F)
5. Grep命o选项
-?
同时昄匚w行上下的Q行Q如Qgrep -2 pattern filename同时昄匚w行的上下2行?br />
-bQ?-byte-offset
打印匚w行前面打印该行所在的块号码?br />
-c,--count
只打印匹配的行数Q不昄匚w的内宏V?br />
-f FileQ?-file=File
从文件中提取模板。空文g中包?个模板,所以什么都不匹配?br />
-hQ?-no-filename
当搜索多个文件时Q不昄匚w文g名前~?br />
-iQ?-ignore-case
忽略大小写差别?br />
-qQ?-quiet
取消昄Q只q回退出状态?则表C找C匚w的行?br />
-lQ?-files-with-matches
打印匚w模板的文件清单?br />
-LQ?-files-without-match
打印不匹配模板的文g清单?br />
-nQ?-line-number
在匹配的行前面打印行受?br />
-sQ?-silent
不显C关于不存在或者无法读取文件的错误信息?br />
-vQ?-revert-match
反检索,只显CZ匚w的行?br />
-wQ?-word-regexp
如果?lt;?gt;引用Q就把表辑ּ做ؓ一个单词搜索?br />
-VQ?-version
昄软g版本信息?br />
6. 实例
要用好grepq个工具Q其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子Q讲解一个正则表辑ּ的写法?br />
$ ls -l | grep '^a'
通过道qols -l输出的内容,只显CZa开头的行?br />
$ grep 'test' d*
昄所有以d开头的文g中包含test的行?br />
$ grep 'test' aa bb cc
昄在aaQbbQcc文g中匹配test的行?br />
$ grep '[a-z]{5}' aa
昄所有包含每个字W串臛_?个连l小写字W的字符串的行?br />
$ grep 'w(es)t.*1' aa
如果west被匹配,则esp存储到内存中Qƈ标记?Q然后搜索Q意个字符(.*)Q这些字W后面紧跟着另外一个es(1)Q找到就昄该行。如果用egrep或grep -EQ就不用""可行{义,直接写成'w(es)t.*1'可以了?
默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出Q?br />
grep: sound: Is a directory
q可能会?#8216;grep’的输出难于阅诅R这里有两种解决的办法:
明确要求搜烦子目录:grep -r
或忽略子目录Qgrep -d skip
当然Q如果预料到有许多输出,(zhn)可以通过 道 其转到‘less’上阅读:
$ grep magic /usr/src/linux/Documentation/* | less
q样Q?zhn)可以更方便地阅诅R?
有一点要注意Q?zhn)必需提供一个文件过滤方式(搜烦全部文g的话?*Q。如果?zhn)忘了Q?#8216;grep’会一直等着Q直到该E序被中断。如果?zhn)遇到了这L情况Q按 <CTRL c> Q然后再试?nbsp;
配合道Q|Q进行搜索:
grep -C number pattern files Q匹配的上下文分别显C[number]行,
grep pattern1 | pattern2 files Q显C匹?pattern1 ?pattern2 的行Q?
grep pattern1 files | grep pattern2 Q显C既匚w pattern1 又匹?pattern2 的行?
用于搜烦的特D符P
\< ?\> 分别标注单词的开始与l尾?
例如Q?
grep man * 会匹?‘Batman’?#8216;manic’?#8216;man’{,
grep '\<man' * 匚w‘manic’?#8216;man’Q但不是‘Batman’Q?
grep '\<man\>' 只匹?#8216;man’Q而不?#8216;Batman’?#8216;manic’{其他的字符丌Ӏ?
'^'Q指匚w的字W串在行首,
'$'Q指匚w的字W串在行,
===========================================================================================
如果(zhn)不习惯命o行参敎ͼ可以试试囑Ş界面?#8216;grep’Q如 reXgrep 。这个Y件提?AND、OR、NOT {语法,q有漂亮的按?:-) 。如果?zhn)只是需要更清楚的输出,不妨试试 fungrep
egrep
egrep代表expression或extended grepQ适情况而定。egrep接受所有的正则表达式,egrep的一个显著特性是可以以一个文件作Z存的字符Ԍ然后之传给egrep作ؓ参数Qؓ此? f开兟?
===========================================================================================
grep命o是linux下的行过滤工P其参数繁?/strong>
◎参?br />
1. -A NUMQ?-after-context=NUM
除了列出W合行之外,q且列出后NUM行?br />
ex: $ grep -A 1 panda file
(从file中搜Lpanda样式的行Qƈ昄该行的后1?
2. -a?font color="#0000ff">--text
grep原本是搜L字文Ӟ若拿二进制的案作ؓ搜寻的目标,
则会昄如下的讯? Binary file 二进制文件名 matches 然后l束?br />
若加?font color="#0000ff">-a参数则可二q制案视ؓ文本文g搜寻Q?br />
相当?font color="#0000ff">--binary-files=textq个参数?br />
ex: (从二q制案mv中去搜寻panda样式)
(错误!!!)
$ grep panda mv
Binary file mv matches
(q表C此案有match之处Q详?-binary-files=TYPE )
$
(正确!!!)
$ grep -a panda mv
3. -B NUMQ?-before-context=NUM
?-A NUM 相对Q但q此参数是显C除W合行之?br />
q显C在它之前的NUM行?nbsp;
ex: (从file中搜Lpanda样式的行Qƈ昄该行的前1?
$ grep -B 1 panda file
4. -C [NUM], -NUM, --context[=NUM]
列出W合行之外ƈ列出上下各NUM行,默认值是2?br />
ex: (列出file中除包含panda样式的行外ƈ列出其上??
(若要改变默认|直接改变NUM卛_)
$ grep -C[NUM] panda file
5. -b, --byte-offset
列出样式之前的内文d有多byte ..
ex: $ grep -b panda file
昄l果cM?
0:panda
66:pandahuang
123:panda03
6. --binary-files=TYPE
此参数TYPE预设为binary(二进?Q若以普通方式搜寻,只有2U结?
1.若有W合的地方:昄Binary file 二进制文件名 matches
2.若没有符合的地方Q什么都没有昄?br />
若TYPE为without-matchQ遇到此参数Q?br />
grep会认为此二进制档案没有包含Q何搜L式,?font color="#0000ff">-I 参数相同?br />
若TPYE为text, grep会将此二q制文g视ؓtext案Q与-a 参数相同?br />
Warning: --binary-files=text 若输Zؓl端机,可能会生一些不必要的输出?br />
7. -c, --count
不显C符合样式行Q只昄W合的总行数?br />
若再加上-v,--invert-matchQ参数显CZW合的总行数?br />
8. -d ACTION, --directories=ACTION
若输入的案是一个资料夹Q用ACTIONd理这个资料夹?br />
预设ACTION是read(d)Q也是说此资料夹会被视Z般的案Q?br />
若ACTION是skip(略过)Q资料夹会被grep略过Q?br />
若ACTION是recurse(递归)Qgrep会去d资料夹下所有的档案Q?br />
此相当于-r 参数?br />
9. -E, --extended-regexp
采用规则表示式去解释样式?br />
10. -e PATTERN, --regexp=PATTERN
把样式做Z个parternQ通常用在避免partern?开始?nbsp;
11. -f FILE, --file=FILE
事先要搜寻的样式写入到一个案,一行一个样式?br />
然后采用案搜寻?br />
I的案表示没有要搜ȝ样式Q因此也׃会有MW合?br />
ex: (newfile为搜L式文?
$grep -f newfile file
12. -G, --basic-regexp
样式视为基本的规则表示式解释?此ؓ预设)
13. -H, --with-filename
在每个符合样式行前加上符合的文g名称Q若有\径会昄路径?br />
ex: (在file与testfile中搜寻panda样式)
$grep -H panda file ./testfile
file:panda
./testfile:panda
$
14. -h, --no-filename
?H参数相类|但在输出时不昄路径?br />
15. --help
产生短的help讯息?br />
16. -I
grep会强制认为此二进制档案没有包含Q何搜L式,
?font color="#0000ff">--binary-files=without-match参数相同?br />
ex: $ grep -I panda mv
17. -i, --ignore-case
忽略大小写,包含要搜ȝ样式及被搜寻的案?br />
ex: $ grep -i panda mv
18. -L, --files-without-match
不显C^怸般的输出l果Q反而显C出没有W合的文件名U?br />
19. -l, --files-with-matches
不显C^怸般的输出l果Q只昄W合的文件名U?br />
20. --mmap
如果可能Q用mmappȝ呼叫去读取输入,而不是预讄readpȝ呼叫?
在某些状况,--mmap 能生较好的效能?然而,--mmap
如果q作中案羃短,或I/O 错误发生Ӟ
可能造成未定义的行ؓ(包含core dump)Q?br />
21. -n, --line-number
在显C前,标上行号?br />
ex: $ grep -n panda file
昄l果怼于下:
行号:W合行的内容
22. -q, --quiet, --silent
不显CZQ何的一般输出。请参阅-s?-no-messages
23. -r, --recursive
递归圎ͼd每个资料夹下的所有案,此相当于 -d recsuse 参数?br />
24. -s, --no-messages
不显C关于不存在或无法读取的错误讯息?br />
注: 不像GNU grepQ传l的grep不符合POSIX.2协议Q?br />
因ؓ~Z-q参数Q且他的-s 参数表现像GNU grep?-q 参数?br />
Shell Script們传l的grepULQ避开-q?s参数Q?br />
且将输出限制?dev/null?br />
POSIX: 定义UNIX及UNIX-likepȝ需要提供的功能?nbsp;
25. -V, --version
昄出grep的版本号到标准错误?br />
当?zhn)在回报有关grep的bugsӞgrep版本h必须要包含在内的?br />
26. -v, --invert-match
昄除搜L式行之外的全部?br />
27. -w, --word-regexp
搜L式视Z个字L寻,完全W合??的行才会被列出?br />
28. -x, --line-regexp
搜L式视Z行去搜寻Q完全符合该"?的行才会被列出?/p>