Effacer la sortie du terminal de la dernière commande uniquement

13

Plutôt que de faire défiler des centaines de lignes de sortie pour voir l'historique des commandes précédentes, la sortie de la dernière commande peut-elle être effacée? Par exemple, après l'exécution ls, effacez sa sortie car vous n'en avez plus besoin.

ÉDITER:

Ce n'est pas votre habitude clearou ctrl+Lopération. L'idée est de faire défiler l'historique à la recherche de la sortie d'une commande précédente, mais sans avoir à faire défiler une charge de ls, ou cat, ou de sudo apt-get installsortie à moins que je ne le veuille vraiment. Cela pourrait ressembler à ceci:

cat fileIWantToRemember
ls directoryIWantToForget
# some command that wipes the output of ls
# scroll back to see the output of cat immediately
nacnudus
la source
Voulez-vous effacer la sortie ou supprimer la commande de votre historique de commandes? Si vous souhaitez modifier l'historique de vos commandes, peut - être que ce fil répond à ce que vous recherchez?
ernie
Le terminal affiche simplement un flux de texte et en stocke dans son propre tampon interne. Il n'a aucun moyen de connaître ou de distinguer les sorties de commande. Le terminal rxvt-unicode a un interpréteur perl qui pourrait être capable d'implémenter quelque chose comme ça. Mais pour autant que je sache, ce n'est pas fait.
Keith
Il y a longtemps, j'ai utilisé un émulateur de terminal sur Mac OS X qui avait cette fonctionnalité, mais je ne me souviens plus de son nom. Mais ce n'était pas gratuit. Cependant, tout en faisant une recherche rapide sur Google, je suis tombé sur finalterm.org , qui semble essayer d'implémenter cette fonctionnalité. Cependant, "Final Term est en développement lourd et n'est ni stable ni complet!", Donc je ne l'ai pas essayé. Semble intéressant, cependant. La recherche Google, pour ce qu'elle vaut, étaitterminal emulator output folding
rici
Final Term est suffisamment développé pour plier les commandes (et beaucoup d'autres choses incroyables), et une fois qu'il y a un raccourci clavier pour le faire, le problème est résolu. Je commençais à penser que j'étais fou ...
nacnudus
1
ce n'est pas votre réponse exacte, mais dans de tels cas, pour afficher le contenu des gros fichiers, j'utilise la commande «moins» au lieu de «chat». Une autre chose est que si une commande donne un grand nombre de lignes en sortie à la console, vous pouvez l'éviter en écrivant "$ the-command | less".
Devasish

Réponses:

4

Grâce à @rici, ce comportement peut être appelé "pliage". La sortie des commandes n'est pas oubliée, mais vous pouvez la masquer jusqu'à ce que vous en ayez à nouveau besoin. Le pliage est courant dans les éditeurs de texte mais semble rare dans les émulateurs terminaux.

Final Term est un nouvel émulateur de terminal qui inclut le pliage parmi de nombreuses autres astuces fantaisistes. Attention: "Final Term est en développement lourd et n'est ni stable ni complet!" Il a été suffisamment développé pour plier mes commandes lorsque je l'ai testé, mais trop instable pour ne pas planter. Un à regarder.

nacnudus
la source
0

Je pense que vous cherchez la commande claire ...

clear

"clear" efface votre dernière commande de la vue. Vous pouvez faire défiler vers le haut dans le terminal pour le revoir si nécessaire.

Justin C.
la source
Le point est de ne pas avoir à faire défiler lorsque vous recherchez autre chose dans votre historique.
nacnudus
Voulez-vous dire que vous souhaitez supprimer la sortie de la commande? Si oui, cela peut vous aider: stackoverflow.com/questions/617182/…
phe0113
2
C'est super si je ne veux jamais voir de sortie. Je veux voir la sortie la première fois, puis l'oublier. Donc, dans l'exemple que j'ai donné, je veux inspecter la sortie de lspour une raison quelconque, mais je veux ensuite m'en débarrasser pour ne pas avoir à continuer de défiler pour trouver la sortie de cat. Évidemment, je pourrais simplement refaire cat, mais je peux imaginer vouloir conserver une séquence de commandes, et ce serait bien de ne pas avoir à les répéter toutes.
nacnudus du
0

En bash, vous pouvez appuyer sur le raccourci Ctrl + Lpour effacer l'écran, similaire à la clearcommande. ( http://ss64.com/bash/syntax-keyboard.html )

Ou, vous pouvez utiliser history | tail -3pour voir les trois dernières commandes. ( http://www.howtogeek.com/howto/44997/how-to-use-bash-history-to-improve-your-command-line-productivity/ )

phe0113
la source
Voir mon commentaire à @Justin ci-dessous, le but n'est pas d'avoir à le faire défiler lorsque vous parcourez l'histoire pour autre chose. Quelque chose comme HISTCONTROL=ignorespacedans votre deuxième lien que vous pouvez utiliser après coup serait bien.
nacnudus
Je suis un peu perdu sur ce que tu veux réaliser. Une autre pensée, dans de nombreuses consoles que j'ai utilisées, vous pouvez généralement utiliser les touches fléchées pour parcourir l'historique des commandes en bash, cela s'applique-t-il à votre situation?
phe0113
Ma modification clarifie-t-elle la question?
nacnudus
@nacnudus, oui, je comprends maintenant :)
phe0113
0

Il semble que vous souhaitiez supprimer des éléments de votre historique. Pour ce faire, vous devez d'abord activer l'écriture de l'historique à la volée plutôt que de vous déconnecter en modifiant votre ~ / .bashrc et en ajoutant:

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

Ensuite, pour supprimer des éléments, vous pouvez effectuer:

history -d offset, où décalage correspond à l'entrée d'historique que vous souhaitez supprimer

Basé sur ce fil de discussion .

ernie
la source
Cela semble le supprimer du fichier historique, ce qui est presque la bonne idée, mais peut-il l'effacer du terminal actuel?
nacnudus