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.