web-dev-qa-db-fra.com

Dans Bash ou ZSH, y a-t-il un opposé à la commande `clear`?

Taper clear dans un Shell crée un tas de nouvelles lignes jusqu'à ce que l'historique de sortie ci-dessus soit presque masqué. Existe-t-il une commande ou une méthode qui fait le contraire de clear? Cela déplace essentiellement votre ligne actuelle que vous modifiez vers le milieu ou le bas de l'écran, affichant la dernière histoire de votre Shell au-dessus?

La trame de fond à cela, c'est que j'essaie de mapper une clé dans le vi-mode de bash/zsh pour afficher l'historique précédent ou la sortie précédente, mais sans perdre la commande actuelle que je modifie.

1
Akiva

La navigation dans l'historique de sortie n'est pas le travail du Shell (Bash/ZSH); ils ne gardent pas trace de la sortie produite par les commandes qu'ils contiennent. L'historique des sorties est géré par le terminal, qui est aujourd'hui généralement le terminal GNOME ou xterm. Ces deux prennent en charge au moins ces raccourcis, comme mentionné par @kos :

  • Shift-Page Up déplacer au plus un $LINES up
  • Shift-Page Down déplacer au plus un $LINES vers le bas
1
l0b0

Dans bash, vous pouvez lier une clé à une commande et ainsi, par exemple, répertorier l'historique des commandes pendant que vous êtes en train de taper une nouvelle commande. Après l'exécution de la commande, votre ligne d'entrée est restaurée au point où vous vous trouviez à l'origine.

Par exemple, donnez la commande

bind -x '"\C-a": history'

Alors controla va vider l'histoire.

Pour la permanence, ajoutez à votre fichier ~/.inputc

"\C-a": history

Vous pouvez remplacer history par n'importe quelle commande.


Dans zsh, vous avez un mécanisme intégré qui pousse le tampon d'entrée actuel sur une pile et vous permet de donner une nouvelle commande. Une fois terminé, le tampon d'entrée précédent est restauré. Vous tapez donc: escapeq history return.

Si vous préférez, vous pouvez configurer une liaison de widget zsh pour afficher l'historique ci-dessous le tampon d'entrée actuel que vous tapez. Par exemple, pour controla à nouveau (dans votre ~/.zshrc):

zle -N myhistory  
myhistory(){zle -M "$(history)";}
bindkey '^a' myhistory

Pour conserver l'historique de sortie, vous pouvez utiliser screen -L qui conserve un journal de toutes les sorties dans un fichier, que vous pouvez suivre avec une liaison comme ci-dessus. Vous voudrez peut-être filtrer par cat -e ou quelque chose, car le fichier inclut toutes les séquences d'échappement de terminal.

1
meuh