2011-12-01 16 views
5

Sto cercando un modo per limitare la quantità di output prodotto da tutti i programmi della riga di comando in Linux e preferibilmente dirmi quando è limitato.Uscita limite di tutti i comandi Linux

Sto lavorando su un server che ha un ritardo sul display. Occasionalmente eseguirò accidentalmente un comando che emette una grande quantità di testo sul terminale, come cat su un file di grandi dimensioni o ls su una directory con molti file. Devo quindi aspettare un po 'per tutti gli output da stampare sul terminale.

Quindi esiste un modo per reindirizzare automaticamente tutto l'output in un comando come head o wc per evitare che venga stampato troppo output sul terminale?

risposta

3

non so in merito al caso generale, ma per ogni comando noto (cat, ls, trovano?) Si potrebbe fare la seguente:

  • hardlink una copia per l'utilità esistente
  • scrivere una piccola funzione bash che chiama l'utility e pipe a capo (o wc o qualsiasi altra cosa)
  • alias il nome dell'utilità per chiamare la funzione.

Quindi, in questo senso (assolutamente non testati):

$ ln `which cat` ~/bin/old_cat 

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

alias cat=trunc_cat 
+0

Sì, avevo pensato a qualcosa del genere, ma speravo in qualcosa di più generale – daniel

0

Supponendo che si sta lavorando su una connessione di rete, come ssh, in un server remoto quindi provare il piping dell'output del comando a less. In questo modo puoi gestire e navigare meglio l'output dal programma sul server. Usa "j" e "k" per spostarti su e giù per riga e "ctrl-u" e "ctrl-d" per spostare 1/2 pagina su e giù. Quando lo fai, solo il testo pertinente (cioè ciò che si adatta allo schermo) sarà trasmesso sulla rete.

+0

Stavo cercando qualcosa di più automatico di dover sempre convogliare a meno. Questo ha anche il problema di aprire "meno" per piccole quantità di output e perdere la colorizzazione per es. 'Ls'. – daniel

+0

usa meno -R per il colore. – sashang

1

Fare alias di tutti i comandi sarebbe un buon inizio. Qualcosa come

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

Forse utilizzando screen potrebbe aiutare?

+0

Io uso byobu, ma devo ancora aspettare che venga visualizzato tutto l'output. C'è qualcosa in questo che non sono a conoscenza di ciò che potrebbe aiutare? – daniel

+0

Premere Ctrl + A Esc e il terminale si bloccherà nella posizione corrente. Puoi saltare alla fine con Esc>. –

1

questo mi fa pensare al completamento di bash.

Come complete comando in bash consente di specificare gestore quando un programma non viene trovato,

che dire di scrivere il proprio gestore e chiaro $PATH, al fine di eseguire ogni comando con reindirizzamento ad un tubo di filtraggio?

# Non ho provato da solo.

Problemi correlati