44 votes

Ouvrir un nouvel onglet dans le même répertoire

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.

67voto

Liably Points 13

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

iTerm2 Preferences panel update to reuse previous session directory.

C'est tout ce que vous avez à faire !

23voto

Tim Points 1682

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 :

5voto

mjspier Points 181

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)"

1voto

Henno Points 659

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...

0voto

user2013 Points 2301

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 )

SistemesEz.com

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.

Powered by:

X