2011-12-01 132 views
5

我正在寻找一种方法来限制Linux中所有命令行程序产生的输出量,并且最好告诉我它何时受到限制。限制所有Linux命令的输出

我正在处理显示器上有滞后的服务器。偶尔我会意外地运行一个命令,它会向终端输出大量文本,如大文件上的cat或包含许多文件的目录上的ls。然后我必须等待所有输出打印到终端。

那么有没有一种方法可以自动将所有输出传输到像headwc这样的命令中,以防止输出太多而不得不打印到终端?

回答

3

我不知道一般情况下,但每个知名的命令(猫,LS,找到?) 你可以做到以下几点:

  • 硬连接复制到现有工具
  • 编写一个小小的bash函数,用于调用实用程序和管道头(或wc,或其他)
  • 别名调用函数的实用程序的名称。

所以沿着这些线路(完全未经测试):

$ ln `which cat` ~/bin/old_cat 

function trunc_cat() { 
    `old_cat [email protected] | head -n 100` 
} 

alias cat=trunc_cat 
+0

是的我曾想过类似的东西,但希望有更一般的东西 – daniel

0

假设你正在通过网络连接,如ssh,到远程服务器,然后尝试命令的输出管道,以less。这样您就可以更好地管理和浏览服务器上程序的输出。使用'j'和'k'每行上下移动,'ctrl-u'和'ctrl-d'上下移动1/2页。当你这样做时,只有相关的文本(即屏幕上的内容)将通过网络传输。

+0

我一直在寻找更自动化的东西,而不必总是把管道变得更少。这也存在少量产量开放“少”和失色的问题。 'ls'。 – daniel

+0

使用少于-R的颜色。 – sashang

1

制作所有命令的别名将是一个好的开始。像

alias lm="ls -al | more" 
alias cam="cat [email protected] | more" 
1

也许使用screen可以帮助吗?

+0

我使用byobu,我仍然必须等待所有的输出显示。有没有什么在这我不知道这会有所帮助? – daniel

+0

按下Ctrl + A Esc键,终端将冻结在当前位置。您可以使用Esc>跳到最后。 –

1

这让我想到了bash完成。

由于complete命令在bash让你当找不到程序指定的处理程序,

怎么样写自己的处理程序,明确$PATH,为了与重定向到执行的每一个命令来过滤管?

#Did不要自己尝试。