每个程序员都应该知道的8个Linux命令
上一篇 / 下一篇 2012-09-18 14:10:07 / 个人分类:Linux
]P#n'tB1MX7K0 摘要:Linux里有很丰富的各种命令,有些是很难用的。然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用脚本语言写程序来处理它们。51Testing软件测试网 R RDC\2y;m}
51Testing软件测试网,z4\ x(cE/c-SqcGn:G每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对Linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。51Testing软件测试网?'B.D/MY\
$GT0ul#m"y+v*U~6x0D0 注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命令的各种功用的。我在这里要讲的是这几个最常用的命令的最常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本的指导。51Testing软件测试网 ]BCi"mO"X#k7X:g'GS
0whK&T;uu z0J)E0 让我们从处理一些数据开始。假设我们有两个文件,分别记录的订单清单和订单处理结果。51Testing软件测试网8LVN:Pw!P
|
cat51Testing软件测试网+G e@},Q2|+IR7VOr
51Testing软件测试网NZX6p2B2nP scat – 连接文件,并输出结果
)J qo @-Q4c2[b#]ik0la @KO rua0 cat 命令非常的简单,你从下面的例子可以看到。
JplX{4Ho0
|
/Zw gb3Bb0 就像它的说明描述的,你可以用它来连接多个文件。51Testing软件测试网s9aE)^GpE x"zU(P
|
:Ml;YQO0 如果你想看这些log文件的内容,你可以把它们连接起来并输出到标准输出上,就是上面的例子展示的。这很有用,但输出的内容可以更有逻辑些。51Testing软件测试网'zU&g5Fb
"RieD@0 sort51Testing软件测试网7}y.x0fZ X
p#ogrY.k?mK0 sort – 文件里的文字按行排序51Testing软件测试网M1nF~1rex oB
n!nK@#b1IT0 此时sort命令显然是你最佳的选择。
c}ybG-sZu0
|
就像上面例子显示的,文件里的数据已经经过排序。对于一些小文件,你可以读取整个文件来处理它们,然而,真正的log文件通常有大量的内容,你不能不考虑这个情况。此时你应该考虑过滤出某些内容,把cat、sort后的内容通过管道传递给过滤工具。
P3vs{0\@]G0H!E6G5QFR0 grep
%oDP[2Xo0S7o$jx2}^a LH0 grep, egrep, fgrep – 打印出匹配条件的文字行
5{(_5f9b EO5c051Testing软件测试网:{CV:UedBsUH假设我们只对Patterns of Enterprise Architecture这本书的订单感兴趣。使用grep,我们能限制只输出含有Patterns字符的订单。
t~&xy ix*a051Testing软件测试网GC8{8] \0o)]C3q1H51Testing软件测试网 W%e;] ~v4W
|
Xx-A6I6n!})\i0 假设退款订单113出了一些问题,你希望查看所有相关订单——你又需要使用grep了。51Testing软件测试网fWIF%n'`8?7B
{Z/KTZ8^0[8VL0
r*e#_h u-KX0
|
你会发现在grep上的匹配模式除了“113”外还有一些其它的东西。这是因为113还可以匹配上书目或价格,加上额外的字符后,我们可以精确的搜索到我们想要的东西。
g[6]1PIC051Testing软件测试网"j5q%kO$G:b现在我们已经知道了退货的详细信息,我们还想知道日销售和退款总额。但我们只关心《Patterns of Enterprise Architecture》这本书的信息,而且只关心数量和价格。我现在要做到是切除我们不关心的任何信息。51Testing软件测试网5S U(?5nR/o
51Testing软件测试网tAKU)vcut51Testing软件测试网+u"X+` v x$Y$n h
Q px~2TVUu0 cut – 删除文件中字符行上的某些区域
2r w;p C8L03J}2K}S&?BL0 又要使用grep,我们用grep过滤出我们想要的行。有了我们想要的行信息,我们就可以把它们切成小段,删除不需要的部分数据。51Testing软件测试网!Nx+^h_!r,cy$]
6~(b]5z4z@b051Testing软件测试网sQ4A$| K'Z5Q!p
|
f4C.[ C7M!@4_~7C0 现在,我们把数据缩减为我们计算想要的形式,把这些数据粘贴到Excel里立刻就能得到结果了。51Testing软件测试网M`? ct*gG d WH {
51Testing软件测试网#Q?r2Mc|ua @;jcut是用来消减信息、简化任务的,但对于输出内容,我们通常会有更复杂的形式。假设我们还需要知道订单的ID,这样可以用来关联相关的其他信息。我们用cut可以获得ID信息,但我们希望把ID放到行的最后,用单引号包上。51Testing软件测试网5_%v-L-mrlS
51Testing软件测试网 w(X4yjy'T)Msed
%gZEPM051Testing软件测试网2V] qYOs n$]sed – 一个流编辑器。它是用来在输入流上执行基本的文本变换。51Testing软件测试网&O-q0]h8G d2d
b Ole6w0c0 下面的例子展示了如何用sed命令变换我们的文件行,之后我们在再用cut移除无用的信息。51Testing软件测试网"s0zZ!k'AI|A(m
)O7}.k2km0
:kJ8U4Y!F].A0
|
我们对例子中使用的正则表达式多说几句,不过也没有什么复杂的。正则表达式做了下面几种事情
$Ak l3us00Hf"iJIo0 ● 删除时间戳
O&F x'hU0w!P0V dQ4W04x2k)|3DNtwJ0 ● 捕捉订单号51Testing软件测试网A|S@#z? A
51Testing软件测试网.H8K@zCSB!wG1p● 删除订单号后的逗号和空格51Testing软件测试网QPl%I!}J/O
%WE:]bA+S9D wc0 ● 捕捉余下的行信息51Testing软件测试网*C~?.pAU s9I3u
_:TpP(s0 里面的引号和反斜杠有点乱,但使用命令行时必须要用到这些。
0d h;W8s qTM08PN:B0d|3K't*[0 一旦捕捉到了我们想要的数据,我们可以使用 \1 & \2 来存储它们,并把它们输出成我们想要的格式。我们还在其中加入了要求的单引号,为了保持格式统一,我们还加入了逗号。最后,用cut命令把不必要的数据删除。
| ]|q3CUd Tl4Hz0Yu+w Az1}:D0 现在我们有麻烦了。我们上面已经演示了如何把log文件消减成更简洁的订单形式,但我们的财务部门需要知道订单里一共有哪些书。
J%k3Z&fU.KY%jO"y00q:B NG Jl p&@0 uniq
(UPt+j Z4y!^0,Q5t:Mj8ra2_.V[0 uniq – 删除重复的行51Testing软件测试网.?,BO,eG vF^;u Z
51Testing软件测试网R ?;Y KO |f.Uh;o下面的例子展示了如何过滤出跟书相关的交易,删除不需要的信息,获得一个不重复的信息。51Testing软件测试网c/{7l9s.L3wL
51Testing软件测试网.I7H3Weqw)y%A;lr*gc;cH9g0
|
看起来这是一个很简单的任务。51Testing软件测试网cu0F.i"B0XJ@,]
wgvk_6J0 这都是很好用的命令,但前提是你要能找到你想要的文件。有时候你会发现一些文件藏在很深的文件夹里,你根本不知道它们在哪。但如果你是知道你要寻找的文件的名字的话,这对你就不是个问题了。