2011-12-01 41 views
5

Estoy buscando una manera de limitar la cantidad de salida producida por todos los programas de línea de comandos en Linux, y preferiblemente dime cuándo es limitada.Limitar la salida de todos los comandos de Linux

Estoy trabajando en un servidor que tiene un retraso en la pantalla. Ocasionalmente, ejecutaré accidentalmente un comando que genera una gran cantidad de texto en el terminal, como cat en un archivo grande o ls en un directorio con muchos archivos. Luego tengo que esperar un tiempo para que se imprima toda la salida en la terminal.

Entonces, ¿hay alguna forma de canalizar automáticamente todas las salidas en un comando como head o wc para evitar que se tenga que imprimir demasiada salida al terminal?

Respuesta

3

No sé sobre el caso general, pero para cada comando conocido (cat, ls, encontraron?) que podía hacer lo siguiente:

  • HardLink una copia de la utilidad existente
  • escribe una pequeña función bash que llama a la utilidad y las tuberías a la cabeza (o wc, o lo que sea)
  • alias el nombre de la utilidad para llamar a su función.

Así lo largo de estas líneas (totalmente no probado):

$ ln `which cat` ~/bin/old_cat 

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

alias cat=trunc_cat 
+0

Sí, había pensado en algo así, pero esperaba algo más general – daniel

0

Suponiendo que está trabajando en una conexión de red, como ssh, en un servidor remoto luego tratar de tubería de la salida de la orden para less. De esta forma, puede administrar y navegar mejor por la salida del programa en el servidor. Use 'j' y 'k' para subir y bajar por línea y 'ctrl-u' y 'ctrl-d' para mover 1/2 página hacia arriba y hacia abajo. Cuando hace esto, solo el texto relevante (es decir, lo que se ajusta en la pantalla) se transmitirá a través de la red.

+0

Estaba buscando algo más automático que tener que conectar siempre a menos. Esto también tiene el problema de abrir 'less' para pequeñas cantidades de salida y perder colorización, por ej. 'ls'. – daniel

+0

use menos -R para el color. – sashang

1

Hacer alias de todos sus comandos sería un buen comienzo. Algo como

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

Tal vez el uso de screen podría ayudar?

+0

Yo uso byobu, aún así tengo que esperar a que se muestren todos los resultados. ¿Hay algo en esto que desconozco que ayudaría? – daniel

+0

Presione Ctrl + A Esc y el terminal se congelará en la ubicación actual. Puede saltear hasta el final con Esc>. –

1

esto me hace pensar en completar bash.

Como complete de comandos en bash le permite especificar manejador cuando no se encuentra un programa,

¿qué pasa con escribir su propio controlador y claro $PATH, con el fin de ejecutar todos los comandos de redirección a un tubo de filtrado?

#No lo intenté yo mismo.

Cuestiones relacionadas