Comment faire en sorte que Terminal.app sous OS X affiche le répertoire actuel dans le titre de sa fenêtre ou de son onglet?
J'utilise le shell bash.
macos
bash
terminal
terminal.app
kareman
la source
la source
Réponses:
Cela dépend de votre coquille.
Cet article affiche plusieurs méthodes.
Personnellement, j'utilise zsh, qui a une fonction pratique precmd () qui est exécutée avant chaque invite.
Bien que les autres questions énumèrent les méthodes bash, elles ont pour alias cd. Bash fournit une méthode inhérente qui enchaîne simplement l'invite.
la source
~/.profile
fichier (ou équivalent) sur la machine distante.Copier / coller dans le fichier ~ / .profile:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
Cela définira le titre de l'onglet du terminal actuel sur le nom du dossier dans lequel vous vous trouvez (PAS le chemin d'accès complet).
Alors ...
Developer/Applications/Utilities/Bluetooth/
devient =>Bluetooth
la source
A partir de Mac OS X Lion 10.7, Terminal dispose d'une séquence d'échappement explicite pour la configuration du répertoire de travail, que Terminal affiche à l'aide de l'icône "proxy" de la fenêtre standard. Cela vous permet de cliquer sur cette touche pour voir le chemin, de la révéler dans le Finder ou de la faire glisser comme n'importe quel autre dossier. En outre, Terminal peut utiliser cette option pour créer un autre terminal dans le même répertoire et pour restaurer le répertoire de travail lors de la fermeture / du redémarrage du terminal (lorsque la reprise est activée). Il permet également la restauration de répertoires pour les groupes de fenêtres.
Il s'agit de la même séquence d'échappement de commande du système d'exploitation (OSC) que pour les titres de fenêtre et d'onglet, mais avec le premier paramètre défini sur 7. La valeur doit être une URL "fichier:", qui active les caractères spéciaux codés en pourcentage afin de pouvoir la gérer. tous les chemins valides. Vous devez également inclure le nom d’hôte afin que Terminal puisse déterminer s’il s’agit d’un répertoire local; Terminal évitera de l’utiliser comme répertoire de travail actuel s’il provient d’un hôte différent.
Sur une note connexe, Terminal prend également en charge la définition du "fichier représenté" à l'aide de la séquence d'échappement OSC avec un paramètre de 6. Si défini, l'icône du proxy affichera ceci au lieu du répertoire de travail. Par exemple, j'ai emacs et moins configuré pour refléter le fichier / tampon actuellement affiché dans l'icône de proxy. Cela permet à ces programmes basés sur les terminaux d'être mieux intégrés au système d'exploitation environnant.
Les comportements de répertoire de travail sont activés par défaut pour bash (le shell par défaut sous Mac OS X). Voir / etc / bashrc pour le code correspondant.
Il convient également de mentionner que Lion Terminal prend désormais en charge la définition du titre de l’onglet indépendamment du titre de la fenêtre à l’aide de la séquence d’échappement OSC.
la source
update_terminal_cwd
fonction définira l'icône du proxy dans le répertoire de travail actuel. Par défaut$PROMPT_COMMAND
estupdate_terminal_cwd
.Outre la recommandation d'utiliser la séquence d'échappement Commande du système d'exploitation spécifique au terminal Apple:
ESC ] Ps ; Pt BEL
oùPs
est7
etPt
est unefile:
URL; Cela vaut la peine d'ajouter que dans Mac OS X 10.11 (et probablement depuis 10.7), il existe un fichier/etc/bashrc_Apple_Terminal
(non modifiable sous 10.11) qui définit ce qui convientupdate_terminal_cwd()
comme (sans les commentaires):Vous pouvez également l'utiliser sur vos boîtes distantes, au cas où vous envisagiez de le faire, puis vous effleurer l'encodage correct de l'URL du fichier dans bash.
Et si vous modifiez
PROMPT_COMMAND
vous-même.bash_profile
ou si.bashrc
vous oubliez d’appeler cela. Dans le même fichier, ils montrent un exemple de chaînage un peu meilleur avec:Personnellement, dans mon
.bash_profile
je voulais ajouter l'invite git donc j'ai fait ceci:la source
Les solutions Bash impliquant PS1 et PROMPT_COMMAND échouent si le répertoire contient des caractères Unicode (au moins sur Snow Leopard). La meilleure solution que je pouvais trouver était de faire l'équivalent de
Malheureusement, cela ne fonctionne pas directement. J'ai donc défini une fonction shell pour effectuer l'
tr
appel:Cela fonctionne bien pour les accents latins, qui seront en Unicode NFD (les accents disparaîtront mais le caractère latin sous-jacent restera).
Malheureusement, cela échouera complètement pour des choses comme le chinois.
la source
En supposant que vous utilisiez le terminal MAC par défaut, vous pouvez utiliser le suivant dans le fichier .profile, car "set_prompt" peut à lui seul vous envoyer au dossier racine lorsque vous ouvrez un nouvel onglet:
la source
Entrez ceci dans votre fichier ~ / .profile ou équivalent:
La première ligne contient deux caractères spéciaux qui ne peuvent pas être copiés / collés, mais vous pouvez télécharger le texte à partir d’ici: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh .
la source
echo
utiliserprintf
, ce qui vous permet d'exprimer ces caractères (ESC et BEL / Control-G) avec des séquences d'échappement:printf '\e]0;$@\a"