Gardez bash input sur la ligne supérieure de l'écran

Je voudrais garder l'invite de command bash input en haut de l'écran afin que les sorties des anciennes commands soient poussées vers le bas plutôt que vers le haut.

Comment puis-je atteindre cet objective?

Ajoutez ces lignes à votre .bashrc :

 prompt_on_top() { tput cup 0 0 tput el tput el1 } pre_cmd() { if [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] || [ -n "$COMP_LINE" ]; then return fi printf "\33[2J" } PROMPT_COMMAND="prompt_on_top" trap 'pre_cmd' DEBUG 

bash ont PROMPT_COMMAND , qui maintiennent la command sera exécutée avant l'invite de bash show. Ici nous l'avons configuré pour la fonction prompt_on_top , qui utilise tput pour placer le slider en haut de l'écran.

bash également un moyen d'exécuter une command avant d'exécuter n'importe quelle command, en utilisant trap pour gérer le signal DEBUG . Ici nous l'avons mis en fonction pre_cmd , ce qui pre_cmd ancien écran, et ne fera rien si nous avons complété ( COMP_LINE n'est pas vide) ou exécuter la command dans BASH_PROMPT .


Il y a une limite avec cette approche, si la sortie de la command est trop longue et rentre dans un écran, la sortie sera prompt_on_top par l'action prompt_on_top . Dans ce cas, vous devez diriger la sortie vers un pager pour lire la totalité de la sortie.