加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

强大的UNIX命令行

发布时间:2022-09-21 14:53:40 所属栏目:Unix 来源:
导读:  我们传统的写程序办法是造单一而功能全面的程序,设法在一个程序里提供能够全面满足需求的功能,这样的做法会造成程序庞大而复杂,可维护性降低。Windows上的程序通常如此,具有全面的功能,基本上不考虑与其他程
  我们传统的写程序办法是造单一而功能全面的程序,设法在一个程序里提供能够全面满足需求的功能,这样的做法会造成程序庞大而复杂,可维护性降低。Windows上的程序通常如此,具有全面的功能,基本上不考虑与其他程序的配合,比方说有两个程序都需要分页,他们会各自开发一个分页模块,而不是去寻求共用分页功能。在UNIX世界里的做法与之相反,每个程序只做单一的功能,除此之外不做任何多余的事情。复杂的功能通过多个程序之间配合完成(通过管道)。相信经常使用UNIX命令行工具的人会经常为它的强大和灵活而感到深深的震撼和佩服。举个例子:
 
  一个文件里存有很多url,每行一个url,其中不少url是重复出现的(比如某网站的access log,有些url被多次访问)。如何从中提取出前10名访问最多的url?
 
  $ sort access.log | uniq -c | sort -rn | head
 
  第一个sort负责排序,把相同的url都聚在一起;uniq -c计算出每个url的出现次数,并把出现次数的值附加在每个url前面;第二个sort按每个url出现的次数从高到底排序;head取其中的前10个url。
 
  这是一次完美而漂亮的配合。每个命令都各司其职,做好自己的事,但每个命令对整体要做的事情都一无所知,它们知道的是一些数据进来,处理之,然后把一些数据输出去。这些命令组合在一起,就完成了你想要完成的功能。
 
  shell命令的组合可以做的事情数不胜数,再举几个例子:
 
  查看当前文件系统的磁盘空间主要耗费在哪里?
 
  $ du --max-depth=4 /home|sort -nr |more
 
  unix命令 当前目录_unix命令行_unix 命令 grep
 
  根据正则表达式去kill特定的进程:
 
  $ ps xww | grep "sleep" | cut -c1-5 | xargs -i kill {} 2>/dev/null
 
  一个可以即时编译运行的C程序:
 
  $ echo 'main() {printf("Hello/n");}' | gcc -w -x c -; ./a.out
 
  等等。。。
 
  很多事情在其他操作系统上完成比较笨拙或困难,要么不得不自己编程去做,要么求助于专门工具。而在UNIX系列操作系统上仅仅轻敲几个命令就可以搞定,这也是UNIX/LINUX深受喜欢的原因之一。
 
  那么,这样的威力和灵活性从哪里来?
 
  unix命令 当前目录_unix命令行_unix 命令 grep
 
  1,每个命令只做一件事,相当于提供了基本功能;
 
  2,提供了灵活的组合手段unix命令行,通过管道配合来组合各个命令的功能完成整件事情。
 
  这些程序可以无缝地配合的原因是,所有命令共同遵守统一的输入输出表示(对于每个命令程序来说,输入的内容都是以换行符分隔的文本,工作方式都是一行一行的处理,输出时同样是以换行符分隔的文本,这就确保了输出的结果可以作为遵守同样约定的程序的输入,从而提供了无缝的组合手段)。这样的方式同样也提供了扩展的能力,在特定的情况下,如果现有的命令仍然不够用,你很容易添加新的命令,只要你编写的程序遵守同样的约定,就可以与现有的UNIX命令完美配合。
 
  按照语言的三要素来说(基本要素,组合手段,抽象手段),UNIX命令行至少提供了其中两个要素(基本要素,组合手段)。因此它可以灵活的完成很多工作。
 
  PS:
 
  统一的表示威力是强大的。
 
  在Lisp语言中,一切数据都是list,甚至Lisp代码本身也表示为一个list。Lisp提供了内建的对list的操作,其强大和灵活使Lisp风靡半世纪而不衰(包括Lisp的后继scheme和common Lisp)。
 
  据说六七十年代有一门深受程序员喜爱的语言,名叫APL,在这门语言里所有的数据都是数组,而且为各种类型的通用数组操作提供了一套统一而方便的运算符。
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读