Comment puis-je diviser mon espace shell en deux parties?

1

Sur ma coque, j'utilise le alias p ls -lt; pwd pour accélérer les choses en changeant d'annuaire et en obtenant leurs listes.

Les choses pourraient être beaucoup plus faciles si je pouvais diviser l’espace disponible sur ma console en deux parties, de sorte que l’invite se trouve dans la partie inférieure et que la partie supérieure affiche toujours la liste du répertoire en cours deuxième partie).

alt text

La partie supérieure doit être dynamique en ce sens que chaque fois que je change de répertoire à l’aide de l’invite située dans la partie inférieure, il convient de répertorier le répertoire actuel dans la moitié supérieure.

Y at-il un moyen (script?) Qui me permet de faire quelque chose comme ça?

Lazer
la source

Réponses:

1

Commandant de minuit fera en quelque sorte ce que vous voulez. Il donne un navigateur de fichier à deux volets en haut et une invite semblable à un shell en bas. Je recommanderais de définir l'option & gt; Configuration & gt; Pause après exécution & gt; Il en va toujours ainsi lorsque vous tapez une commande, le résultat est affiché avant que l'écran du navigateur de fichiers ne s'affiche à nouveau. Malheureusement, il n’a pas de fenêtre shell plus grande pour la moitié inférieure que vous le souhaitez.

Dennis Williamson
la source
0

Si vous voulez que la partie supérieure apparaisse tout le temps, vous pouvez utiliser écran ou tmux . Bien que ce ne soit pas leur fonctionnalité la plus utilisée, ces deux programmes prennent en charge le fractionnement d’une fenêtre en deux. Vous pouvez donc exécuter votre shell interactif dans la fenêtre inférieure et utiliser un alias pour cd cela va et affiche des choses dans la fenêtre supérieure. Un moyen facile de faire ce dernier bit consiste à créer un canal nommé ( mkfifo ~/.window-pipe-$PPID$PPID est l'id de processus du screen ou tmux processus) et exécutez un script comme celui-ci dans la fenêtre supérieure (syntaxe sh, adaptez csh si vous devez):

while read -r dir; do
  printf '\033[?9l%s' "$dir"
  cd "$dir"
  ls -lt
done <~/.window-pipe-$PPID

Vous voudrez peut-être tronquer la sortie de ls pour tenir dans la fenêtre, car il est probablement plus utile de garder les premières lignes que les dernières lignes si elles ne correspondent pas. Dans la fenêtre du bas, le cd remplacement serait une fonction comme (encore une fois, j'utilise la syntaxe sh):

cd () {
  builtin cd "$@" && pwd >~/.window-pipe-$PPID
}
Gilles
la source
0

Passer à un gestionnaire de fichiers en ligne de commande serait probablement une solution beaucoup plus simple et plus nette que de créer quelque chose de personnalisé, car l'idée a déjà été mise en œuvre. Il existe une myriade d’entre eux où sont tous hautement configurables, tels que CLEX :

alt text

John T
la source