posts - 297,  comments - 15,  trackbacks - 0

Linux有大量的命令行工具,从每天都会使用的ls、cd以及ps这些工具,到您可能还没有使用过,或者甚至没有听说过的不常见的工具。

  我们将看一下五个不常见,但可以让您的使用更轻松的工具。我们会简单地看看每一个命令及其标志和参数,但请不要忘了对每一个命令使用man命令,去获取所有可能的标志和参数信息。

  logsave

  我们将查看的第一个工具是logsave。logsave命令可以将一个命令的输出保存到一个日志文件中:

  $ logsave /var/log/partsize df –h

  这里,logsave命令将df命令的输出保存到/var/log/partsize文件中,同时会添加一个时间戳并将命令的执行结果输出到标准输出。

听起来并不是那么的有趣,是吗?logsave特殊的魔力在于,如果文件,在这个例子中是/var/log/partsize,并不存在,那么 logsave会在内存中将数据进行排队,等待该文件的产生。对于在启动过程中,当您在对一个还没有挂载上的分区进行写操作时,用logsave去跟踪命 令的执行输出是非常有用的。为了保存可能会丢失的命令行输出,我经常在自动配置和引导过程中,使用logsave。

  diff3

下一个工具是diff3命令。您可能已经使用过diff命令去生成文件之间的差异。相对于diff的两个文件,diff3可以对三个文件执行同样的功 能,但包括diff中的一些更复杂的选项。让我们看一个简单的例子。我们有三个文件:cat、dog以及mouse,它们各自包含一个字符串。我们可以用 diff3对所有的三个文件进行比较:

$ diff3 dog cat mouse
====
1:1c
  This is a dog
2:1c
  This is a cat
3:1c
  This is a mouse

  diff3命令显示了三个文件中不同的字符串。您也可以用“-”标记代表一个文件。这将会把标准输入和其他文件进行比较。

  您也可以使用-A标记,在所有的文件里面,去合并不同,并对任何冲突之处进行高亮显示。

$ diff3 -A dog cat mouse
1a
||||||| cat
This is a cat
=======
This is a mouse
>>>>>>> mouse
.
0a
<<<<<<< dog
.

  pstree

您可能已经在您的主机上,使用过ps去列出所有的进程。但您可能还没有听说过pstree——一个用于以树的形式显示您的进程的命令。一个进程或者从 init进程,从一个您可以指定的PID(进程ID)分支出来,或者从一个您可以指定的用户分支出来。每一个进程及其子进程如下所示:

pstree命令
 
  pstree命令也包括一些您可以使用的命令行标志。比如-a标志会显示进程所使用的命令行,而-p标志会在树中添加进程的进程ID。

  nl

  nl命令很少有人知道,但却可以执行一个很漂亮的小功能——它在输出中添加行号。让我们看一个简单的例子,对一个叫做dog的文件执行nl命令。

$ nl dog
1 This is a dog
2 This is not a dog

  您可以看到nl获取了dog文件的内容,并在输出中添加了行号。然后,您可以将这些输出通过管道放到一个新文件中。

  $ nl dog > dog_numbered

  然后,我们就可以显示这个带有新的行号内容的文件:

$ cat dog_numbered
1 This is a dog
2 This is not a dog

  split

  我们要看的最后一个命令是split。split命令通常基于尺寸将文件分割为多个片段。我使用这个命令,去将大的日志文件分割为更好管理的日志片段,例如:

  $ split --bytes=1m /tmp/largelogfile /tmp/smallerfile

  split命令有根据字节数和行数对文件进行分割的参数。这里,我们通过指定--bytes=1m参数,将大的日志文件分割为1M字节的块(您可以指定b去代表字节,k代表千字节,g代表十亿字节)。

  我们可以像这样根据行数对文件进行分割:

  $ split --lines=1000 /tmp/largelogfile /tmp/smallerfile

  这里,文件会被分为多个1000行的块。

在我们的例子中,会将每个块都存在/tmp目录下,其文件名会包含一个前缀smallerfile。第一个文件为smallerfileaa,第二个是 smallerfileab等等。您也可以使用-d标记,去使用数字而不是通过字母的增长来对块进行计数。最后,除了可以指定一个文件,您也可以使用 “-”去让split命令以标准输入为输入,并分割为独立的文件。


from:
http://www.searchsv.com.cn/showcontent_31396.htm

posted on 2010-03-06 11:26 chatler 阅读(320) 评论(0)  编辑 收藏 引用 所属分类: Shell

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(10)

随笔分类(307)

随笔档案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感觉这个博客还是不错,虽然做的东西和我不大相关,觉得看看还是有好处的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新评论

阅读排行榜

评论排行榜