J'utilise un gestionnaire de fenêtres en mosaïque et je suis passé de gnome-terminal
plusieurs onglets à plusieurs urxvt
instances gérées par le gestionnaire de fenêtres. L'une des fonctionnalités qui me manque est la possibilité d'ouvrir un nouveau terminal qui revient par défaut au répertoire de travail du dernier.
En bref: j'ai besoin d'un moyen d'ouvrir un nouvel urxvt (bash) qui par défaut est $ PWD du dernier utilisé.
La seule solution qui me vient à l'esprit est d'enregistrer le chemin actuel sur chacun cd
avec quelque chose comme ceci:
echo $PWD > ~/.last_dir
et restaurez le chemin sur le nouveau terminal de cette façon:
cd `cat ~/.last_dir`
Je peux trouver la deuxième commande .bashrc
mais je ne sais pas comment exécuter la première à chaque changement de répertoire :)
Toute solution plus simple qui n'implique screen
ni tmux
utilisation n'est pas la bienvenue.
la source
tabbed
extension " " perl deurxvt
?Réponses:
Je vois trois solutions utiliser
.last_dir
. Vous pouvez placerecho $PWD > ~/.last_dir
soit:Dans une fonction spéciale qui serait un wrapper pour
cd
:Placez-le dans votre
~/.bashrc
, puis utilisezcd_
au lieu de cd chaque fois que vous souhaitez stocker votre nouveau répertoire de travail.Dans votre
$PROMPT_COMMAND
( non recommandé ):Vous pouvez le tester directement depuis le terminal ou le placer dans
~/.bashrc
. Cette solution, cependant, déclenche une écriture sur le disque chaque fois que l'invite apparaît, ce qui pourrait causer des problèmes - mais d'un autre côté,.last_dir
contiendrait le répertoire actuel, peu importe comment vous y êtes arrivé.Dans un script d'extension perl personnalisé pour
rxvt
. Je n'en ai jamais créé moi-même, mais vous pouvez trouver pas mal d'exemples sur le web.la source
PROMPT_COMMAND
, l'une des variables d'environnement les plus maltraitées de tous les temps$PWD
n'a pas été cité.) Permettez-moi de corriger cela ... Là. Cela devrait faire l'affaire.J'utilise actuellement cette version de la solution n ° 1
à l'intérieur de mon
.zshrc
la source
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXIT
auto_cd
fonctionnalité de zsh. Il s'avère que nous pouvons utiliser un crochet fourni par zsh: gist.github.com/jonleighton/1f0b96b49247a07dbaa30fbbe70b34f7C'est en fait assez banal; si vous exécutez à
urxvt
partir de votreurxvt
fenêtre existante , la nouvelle fenêtre sera dans le même répertoire. J'ai pris undup
aliasurxvt &
pour cette raison. Si vous voulez qu'il soit lié à un raccourci clavier, vous pouvez utiliser labind
commande de bash . Par exemple, pour le lier à F1:la source
( urxvt & ) &>/dev/null
au lieu de simplement un arrière-plan.Ajoutez simplement
. /etc/profile.d/vte.sh
votre~/.bashrc
pour obtenir la même fonctionnalitéla source
Bien sûr, c'est une approche de travail pour modifier
cd
le comportement de, mais je voudrais montrer une solution plus simple. Dans le man bash (1), j'ai trouvé que si un bash interactif se termine, il s'exécute~/.bash_logout
s'il existe. Ainsi, au lieu de stocker le chemin à chaque appel ducd
dernier chemin, vous pouvez l'enregistrer à la sortie.Mon
~/.bash_logout
est très simple:Et quelque part dans mon
.bashrc
j'ai placé cette ligne:la source
.bash_logout
ne fonctionne qu'à lalogin shells
sortie, ce n'est pas toujours le cas.bash
sortie avec:trap "echo $PWD > ~/.lastdir" EXIT"
trap
approche est aussi sympa, j'aime bien!Très souvent, j'utilise plusieurs fenêtres de terminal à la fois, chacune avec plusieurs onglets. Par exemple: une fenêtre pour les onglets de développement de code source, une fenêtre pour les fichiers latex, une fenêtre pour l'exécution et le scriptage R, etc. (Cela fonctionnait dans le passé, mais avec la nouvelle version de gnome, ce n'est pas le cas). La solution sale suivante fonctionne bien pour moi. J'ai mis cela en .bashrc.
la source