五大非常见linux命令:

 

      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
<&lt;&lt;&lt;&lt;&lt;&lt; dog
.

pstree

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

linux 几个小技巧_休闲

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