Cancella solo l'uscita terminale dell'ultimo comando


13

Invece di scorrere oltre centinaia di righe di output per visualizzare la cronologia dei comandi precedente, è possibile cancellare l'output dell'ultimo comando? Ad esempio, dopo l'esecuzione ls, cancellane l'output perché non ti serve più.

MODIFICARE:

Questo non è il solito clearo ctrl+Lil funzionamento. L'idea è di scorrere indietro nella cronologia cercando l'output di un comando precedente, ma senza dover scorrere oltre un carico di ls, o cat, o sudo apt-get installoutput a meno che non lo voglia davvero. Potrebbe assomigliare a questo:

cat fileIWantToRemember
ls directoryIWantToForget
# some command that wipes the output of ls
# scroll back to see the output of cat immediately

Intendi cancellare l'output o rimuovere il comando dalla cronologia dei comandi? Se vuoi modificare la cronologia dei tuoi comandi, forse questa discussione è indirizzata a ciò che stai cercando?
Ernie,

Il terminale visualizza solo un flusso di testo e ne memorizza alcuni nel proprio buffer interno. Non ha modo di sapere o discriminare tra l'output del comando. Il terminale rxvt-unicode ha un interprete perl che potrebbe essere in grado di implementare qualcosa del genere. Ma per quanto ne so non è fatto.
Keith,

Molto tempo fa, ho usato un emulatore di terminale su Mac OS X che aveva questa funzione, ma non ricordo più come si chiamava. Non era gratuito, comunque. Tuttavia, mentre facevo una rapida ricerca su Google, mi sono imbattuto in finalterm.org , che sembra stia cercando di implementare quella funzione. Tuttavia, "Final Term è in forte sviluppo e né stabile né completo!", Quindi non l'ho provato. Sembra interessante, però. La ricerca su Google, per quello che vale, è stataterminal emulator output folding
rici,

Final Term è abbastanza sviluppato per piegare i comandi (e molte altre cose incredibili), e una volta che c'è una scorciatoia da tastiera per farlo, il problema è stato risolto. Stavo iniziando a pensare di essere pazzo ...
nacnudus,

1
non è la risposta esatta, ma in questi casi per visualizzare il contenuto di file di grandi dimensioni utilizzo il comando "less" anziché "cat". Un'altra cosa è che se un comando fornisce un numero enorme di righe come output per console, puoi evitarlo scrivendo "$ the-command | less".
Devasish

Risposte:


4

Grazie a @rici, questo comportamento può essere chiamato "pieghevole". L'output dei comandi non è dimenticato, ma puoi nasconderlo fino a quando non ti serve di nuovo. La piegatura è comune negli editor di testo ma sembra essere rara negli emulatori terminali.

Final Term è un nuovo emulatore di terminale che include il fold tra molti altri trucchi di fantasia. Attenzione: "Final Term è in forte sviluppo e né stabile né completo!" Era abbastanza sviluppato da piegare i miei comandi quando l'ho provato, ma troppo instabile per non andare in crash. Uno da guardare.


0

Penso che tu stia cercando il comando chiaro ...

clear

"cancella" cancella l'ultimo comando dalla vista. Puoi scorrere verso l'alto nel terminale per vederlo di nuovo, se necessario.


Il punto è non doverlo scorrere quando si guarda nella storia per qualcos'altro.
nacnudus,

Vuoi dire che vuoi sopprimere l'output dal comando? Se sì, questo può aiutare: stackoverflow.com/questions/617182/...
phe0113

2
È fantastico se non voglio mai vedere l'output. Voglio vedere l'output la prima volta e poi dimenticarlo. Quindi nell'esempio che ho dato, voglio ispezionare l'output di lsper qualche motivo, ma poi voglio liberarmene in modo da non dover continuare a scorrere oltre per trovare l'output di cat. Ovviamente potrei solo fare di nuovo cat, ma posso immaginare di voler mantenere una sequenza di comandi, e sarebbe bello non doverli ripetere tutti.
nacnudus,

0

In bash, puoi premere il collegamento Ctrl + Lper cancellare lo schermo, in modo simile al clearcomando. ( http://ss64.com/bash/syntax-keyboard.html )

Oppure puoi usare history | tail -3per vedere gli ultimi tre comandi. ( http://www.howtogeek.com/howto/44997/how-to-use-bash-history-to-improve-your-command-line-productivity/ )


Vedi il mio commento a @Justin in basso, il punto è non doverlo scorrere quando si guarda nella storia per qualcos'altro. Qualcosa come HISTCONTROL=ignorespacenel secondo link che puoi usare dopo il fatto sarebbe buono.
nacnudus,

Mi sono perso un po 'su ciò che vuoi ottenere. Un altro pensiero, in molte console che ho usato, di solito puoi usare i tasti freccia per sfogliare la cronologia dei comandi in bash, questo si applica alla tua situazione?
phe0113,

La mia modifica chiarisce la domanda?
nacnudus,

@nacnudus, sì, capisco adesso :)
phe0113

0

Sembra che tu voglia rimuovere elementi dalla tua cronologia. Per fare ciò, devi prima abilitare la scrittura della cronologia al volo, anziché al logout modificando il tuo ~ / .bashrc e aggiungendo:

shopt -s histappend; export PROMPT_COMMAND='history -a';'

Quindi, per eliminare elementi puoi fare:

history -d offset, dove offset è la voce della cronologia che si desidera eliminare

Basato su questo thread del forum .


Questo sembra eliminarlo dal file della cronologia, che è quasi l'idea giusta, ma può cancellarlo dal terminale corrente?
nacnudus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.