《shell编程.doc》由会员分享,可在线阅读,更多相关《shell编程.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一部分s h e l l第1章文件安全与权限chown和chgrp: - R选项意味着对所有子目录下的文件也都进行同样的操作。- h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。1 软链接文件软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。 链接文件甚至可以链接不存在的文件,这就产生一般称之为断链的问题(或曰“现象),链接文件甚至可以循环链接自己。类似于编程语言中的递归。用ln -s 命令可以生成一个软连接2 硬链接文件info ln 命令告诉您,硬链接是已存在文件的另一个名字(A hard link is anot
2、her name for an existing file),这多少有些令人困惑。硬连接的命令是ln -d existfile newfile硬链接文件有两个限制1)、不允许给目录创建硬链接;2)、只有在同一文件系统中的文件之间才能创建链接。对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容第2章使用find和xargsfind pathname -options -print -exec -okpathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print find命令将
3、匹配的文件输出到标准输出。-exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 command ;,注意 和;之间的空格。-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。Find选项-name 按照文件名查找文件。-perm 按照文件权限来查找文件。-prune 使用这一选项可以使f i n d命令不在当前指定的目录中查找,如果同时使用了- d e p t h选项,那么- p r u n e选项将被f i n d命令忽略。-user 按照文件属主来查找文件。
4、-group 按照文件所属的组来查找文件。-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。Find命令还有- atime和-ctime选项,但它们都和-mtimne选项相似,所以我们在这里只介绍- m t i m e选项。-nogroup 查找无有效所属组的文件,即该文件所属的组在/ e t c / g r o u p s中不存在。-nouser 查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d中不存在。-newer file1 ! file2 查找更改时间比文件f i l e
5、 1新但比文件f i l e 2旧的文件。-type 查找某一类型的文件,诸如:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。-size nc 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/ e t c / f s t a b中找到,该配置文件中包含了本系统中有关文件系统的信息。-mount 在查找文件时不跨越文件系统m o u n t点。-follow
6、如果f i n d命令遇到符号链接文件,就跟踪至链接所指向的文件。-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。2.1.13 使用exec或ok来执行shell命令exec选项后面跟随着所要执行的命令,然后是一对儿 ,一个空格和一个,最后是一个分号。为了使用e x e c选项,必须要同时使用p r i n t选项。如果验证一下f i n d命令,会发现该命令只输出从当前路径起的相对路径及文件名。find . -name ospf6d -print -exec ls -l ;2.2 xargsfind命令将所有匹配到的文件一起传递给e x e c执行。有些系统对能够传递给
7、e x e c的命令长度有限制F i n d命令把匹配到的文件传递给x a rg s命令,而x a rg s命令每次只获取一部分文件而不是全部,不像- e x e c选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。常见使用:find| xargs 命令如:find . -type f -print | xargs file第3章后台执行命令?应用较差第4章文件名置换* 匹配文件名中的任何字符串,包括空字符串。? 匹配文件名中的任何单个字符。. 匹配 中所包含的任何字符。!. 匹配 中非感叹号!之后的字符。使用 . . . 可以用来匹配方括号 中的任何字符。在这一方
8、法中,还可以使用一个横杠-来连接两个字母或数字,以此来表示一个范围。第5章shell输入与输出使用e c h o命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:echo stringe c h o命令有很多功能,其中最常用的是下面几个:c 不换行。f 进纸。t 跳格。n 换行。5.5 teetee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。它的一般形式为:tee -a files5.10 exece x e c命令可以用来替代当前s h e l l;换
9、句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为:exec command如何使用文件描述符第6章命令执行顺序命令1 & 命令2这种命令执行方式相当地直接。& &左边的命令(命令1)返回真(即返回0,成功被执行)后,& &右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功& &那么执行这个命令”。使用| |的一般形式为:命令1 | 命令2| |的作用有一些不同。如果| |左边的命令(命令1)未执行成功,那么就执行| |右边的命令(命令2);或者换句话说,“如果这个命令执行失败了| 那么就执行这个命令
10、”。为了在当前s h e l l中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令用圆括号()括起来。它的一般形式为:(命令1;命令2;. . .)如果使用 来代替(),那么相应的命令将在子s h e l l而不是当前s h e l l中作为一个整体被执行,只有在 中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子s h e l l中执行,否则在当前s h e l l执行。它的一般形式为:命令1;命令2;. . . 第二部分文本过滤第7章正则表达式介绍 匹配数据集。 只匹配字母和数字。 匹配一定范围内的字符串集 匹配行首与行尾。7.2 在行首以匹配字符串或字符序列只允许在
11、一行的开始匹配字符或单词行首前4个字符为c o m p,匹配操作表示为: comp7.3 在行尾以$匹配字符串或字符可以说$与正相反,它在行尾匹配字符串或字符, $符号放在匹配单词后。假定要匹配以单词t r o u b l e结尾的所有行,操作为:t r o u b l e $7.5 使用屏蔽一个特殊字符的含义下列字符可以认为是特殊字符:$.”*0+?7.6 使用匹配一个范围或集合使用 匹配特定字符串或字符串集,可以用逗号将括弧内要匹配的不同字符串分开使用“ -”表示一个字符串范围,表明字符串范围从“ -”左边字符开始,到“ -”右边字符结束。假定要匹配任意一个数字,可以使用: 0 1 2 3
12、 4 5 6 7 8 9 然而,通过使用“-”符号可以简化操作: 0 - 9 7.7 使用匹配模式结果出现的次数匹配字母A出现两次,并以B结尾,操作如下:A 2 B匹配A至少4次,使用:A 4 , B如给出出现次数范围,例如A出现2次到4次之间:A 2 , 4 B第8章grep 家族 grep(参数)选项。 匹配g r e p的一般模式。 只匹配字母或数字,或两者混用。 匹配字符串范围。g r e p一般格式为:grep 选项基本正则表达式文件这里基本正则表达式可为字符串。一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串8.1.2 grep选项常用的g r e p选
13、项有:-c 只输出匹配行的计数。-i 不区分大小写(只适用于单字符)。-h 查询多文件时不显示文件名。-l 查询多文件时只输出包含匹配字符的文件名。-n 显示匹配行及行号。-s 不显示不存在或无匹配文本的错误信息。-v 显示不包含匹配文本的所有行。8.1.3 查询多个文件如果要在当前目录下所有. d o c文件中查找字符串“ s o r t”,方法如下:$ grep sort*.doc或在所有文件中查询单词“ sort it”$ grep sort it *8.1.7 精确匹配使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加 。假定现在精确抽取4 8,方法如下grep 48 d
14、ata.f8.1.8 大小写敏感g r e p是大小写敏感的,如要查询大小写不敏感字符串,必须使用- i开关8.2.2 不匹配行首如果要抽出记录,使其行首不是4 8,可以在方括号中使用记号,表明查询在行首开始6grep 488.2.8 使用grep匹配“与”或者“或”模式g r e p命令加- E参数,这一扩展允许使用扩展模式匹配。Grep E 219|216 结合使用和$可查询空行8.3 类名第9章AWK 介绍9.1 调用awk 抽取域。 匹配正则表达式。 比较域。 向a w k传递参数。 基本的a w k行操作和脚本。有三种方式调用a w k,第一种是命令行方式Awk -F fieldse
15、parator command inputfiles此文件各域以冒号作为分隔符,则必须指明- F选项,如:Awk F: command inputfile第二种方法是将所有a w k命令插入一个文件,并使a w k程序可执行,然后用a w k命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。第三种方式是将所有的a w k命令插入一个单独文件Awk F awk-scriptfile inputfile9.2 awk脚本如果设置了- F选项,则a w k每次读一条记录或一行,并使用指定的分隔符分隔指定域,但如果未设置- F选项,a w k假定空格为域分隔符,并保持这个设置直到发现一新行。当新
16、行出现时,a w k命令获悉已读完整条记录,然后在下一个记录启动读命令,这个读进程将持续到文件尾或文件不再存在。9.2.1 模式和动作任何a w k语句都由模式和动作组成。在一个a w k脚本中可能有许多语句。模式部分决定动作语句何时触发及触发事件。处理即对数据进行的操作。如果省略模式部分,动作将时刻保持执行状态。打印动作: awk print $1 awk.txt6. 打印报告头: awk BEGIN print name beltn- printf $1t$4n awk.txt7. 打印信息尾:awk BEGIN print name beltn- printf $1t$4n END pr
17、int that is the endn awk.txt9. awk 键盘输入如果没有指定文件则默认键盘输入9.2.3 awk中正则表达式及其操作正则表达式用斜线括起来,在文本文件中查询字符串G r e e n,使用/ G r e e n /可以查出单词G r e e n的出现情况。9.2.4 元字符+ 使用+匹配一个或多个字符。? 匹配模式出现频率。例如使用/X Y?Z/匹配X Y Z或Y Z。其余与grep和sed同9.2.5 条件操作符1. 匹配为使一域号匹配正则表达式,使用符号后紧跟正则表达式,也可以用i f语句。a w k中i f后面的条件用()括起来。awk if($1=48) p
18、rint $0 awk.txt式if($4/brown/) print 意即如果f i e l d - 4包含b r o w n,2. 精确匹配使用=,awk if($1=48) print $0 awk.txt7. 设置大小写awk /Ddec/ awk.txt9.2.6 awk内置变量A R G C 命令行参数个数A R G V 命令行参数排列E N V I R O N 支持队列中系统环境变量的使用FILENAME a w k浏览的文件名F N R 浏览文件的记录数F S 设置输入域分隔符,等价于命令行- F选项N F 浏览记录的域个数N R 已读的记录数O F S 输出域分隔符O R S
19、 输出记录分隔符R S 控制记录分隔符内置变量的输出貌似无法在BEGIN中执行9.2.8 awk操作符1. 设置输入域到域变量名一般的变量名设置方式为n a m e = $ n,这里n a m e为调用的域变量名, n为实际域号。3. 修改数值域取值当在a w k中修改任何域时,重要的一点是要记住实际输入文件是不可修改的,修改的只是保存在缓存里的a w k复本。awk $1=$1+1;print $0 awk.txt6. 创建新的输出域awk BEGINprint firsttlasttdiffnif($1$7) $8=$1-$7;print $1,$7,$8 awk.txt7. 增加列值aw
20、k total+=$1ENDprint the first segment sum istotal awk.txt9.2.9 内置的字符串函数1. gsub要在整个记录中替换一个字符串为另一个,使用正则表达式格式, /目标模式/,替换模式/。例如改变学生序号483到383:awk gsub(/483/,383) print $0 awk.txt9.2.10 字符串屏蔽序列9.2.12 printf修饰符输出同c中类似3. 向一行a w k命令传值4. awk脚本文件首行为!/bin/awk f, 其余与grep类似6. 向a w k脚本传值awk script_file var=value i
21、nput_file9.2.13 awk数组用split函数将元素划分进一个数组awk BEGIN print split(123#456#789,myarray,#)数组使用前,不必定义,也不必指定数组元素个数。经常使用循环来访问数组。下面是一种循环类型的基本结构:For (element in array ) print arrayelement第10章sed 用法介绍s e d是一个非交互性文本流编辑器。比起vi更有效10.1 sed怎样读取数据s e d从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定
22、位行号编辑它。重复此过程直到命令结束。10.2 调用sed使用s e d命令行格式为:sed 选项 s e d命令输入文件。使用s e d脚本文件,格式为:sed 选项 -f sed脚本文件输入文件要使用第一行具有s e d命令解释器的s e d脚本文件,其格式为:s e d脚本文件选项 输入文件不管是使用s h e l l命令行方式或脚本文件方式,如果没有指定输入文件, s e d从标准输入中接受输入,一般是键盘或重定向结果。s e d选项如下:n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。c 下一命令是编辑命令。使用多项编辑时加入此
23、选项。如果只用到一条s e d命令,10.2.2 使用sed在文件中查询文本的方式s e d浏览输入文件时,缺省从第一行开始,有两种方式定位文本:1) 使用行号,可以是一个简单数字,或是一个行号范围。2 ) 使用正则表达式,10.2.3 基本sed编辑命令p 打印匹配行= 显示文件行号a 在定位行号后附加新文本信息i 在定位行号后插入新文本信息d 删除定位行c 用新文本替换定位文本s 使用替换模式替换相应模式r 从另一个文件中读文本w 写文本到一个文件q 第一个模式匹配完成后推出或立即推出l 显示与八进制A S C I I代码等价的控制字符 在定位行执行的命令组n 从另一个文件中读文本下一行,
24、并附加在下一行g 将模式2粘贴到/pattern n/y 传送字符n 延续到下一输入行;允许跨行的模式匹配语句10.4.1 使用p(rint)显示行使用- n选项,显示打印定位(匹配)行。sed -n 2p awk.txt10.4.2 打印范围可以指定行的范围,现打印1到5行,用逗号分隔行号sed -n 1,5p awk.txt10.4.3 打印模式所要匹配的模式用/括起,若要只打印匹配行,则加-n选项sed -n /was/p sed.txt10.4.4 使用模式和行号进行查询只在第四行查询模式t h e,命令如下:10.4.6 显示整个文件要打印整个文件,只需将行范围设为第一行到最后一行1
25、 , $。$意为最后一行。10.4.10 打印行号要打印行号,使用等号=。打印模式匹配的行号,使用格式/ p a t t e r n / =。只打印行号sed -n -e/was/= sed.txt(必须先-n在-e)打印匹配的行sed -e/was/= sed.txt10.4.11 附加文本?要附加文本,使用符号a ,可以将指定文本一行或多行附加到指定行。如果不指定文本放置位置, s e d缺省放在每一行后面。附加文本时不能指定范围,只允许一个地址模式。10.4.12 创建sed脚本文件脚本首行为:!#/bin/sed f编辑后要修改权限为可执行10.4.15 删除文本sed 1,3d se
26、d.txt10.4.16 替换文本替换命令用替换模式替换指定模式,格式为: a d d r e s s ,address s/ pattern-to-find /replacement-pattern/g p w ns选项通知s e d这是一个替换操作,并查询p a t t e r n - t o - f i n d,成功后用r e p l a c e m e n t - p a t t e r n替换它。替换选项如下:g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出结果。w 文件
27、名使用此选项将输出定向到一个文件。10.5 使用替换修改字符串如果要附加或修改一个字符串,可以使用( &)命令,&命令保存发现模式以便重新调用它,然后把它放在替换字符串里面。先给出一个被替换模式,然后是一个准备附加在第一个模式后的另一个模式,并且后面带有&,这样修改模式将放在匹配模式之前sed -n s/was/is/ &/p sed.txt(&保留匹配模式,s是替换用)10.6 将sed结果写入文件命令使用w选项,写入已有文件sed 1,2 w sed.out sed.txt10.7 从文件中读文本在模式匹配行/ c o m p a n y /后放置附加文本。本例为第三行。注意所读的文件名需
28、要用单引号括起来。sed /was/r sed.out sed.txt10.8 匹配后退出查询首次出现模式,然后退出。需要将q放在s e d语句末尾。sed /was/ q sed.txt10.9 显示文件中的控制字符 ?使用cat v filename可以查看文件中的控制字符10.10 使用系统sed可以使用通道|将不同sed命令执行结果10.10.5 从shell向sed传值要从命令行中向s e d传值,值得注意的是用双引号(NAME=“asdfasdf”),否则功能不执行第11章合并与分割与s o r t(排序)结合使用的u n i q、j o i n、c u t和p a s t e方法
29、与s p l i t方法也将会涉及到。11.1.2 sort选项s o r t命令的一般格式为:sort -cmu -o output_file other options +pos1 +pos2 input_files下面简要介绍一下s o r t的参数:-c 测试文件是否已经分类。-m 合并两个分类文件。-u 删除所有复制行。-o 存储s o r t结果的输出文件名。其他选项有:-b 使用域进行分类时,忽略第一个空格。-n 指定分类是域上的数字分类。-t 域分隔符;用非空格或t a b键分隔域。-r 对分类次序或比较求逆。+n n为域号。使用此域号开始分类。n n为域号。在分类比较时忽略此
30、域,一般与+ n一起使用。post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始。11.1.5 sort对域的参照方式关于s o r t的一个重要事实是它参照第一个域作为域0,域1是第二个域11.1.6 文件是否已分类Sort c filename11.1.7 基本sort缺省情况下, s o r t认为一个空格或一系列空格为分隔符。要加入其他方式分隔,使用- t选项。s o r t执行时,先查看是否为域分隔设置了- t选项,如果设置了,则使用它来将记录分隔成域0、域1等等;如果未设置,用空格代替。缺省时s o r t将整个行排序,指定域号的情况例
31、外。常用命令: sort -t: sort.txt11.1.8 sort分类求逆(使用-r选项)sort -t: -r sort.txt11.1.9 按指定域分类若域3为文本则使用”+2”,若为数字域则使用”+2n”(否则仅按第一个数字比较)11.1.11 唯一性分类使用- u选项去除重复行,不必加其他选项, s o r t会自动处理。sort -u sort.txt11.1.12 使用k的其他sort方法指定分类键也可以指定k选项,第1域(分类键)以1开始,关于n的用法同上。11.1.13 使用k做分类键排序可以指定分类键次序。先以第4域,再以第1域分类,命令为-k4 -k1,11.1.14
32、 指定sort序列可以指定分类键顺序,也可以使用- n选项指定不使用哪个分类键进行查询。该命令意即开始以域0分类,忽略域2,然后再使用域3分类。Sort +0 -2 +311.1.15 pos用法指定开始分类的域位置的另一种方法是使用如下格式:sort -t: +2.2n sort.txt意即从f i e l d _ n u m b e r开始分类,但是要在此域的第c h a r a c t e r s _ i n个字符开始。11.1.16 使用head和tail将输出分类只查看s o r t结果中的第一和最后一行(排序后使用管道传给head或tail)sort -t: +2n sort.tx
33、t | tail -2(tail,head 后的-数字,为显示前几项)11.1.18 将两个分类文件合并将文件合并前,它们必须已被分类。分类的合并格式为 sort -m sorted_file1 sorted_file2sort -m +0 sort1.out sort2.out(+0是为了保证按域1排序)11.3 uniq用法u n i q用来从一个文本文件中去除或禁止重复行s o r t的唯一性选项去除所有重复行,u n i q里意即持续不断重复出现的行,中间不夹杂任何其他文本,命令一般格式:其选项含义:-u 只显示不重复行。-d 只显示有重复数据行,每种重复行只显示其中一行-c 打印每一
34、重复行出现次数。-f n为数字,前n个域被忽略。一些系统不识别- f选项,这时替代使用- n。2. 对特定域进行测试如果忽略第1域,只测试第2域唯一性,使用- n 2,下述文件包含一组数据,其中第2域代表组代码。uniq -f2 uniq.tx11.4 join用法j o i n工作方式如下:两个已分类文件f i l e 1和f i l e 2。每个文件里都有一些元素与另一个文件相关。由于这种关系, j o i n将两个文件连在一起,这有点像修改一个主文件,使之包含两个文件里的共同元素。文本文件中的域通常由空格或t a b键分隔,但如果愿意,可以指定其他的域分隔符。一些系统要求使用j o i
35、n时文件域要少于2 0,为公平起见,如果域大于2 0,应使用D B M S系统。一般形式为:join options input-file1 input-file2常用选项:an n 为一数字,用于连接时从文件n中显示不匹配行。例如, - a 1显示第一个文件的不匹配行,- a 2为从第二个文件中显示不匹配行。o n.m n为文件号,m为域号。1 . 3表示只显示文件1第三域,每个n,m必须用逗号分隔,如1 . 3,2 . 1。j n m n为文件号,m为域号。使用其他域做连接域。t 域分隔符。用来设置非空格或t a b键的域分隔符。例如,指定冒号做域分隔符- t:。1:连接两个文件Join
36、names.txt town.txt(缺省j o i n删除或去除连接键的第二次重复出现,这里即为名字域)2: 不匹配连接Join a1 a2 names.txt town.txt3: 选择性连接使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显示域。使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:Join 1.1, 2.2 names.txt town.txt使用-jn m进行其他域连接,例如用文件1域3和文件域2做连接键,命令为:Join j1 4, -j2 2 names.txt town.txt
37、11.5 cut用法c u t用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。c u t一般格式为:cut options file1 file2可用选项:-c list 指定剪切字符数。-f field 指定剪切域数。-d 指定与空格和t a b键不同的域分隔符。- c用来指定剪切范围,如下所示:- c 1,5-7 剪切第1个字符,然后是第5到第7个字符。-c1-50 剪切前5 0个字符。-f 格式与- c相同。-f 1,5 剪切第1域,第5域。- f 1,10-12 剪切第1域,第1 0域到第1 2域。11.5.1 使用域分隔符文件中使用冒号“:”为域分隔符,故可
38、用- d选项指定冒号,如- d:。如果有意观察第3域,可以使用- f 3。要抽取I D域cut -d: -f3 sort.txtc u t命令中剪切各域需用逗号分隔,如剪切域1和3cut -d: -f1,3 sort.txt11.6 paste用法c u t用来从文本文件或标准输出中抽取数据列或者域,然后再用p a s t e可以将这些数据粘贴起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。p a s t e将按行将不同文件行信息放在一行。缺省情况下, p a s t e连接时,用空格或t a b键分隔新行中不同文本,除非指定- d选项,它将成为域分隔符。p
39、 a s t e格式为;paste -d -s -file1 file2选项含义如下:-d 指定不同于空格或t a b键的域分隔符。例如用分隔域,使用- d 。-s 将每个文件合并成行而不是按行粘贴。11.7 split用法s p l i t用来将大文件分割成小文件(传输文件或缓存较小时可能存在)s p l i t命令一般格式:split -output_file-size input-filename output-filename这里o u t p u t - f i l e - s i z e指的是文本文件被分割的行数。s p l i t查看文件时,o u t p u t - f i l
40、 e - s i z e选项指定将文件按每个最多1 0 0 0行分割。如果有个文件有2 8 0 0行,那么将分割成3个文件,分别有1 0 0 0、1 0 0 0、8 0 0行。每个文件格式为x a a 到x z z ,x为文件名首字母, a a 、 z z 为文件名剩余部分顺序字符组合(从xaa,xab,到xzz)第12章tr 用法12.1 关于trt r用来从标准输入中通过替换或删除操作进行字符转换。t r主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。t r刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开
41、始。带有最常用选项的t r命令格式为:t r - c - d - s s t r i n g 1 _ t o _ t r a n s l a t e _ f r o m s t r i n g 2 _ t o _ t riannpsulta_t e _ t o f i l e-c 用字符串1中字符集的补集替换此字符集,要求字符集为A S C I I。-d 删除字符串1中所有输入字符。-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。I n p u t - f i l e是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。12.1.1 字符范围指定字符串1或
42、字符串2的内容时,只能使用单字符或字符串范围或列表。a-z a-z内的字符组成的字符串。A-Z A-Z内的字符组成的字符串。0-9 数字串。/octal 一个三位的八进制数,对应有效的A S C I I字符。O*n 表示字符O重复出现指定次数n。因此 O * 2 匹配O O的字符串。12.1.3 去除重复出现的字符如果要去除重复字母或将其压缩在一起,使用- s选项, tr s “a-z” tr.txt 输入文件要用(“”或“|”)12.1.4 删除空行使用- s来做这项工作。换行的八进制表示为 0 1 2,也可以使用换行速记方式 n,命令为:tr s “n” tr.txt (或为”012”,引
43、号内外等价)12.1.5 大写到小写Tr “a-z” “A-Z”也可以使用字符类:l o w e r:和:u p p e r:: tr “:l o w e r:” “:u p p e r:”12.1.7 删除指定字符删除只包含字母或数字的列。需要结合使用- c和- s选项完成此功能命令tr -cs a-zA-Z012*将文件每行所有不包含在 a - z 或 A - Z (的字符串放在字符串1中并转换为一新行。- s选项表明压缩所有新行, - c表明保留所有字母不动12.1.10 匹配多于一个字符可以使用 c h a r a c t e r * n 格式匹配多于一个字. 用星号代替所有的0。模式
44、为 0 * 4 ,意即匹配至少4个0,替换字符串为星号Tr “0*4” “*”第三部分登录环境第13章登录环境文件/ e t c / p a s s w d中有7个域,并用冒号作分隔符第1域是登录名,第2域是加密的密码,第5域是用户全名。第6域是用户根目录,第7域是用户使用的s h e l l。这里/ b i n / s h意即缺省为常规Bourne Shell。13.1 /etc/profile用户登录时,自动读取/ e t c目录下p r o f i l e文件,此文件包含: 全局或局部环境变量。 PATH信息。 终端设置。 安全命令。 日期信息或放弃操作信息。13.2 用户的$HOME.
45、profile如果. p r o f i l e已经存在,系统将参照此文件,意即对此过程并不创建另一个s h e l l,因而在/ e t c / p r o f i l e下设置的环境不做改动,除非在. p r o f i l e中强制改动它。如果创建另一个进程,用户本地的s h e l l变量将被覆盖。回到. p r o f i l e,一般来说创建帐户时,一个p r o f i l e文件的基本框架即随之创建。不要忘了在. p r o f i l e文件中可以通过设置相关条目以不同的值或使用u s e t命令来覆盖/ e t c / p r o f i l e文件中的设置。如果愿意,可以定制用户自己的. p r o f i l e文件。13.3 stty用法s t