Supposons que vous vous trouviez dans le dossier /très/cool/et/profondément/enchevêtré . Et vous voulez ouvrir un nouvel onglet de terminal dans le même dossier.
Comment feriez-vous ?
J'utilise Mac OS et Zsh.
Supposons que vous vous trouviez dans le dossier /très/cool/et/profondément/enchevêtré . Et vous voulez ouvrir un nouvel onglet de terminal dans le même dossier.
Comment feriez-vous ?
J'utilise Mac OS et Zsh.
Utilice Oh-My-Zsh et ajoutez le plugin 'osx' dans votre ~/.zshrc comme :
plugins=(osx)
Si vous utilisez l'application Terminal d'OSX, vous devez également ajouter l'option terminalapp
également : crédito
plugins=(osx terminalapp)
Si vous utilisez iTerm, vous devez définir une option de configuration ( Notez que vous n'avez peut-être pas besoin des plugins zsh pour que cela fonctionne. ) : crédito
Préférences > Profils > Défaut > Général > Répertoire de travail > Option Réutiliser le répertoire de la session précédente
C'est tout ce que vous avez à faire !
Une autre option disponible dans Mac OS X Lion consiste à utiliser la fonction intégrée. Elle utilise des "séquences d'échappement" pour trouver le répertoire actuel. Pour moi, cela fonctionne si j'utilise ces commandes dans mon fichier .zshrc :
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
il est également possible d'utiliser PS1
(pour Bash, de ce wiki ) :
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
donde \e]2;
est la séquence d'échappement qui permet d'imprimer des éléments dans la barre de titre. Il s'agit d'une semble que Terminal.app y puise ses informations.
Plus d'informations :
Il s'agit d'une version très simple que j'ai utilisée dans bash et qui fonctionne également dans zsh. Elle enregistre le dossier courant dans un fichier, après chaque commande (ça ne fait pas trop mal IMO) et ouvre un nouveau terminal dans le dossier courant sauvegardé.
ajouter ce qui suit à .zshrc
# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"
gdirs semble être un moyen de presque le faire : nouvel onglet, puis gdirs pour sélectionner le répertoire profond et voilà. Ma première idée était de faire en sorte que la pile de répertoires soit partagée entre tous les onglets et de faire cd ~1 après le nouvel onglet, mais je ne trouve pas comment faire, car il semble que chaque instance de zsh garde la sienne. Le partage de l'historique se fait via un fichier commun, donc peut-être que cela pourrait être fait ici aussi...
Voici comment procéder en bash.
Ce Shell Shell dira (littéralement, en utilisant Applescript) à Terminal.app d'ouvrir un nouvel onglet puis de passer au répertoire courant :
#!/bin/bash
osascript -e 'tell application "Terminal"' \
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \
-e "do script with command \"cd `pwd`;clear\" in selected tab of the front window" \
-e 'end tell' &> /dev/null
placer le Shell Shell ci-dessus dans un répertoire dans votre $PATH
(c'est-à-dire /usr/local/bin) et assurez-vous qu'il est exécutable :
$ chmod +x /usr/local/bin/nt
( source )
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.