Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10150
  • 博文数量: 3
  • 博客积分: 1495
  • 博客等级: 上尉
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-18 16:30
文章分类
文章存档

2011年(1)

2010年(2)

我的朋友
最近访客

分类: LINUX

2010-03-10 08:23:17

    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命令以标准输入为输入,并分割为独立的文件。

阅读(750) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:管理linux的后台运行程序

给主人留下些什么吧!~~