Sobell谈bash和Linux命令行命运

http://tech.ddvip.com   2007年04月21日    社区交流

本文详细介绍Sobell谈bash和Linux命令行命运

  tr工具读取标准输入中每一个输入的字符,把字符镜像为一个替代的字符并删除原来的字符或者把不再管那个字符。这个工具读取标准的输入并且写入标准的输出。

  tr工具一般与两个参数一起使用,string1(字符串1)和string2(字符串2)。每个字符在这两个字符串中的位置是非常重要的:每一次tr发现在其输入的string1中的一个字符的时候,它都要用string2中相对应的字符取代那个字符。

  使用一个参数,string1和“--delete”(删除指令)的选项,tr删除在string1中指定的字符。这个“squeeze-repeats ”(缩减连续重复的字符)选项使用一个出现的字符取代在string1中连续出现的字符,例如abbc将变成abc。

  你可以使用一个连字符代表在instring1或者string2中的一系列字符。这两个命令行在下面的例子中产生同样的结果:

  $ echo abcdef | tr 'abcdef' 'xyzabc'

  xyzabc

  $ echo abcdef | tr 'a-f' 'x-za-c'

  xyzabc

  下面这个例子演示了隐藏文本的流行的做法。这个方法通常称作“ROT13”(rotate 13),因为它用第十三个字母代替第一个字母,用第十四个字母代替第二个字母,以此类推。

  $ echo The punchline of the joke is ... |

  > tr 'A-M N-Z a-m n-z' 'N-Z A-M n-z a-m'

  Gur chapuyvar bs gur wbxr vf ...

  为了使这个文本再次智能化,把给tr的参数顺序倒过来:

  $ echo Gur chapuyvar bs gur wbxr vf ... |

  > tr 'N-Z A-M n-z a-m' 'A-M N-Z a-m n-z'

  The punchline of the joke is ...

  这个“--delete”选项使tr删除选择的字符:

  $ echo If you can read this, you can spot the missing vowels! |

  > tr --delete 'aeiou'

  If y cn rd ths, y cn spt th mssng vwls!

  在下面的例子中,tr替换几个字符并且产生与单个字符相同的一对儿字符:$ echo tennessee | tr --squeeze-repeats 'tnse' 'srne'

  serene

  下一个例子用一个“新文件”字符替换在draft1文件中的没有按照字母顺序排列的每一个字符。输出是一个词汇列表,每一行一个单词:

  $ tr --complement --squeeze-repeats '[:alpha:]' ' ' < draft1

  最后一个例子是使用字符类提升那里的字符串“hi there”:

  $ echo hi there | tr '[:lower:]' '[:upper:]'

  HI THERE

  总结

  LP:最后还有什么想法吗?

  答:我想说命令行并不适用于每一个人。命令行适用于那些要求亲手操作和对他们驯服的野兽有更强的控制力的那些用户。学习外壳程序能够做什么已经成功了一半。成功的另一半是学习一些与Linux发布版一起推出的许多工具的知识。你不需要了解每一个指令的每一个参数。了解每一个指令名称的含义和每个指令基本上能做什么就足够了。你可以阅读我的书中有关人和信息的内容或者有关指令参考的部分。查看tac工具并且在一开始的时候会对这个工具名称的起源感到可笑。

责编:豆豆技术应用

正在加载评论...