每个程序员都应该知道的8个Linux命令.doc_第1页
每个程序员都应该知道的8个Linux命令.doc_第2页
每个程序员都应该知道的8个Linux命令.doc_第3页
每个程序员都应该知道的8个Linux命令.doc_第4页
每个程序员都应该知道的8个Linux命令.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

每个程序员都应该知道的8个Linux命令摘要:Linux里有很丰富的各种命令,有些是很难用的。然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用脚本语言写程序来处理它们。每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对Linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命令的各种功用的。我在这里要讲的是这几个最常用的命令的最常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本的指导。让我们从处理一些数据开始。假设我们有两个文件,分别记录的订单清单和订单处理结果。1. order.out.log 2. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:23:45112,1,JoyofClojure,Hardcover,29.99 4. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 5. 6. order.in.log 7. 8:22:20111,OrderComplete 8. 8:23:50112,Ordersenttofulfillment 9. 8:24:20113,Refundsenttoprocessingcatcat 连接文件,并输出结果cat 命令非常的简单,你从下面的例子可以看到。1. jfields$catorder.out.log 2. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:23:45112,1,JoyofClojure,Hardcover,29.99 4. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99就像它的说明描述的,你可以用它来连接多个文件。1. jfields$catorder.* 2. 8:22:20111,OrderComplete 3. 8:23:50112,Ordersenttofulfillment 4. 8:24:20113,Refundsenttoprocessing 5. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 6. 8:23:45112,1,JoyofClojure,Hardcover,29.99 7. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99如果你想看这些log文件的内容,你可以把它们连接起来并输出到标准输出上,就是上面的例子展示的。这很有用,但输出的内容可以更有逻辑些。sortsort 文件里的文字按行排序此时sort命令显然是你最佳的选择。1. jfields$catorder.*|sort 2. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:22:20111,OrderComplete 4. 8:23:45112,1,JoyofClojure,Hardcover,29.99 5. 8:23:50112,Ordersenttofulfillment 6. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 7. 8:24:20113,Refundsenttoprocessing就像上面例子显示的,文件里的数据已经经过排序。对于一些小文件,你可以读取整个文件来处理它们,然而,真正的log文件通常有大量的内容,你不能不考虑这个情况。此时你应该考虑过滤出某些内容,把cat、sort后的内容通过管道传递给过滤工具。grepgrep, egrep, fgrep 打印出匹配条件的文字行假设我们只对Patterns of Enterprise Architecture这本书的订单感兴趣。使用grep,我们能限制只输出含有Patterns字符的订单。1. jfields$catorder.*|sort|grepPatterns 2. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99假设退款订单113出了一些问题,你希望查看所有相关订单你又需要使用grep了。1. jfields$catorder.*|sort|grep:dd113, 2. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:24:20113,Refundsenttoprocessing你会发现在grep上的匹配模式除了“113”外还有一些其它的东西。这是因为113还可以匹配上书目或价格,加上额外的字符后,我们可以精确的搜索到我们想要的东西。现在我们已经知道了退货的详细信息,我们还想知道日销售和退款总额。但我们只关心Patterns of Enterprise Architecture这本书的信息,而且只关心数量和价格。我现在要做到是切除我们不关心的任何信息。cutcut 删除文件中字符行上的某些区域又要使用grep,我们用grep过滤出我们想要的行。有了我们想要的行信息,我们就可以把它们切成小段,删除不需要的部分数据。1. jfields$catorder.*|sort|grepPatterns 2. 8:22:19111,1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 3. 8:24:19113,-1,PatternsofEnterpriseArchitecture,Kindleedition,39.99 4. 5. jfields$catorder.*|sort|grepPatterns|cut-d,-f2,5 6. 1,39.99 7. -1,39.99现在,我们把数据缩减为我们计算想要的形式,把这些数据粘贴到Excel里立刻就能得到结果了。cut是用来消减信息、简化任务的,但对于输出内容,我们通常会有更复杂的形式。假设我们还需要知道订单的ID,这样可以用来关联相关的其他信息。我们用cut可以获得ID信息,但我们希望把ID放到行的最后,用单引号包上。sedsed 一个流编辑器。它是用来在输入流上执行基本的文本变换。下面的例子展示了如何用sed命令变换我们的文件行,之后我们在再用cut移除无用的信息。1. jfields$catorder.*|sort|grepPatterns 2. |seds/0-9:*(0-9*),(.*)/2,1/ 3. 1,PatternsofEnterpriseArchitecture,Kindleedition,39.99,111 4. -1,PatternsofEnterpriseArchitecture,Kindleedition,39.99,113 5. 6. lmp-jfields01:jfields$catorder.*|sort|grepPatterns 7. |seds/0-9:*(0-9*),(.*)/2,1/|cut-d,-f1,4,5 8. 1,39.99,111 9. -1,39.99,113我们对例子中使用的正则表达式多说几句,不过也没有什么复杂的。正则表达式做了下面几种事情 删除时间戳 捕捉订单号 删除订单号后的逗号和空格 捕捉余下的行信息里面的引号和反斜杠有点乱,但使用命令行时必须要用到这些。一旦捕捉到了我们想要的数据,我们可以使用 1 & 2 来存储它们,并把它们输出成我们想要的格式。我们还在其中加入了要求的单引号,为了保持格式统一,我们还加入了逗号。最后,用cut命令把不必要的数据删除。现在我们有麻烦了。我们上面已经演示了如何把log文件消减成更简洁的订单形式,但我们的财务部门需要知道订单里一共有哪些书。uniquniq 删除重复的行下面的例子展示了如何过滤出跟书相关的交易,删除不需要的信息,获得一个不重复的信息。1. jfields$catorder.out.log|grep(Kindle|Hardcover)|cut-d,-f3|sort|uniq-c 2. 1JoyofClojure 3. 2PatternsofEnterpriseArchitecture看起来这是一个很简单的任务。这都是很好用的命令,但前提是你要能找到你想要的文件。有时候你会发现一些文件藏在很深的文件夹里,你根本不知道它们在哪。但如果你是知道你要寻找的文件的名字的话,这对你就不是个问题了。findfind 在文件目录中搜索文件在上面的例子中我们处理了order.in.log和order.out.log这两个文件。这两个文件放在我的home目录里的。下面了例子将向大家展示如何在一个很深的目录结构里找到这样的文件。1. jfields$find/Users-nameorder* 2. Users/jfields/order.in.log 3. Users/jfields/order.out.logfind命令有很多其它的参数,但99%的时间里我只需要这一个就够了。简单的一行,你就能找到你想要的文件,然后你可以用cat查看它,用cut修剪它。但文件很小时,你用管道把它们输出到屏幕上是可以的,但当文件大到超出屏幕时,你也许应该用管道把它们输出给less命令。lessless 在文件里向前或向后移动让我们再回到简单的 cat | sort 例子中来,下面的命令就是将经过合并、排序后的内容输出到less命令里。在 less 命令,使用“/”来执行向前搜索,使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论