Sous un shell (Bash ou autre). Je suis dans un repertoire du genre
/home/moi/un/chemin/pas/simple
Je fais
cd /un/chemin/long/
(en une commande)
existe t'il une commande du genre
cd répéretoire précédant?
(Comme le back d'un navigateur).
Le cd ~ permet de revenir rapidement dans /home/moi mais
pour revenir dans le répertoire précédant?
Si je fais cd .. je me retrouve dans /home/moi/rep1/
Et avec "cd -", tu vas aller où ?
Dans le répertoire home de l'user
si je suis dans /home/moi/rep1/rep2/rep3
en faisant cd - je me retrouve dans /home/moi
Et en faisant "cd " tout court on se retrouve aussi dans /home/moi
en faisant cd .. dans /home/moi/rep1/rep2
Il parle bien de répertoire précédent dans le post.
jj.retorre
lunix disait le 06/13/12 que :
Le 13/06/2012 14:21, Francois Lafont a écrit :
Le 13/06/2012 14:15, lunix a écrit :
Le 12/06/2012 18:06, Olivier Miakinen a écrit :
Le 12/06/2012 18:01, Tanguy Briançon a écrit :
existe t'il une commande du genre cd répertoire précédant?
cd -
Je fais toujours cd ..
Ça c'est pour le répertoire "parent". Ce n'est pas forcément la même chose que le répertoire "précédent", qui est l'avant dernier répertoire dans lequel se trouvait l'utilisateur.
cd ~ cd /etc cd - # « cd .. » ne donnera pas la même chose.
En faisant cd .. ça me ramène toujours dans le répertoire précédent.
cd - ramène dans le répertoire de l'user chez moi.
Il parle du répertoire précédent.
Répertoire précédent fait référence à un ordre. Précédent dans l'ordre chronologique n'est en général pas le même que le précédent dans l'arborescence (ordre hiérarchique). Je pense que l'initiateur du fil voulait parler de l'ordre chronologique. En tout cas, ça a été compris comme ça.
-- JJR
lunix <lunix@none> disait le 06/13/12 que :
Le 13/06/2012 14:21, Francois Lafont a écrit :
Le 13/06/2012 14:15, lunix a écrit :
Le 12/06/2012 18:06, Olivier Miakinen a écrit :
Le 12/06/2012 18:01, Tanguy Briançon a écrit :
existe t'il une commande du genre
cd répertoire précédant?
cd -
Je fais toujours cd ..
Ça c'est pour le répertoire "parent". Ce n'est pas forcément la même
chose que le répertoire "précédent", qui est l'avant dernier répertoire
dans lequel se trouvait l'utilisateur.
cd ~
cd /etc
cd - # « cd .. » ne donnera pas la même chose.
En faisant cd .. ça me ramène toujours dans le répertoire précédent.
cd - ramène dans le répertoire de l'user chez moi.
Il parle du répertoire précédent.
Répertoire précédent fait référence à un ordre.
Précédent dans l'ordre chronologique n'est en général pas le même que le
précédent dans l'arborescence (ordre hiérarchique).
Je pense que l'initiateur du fil voulait parler de l'ordre
chronologique. En tout cas, ça a été compris comme ça.
existe t'il une commande du genre cd répertoire précédant?
cd -
Je fais toujours cd ..
Ça c'est pour le répertoire "parent". Ce n'est pas forcément la même chose que le répertoire "précédent", qui est l'avant dernier répertoire dans lequel se trouvait l'utilisateur.
cd ~ cd /etc cd - # « cd .. » ne donnera pas la même chose.
En faisant cd .. ça me ramène toujours dans le répertoire précédent.
cd - ramène dans le répertoire de l'user chez moi.
Il parle du répertoire précédent.
Répertoire précédent fait référence à un ordre. Précédent dans l'ordre chronologique n'est en général pas le même que le précédent dans l'arborescence (ordre hiérarchique). Je pense que l'initiateur du fil voulait parler de l'ordre chronologique. En tout cas, ça a été compris comme ça.
-- JJR
lunix
Le 13/06/2012 15:05, JJ. Rétorré a écrit :
Répertoire précédent fait référence à un ordre. Précédent dans l'ordre chronologique n'est en général pas le même que le précédent dans l'arborescence (ordre hiérarchique). Je pense que l'initiateur du fil voulait parler de l'ordre chronologique. En tout cas, ça a été compris comme ça.
je suis dans un /home/moi/rep1/rep2/rep3
je fais "cd .." je me retrouve dans /home/moi/rep1/rep2
pour aller a /home/moi/rep1 direct il faut faire "cd /home/moi/rep1"
Il parlait d'une commande qui ramène au répertoire précédent avec une commande comme cd ~ qui ramène au /home/moi
Répertoire précédent il y a qu'une seule signification,le répertoire juste avant ou on était,il dit l'exemple avec le back du navigateur pour revenir une page en arrière.
Le 13/06/2012 15:05, JJ. Rétorré a écrit :
Répertoire précédent fait référence à un ordre.
Précédent dans l'ordre chronologique n'est en général pas le même que le
précédent dans l'arborescence (ordre hiérarchique).
Je pense que l'initiateur du fil voulait parler de l'ordre
chronologique. En tout cas, ça a été compris comme ça.
je suis dans un /home/moi/rep1/rep2/rep3
je fais "cd .." je me retrouve dans /home/moi/rep1/rep2
pour aller a /home/moi/rep1 direct il faut faire "cd /home/moi/rep1"
Il parlait d'une commande qui ramène au répertoire précédent avec une
commande comme cd ~ qui ramène au /home/moi
Répertoire précédent il y a qu'une seule signification,le répertoire
juste avant ou on était,il dit l'exemple avec le back du navigateur pour
revenir une page en arrière.
Répertoire précédent fait référence à un ordre. Précédent dans l'ordre chronologique n'est en général pas le même que le précédent dans l'arborescence (ordre hiérarchique). Je pense que l'initiateur du fil voulait parler de l'ordre chronologique. En tout cas, ça a été compris comme ça.
je suis dans un /home/moi/rep1/rep2/rep3
je fais "cd .." je me retrouve dans /home/moi/rep1/rep2
pour aller a /home/moi/rep1 direct il faut faire "cd /home/moi/rep1"
Il parlait d'une commande qui ramène au répertoire précédent avec une commande comme cd ~ qui ramène au /home/moi
Répertoire précédent il y a qu'une seule signification,le répertoire juste avant ou on était,il dit l'exemple avec le back du navigateur pour revenir une page en arrière.
Francois Lafont
Bon, je la refais. :-)
$ cd ~/Bureau $ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau $ cd rep1/ $ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de ~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd - $ cd - $ cd - $ cd - $ cd - etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
Il est clair qu'avec :
$ cd .. $ cd .. $ cd .. $ cd .. $ cd .. etc...
Le comportement est très différent.
C'est clair maintenant ?
-- François Lafont
Bon, je la refais. :-)
$ cd ~/Bureau
$ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau
$ cd rep1/
$ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me
retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel
j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de
~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd -
$ cd -
$ cd -
$ cd -
$ cd -
etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
$ cd ~/Bureau $ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau $ cd rep1/ $ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de ~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd - $ cd - $ cd - $ cd - $ cd - etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
Il est clair qu'avec :
$ cd .. $ cd .. $ cd .. $ cd .. $ cd .. etc...
Le comportement est très différent.
C'est clair maintenant ?
-- François Lafont
lunix
Le 13/06/2012 15:50, Francois Lafont a écrit :
Bon, je la refais. :-)
$ cd ~/Bureau $ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau $ cd rep1/ $ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de ~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd - $ cd - $ cd - $ cd - $ cd - etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
Il est clair qu'avec :
$ cd .. $ cd .. $ cd .. $ cd .. $ cd .. etc...
Le comportement est très différent.
C'est clair maintenant ?
Oui je comprend ,je viens d'essayé,j'ai appris un truc mais j'ai jamais eu l’utilité de basculer dans le répertoire avant et cd - me ramené au home parce que je démarrais toujours du home.
Le 13/06/2012 15:50, Francois Lafont a écrit :
Bon, je la refais. :-)
$ cd ~/Bureau
$ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau
$ cd rep1/
$ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me
retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel
j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de
~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd -
$ cd -
$ cd -
$ cd -
$ cd -
etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
Il est clair qu'avec :
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
etc...
Le comportement est très différent.
C'est clair maintenant ?
Oui je comprend ,je viens d'essayé,j'ai appris un truc mais j'ai jamais
eu l’utilité de basculer dans le répertoire avant
et cd - me ramené au home parce que je démarrais toujours du home.
$ cd ~/Bureau $ mkdir rep1 rep2 # je crée 2 répertoires sur le bureau $ cd rep1/ $ cd ~/Bureau/rep2
Maintenant voyons deux scénarios :
* Scénario 1, je tape :
$ cd ..
Là je me retrouve dans le répertoire parent de ~/Bureau/rep2, donc je me retrouve dans ~/Bureau.
* Scénario 2, je tape :
$ cd -
Là, je me retrouve dans le répertoire précédent, ie celui dans lequel j'étais avant d'être dans ~/Bureau/rep2, et il s'avère qu'il s'agit de ~/Bureau/rep1.
Et histoire de bien enfonce le clou, dans le scénario 2, fais :
$ cd - $ cd - $ cd - $ cd - $ cd - etc...
On bascule sans arrêt de ~/Bureau/rep1 à ~/Bureau/rep2.
Il est clair qu'avec :
$ cd .. $ cd .. $ cd .. $ cd .. $ cd .. etc...
Le comportement est très différent.
C'est clair maintenant ?
Oui je comprend ,je viens d'essayé,j'ai appris un truc mais j'ai jamais eu l’utilité de basculer dans le répertoire avant et cd - me ramené au home parce que je démarrais toujours du home.
Nicolas George
Tonton Th , dans le message <4fd88a61$0$6831$, a écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ; cd - t'amène au répertoire précédent, donc /usr/lib ; cd tout court t'amène dans $HOME, soit probablement /home/truc.
Tonton Th , dans le message <4fd88a61$0$6831$426a74cc@news.free.fr>, a
écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière
fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc
dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ;
cd - t'amène au répertoire précédent, donc /usr/lib ;
cd tout court t'amène dans $HOME, soit probablement /home/truc.
Tonton Th , dans le message <4fd88a61$0$6831$, a écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ; cd - t'amène au répertoire précédent, donc /usr/lib ; cd tout court t'amène dans $HOME, soit probablement /home/truc.
lunix
Le 13/06/2012 17:07, Nicolas George a écrit :
Tonton Th , dans le message<4fd88a61$0$6831$, a écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ; cd - t'amène au répertoire précédent, donc /usr/lib ; cd tout court t'amène dans $HOME, soit probablement /home/truc.
Oui j'ai compris la différence entre répertoire parent et répertoire précédent. Je comprends vite mais il faut m'expliquer longtemps.
Ce qui ma aussi induit en erreur j'utilise tous le temps su. Je sais qu'il faut faire su - pour être dans le répertoire /root sinon on se retrouve dans le /home/user. J'étais persuadé que - représentait le home de l'utilisateur.
Le 13/06/2012 17:07, Nicolas George a écrit :
Tonton Th , dans le message<4fd88a61$0$6831$426a74cc@news.free.fr>, a
écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière
fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc
dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ;
cd - t'amène au répertoire précédent, donc /usr/lib ;
cd tout court t'amène dans $HOME, soit probablement /home/truc.
Oui j'ai compris la différence entre répertoire parent et répertoire
précédent.
Je comprends vite mais il faut m'expliquer longtemps.
Ce qui ma aussi induit en erreur j'utilise tous le temps su.
Je sais qu'il faut faire su - pour être dans le répertoire /root sinon
on se retrouve dans le /home/user.
J'étais persuadé que - représentait le home de l'utilisateur.
Tonton Th , dans le message<4fd88a61$0$6831$, a écrit :
Et avec "cd -", tu vas aller où ?
Dans le répertoire où on était juste avant qu'on change pour la dernière fois.
Si tu es dans /usr/lib et que tu fais « cd /etc/X11 », tu te retrouves donc dans /etc/X11 ; alors :
cd .. t'amène au répertoire parent, donc /etc ; cd - t'amène au répertoire précédent, donc /usr/lib ; cd tout court t'amène dans $HOME, soit probablement /home/truc.
Oui j'ai compris la différence entre répertoire parent et répertoire précédent. Je comprends vite mais il faut m'expliquer longtemps.
Ce qui ma aussi induit en erreur j'utilise tous le temps su. Je sais qu'il faut faire su - pour être dans le répertoire /root sinon on se retrouve dans le /home/user. J'étais persuadé que - représentait le home de l'utilisateur.
Damien Wyart
* lunix in fr.comp.os.linux.configuration:
Ce qui ma aussi induit en erreur j'utilise tous le temps su. Je sais qu'il faut faire su - pour être dans le répertoire /root sinon on se retrouve dans le /home/user. J'étais persuadé que - représentait le home de l'utilisateur.
$ man su
[...]
NAME su - change user ID or become superuser
SYNOPSIS su [options] [username]
[...]
Invoked without a username, su defaults to becoming the superuser. The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.
[...]
-, -l, --login Provide an environment similar to what the user would expect had the user logged in directly.
-- DW
* lunix <lunix@none> in fr.comp.os.linux.configuration:
Ce qui ma aussi induit en erreur j'utilise tous le temps su.
Je sais qu'il faut faire su - pour être dans le répertoire /root sinon
on se retrouve dans le /home/user.
J'étais persuadé que - représentait le home de l'utilisateur.
$ man su
[...]
NAME
su - change user ID or become superuser
SYNOPSIS
su [options] [username]
[...]
Invoked without a username, su defaults to becoming the superuser.
The optional argument - may be used to provide an environment
similar to what the user would expect had the user logged in
directly.
[...]
-, -l, --login
Provide an environment similar to what the user would expect
had the user logged in directly.
Ce qui ma aussi induit en erreur j'utilise tous le temps su. Je sais qu'il faut faire su - pour être dans le répertoire /root sinon on se retrouve dans le /home/user. J'étais persuadé que - représentait le home de l'utilisateur.
$ man su
[...]
NAME su - change user ID or become superuser
SYNOPSIS su [options] [username]
[...]
Invoked without a username, su defaults to becoming the superuser. The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.
[...]
-, -l, --login Provide an environment similar to what the user would expect had the user logged in directly.
-- DW
Damien Wyart
[ Crosspost et fu2 sur fr.comp.os.unix ]
> > cd -
> Et si on veut plus d'historique on change de répertoire avec pushd, > et on revient d'un pas en arrière avec popd
> par exemple (en commençant dans d)
> pushd a -> on arrive dans a > pushd b -> on arrive dans b > popd -> retour dans a > popd -> retour dans d
* Tanguy Briançon in fr.comp.os.linux.configuration:
Pour moi l'idéal serait la chose suivante: une commande: puis 2 touches (ou une combinaison de deux touches: les flèches ont d'autres fonctions) permettant de naviguer dans les derniers répertoire visités.
Je ne connais pas de moyen d'avoir exactement cela mais on peut s'en approcher (voir parmi les suggestions que je liste plus loin).
La réponse à la question initiale a été apportée, ainsi que des compléments sur pushd/popd. En relisant le fil, je me suis souvenu de quelques notes que j'avais sur le thème de l'optimisation des changements de répertoire dans un shell interactif ; je me suis dit que c'était l'occasion de les partager, ça pourra peut-être être utile au PO ou aux lurkers même si c'est presque HS...
Voici donc des compléments en vrac (certains sont génériques, d'autres spécifiques bash ou zsh, je vais essayer de le préciser) :
- si on se rend souvent dans quelques répertoires qui ne changent pas, le plus simple est sans doute d'avoir quelques alias courts "en dur" : alias _rep1Í /mon/premier/long/rep/ou/je/vais/souvent
- la variable d'environnement CDPATH, qui permet de lister des répertoires dans lesquels le shell fera une recherche lors d'un "cd rep" (changement relatif et non absolu) ; par défaut, la variable n'est pas définie et la recherche a lieu uniquement dans le répertoire courant. Utiliser CDPATH est parfois déroutant ou source d'erreurs, mais ça peut aussi faire gagner du temps.
- les options CDABLE_VARS (zsh) et cdable_vars (bash) qui permettent de stocker des chemins dans des variables du shell et de passer à cd le nom de ces variables.
- l'option AUTO_PUSHD (zsh) qui empile le chemin lors d'un cd comme si on avait utilisé pushd ; revient à faire un alias cd=pushd mais si on a en plus l'option AUTO_CD (point suivant), on peut juste taper le nom du répertoire (sans "cd") et il sera empilé.
- les options AUTO_CD (zsh) et autocd (bash) : quand on entre le nom d'un répertoire, "cd " devant est sous-entendu.
- les forme cd ~+N et cd ~-N (où N est un nombre) permet d'aller piocher directement dans la pile de répertoires, qui peut être affichée avec "dirs -v". Et avec zsh, on a en plus la complétion sur TAB et le "cycling" dans la liste (on peut même omettre le ~ donc faire "cd +<TAB>" ce qui est proche de la demande de l'OP (mais pas mappé sur une touche, et pas en bash ;-).
- Enfin (mais toujours du copieux :), une foultitude d'outils améliorant ou complétant cd existent, basés soit sur la notion de bookmarks, soit sur de la complétion "floue", soit sur des patterns, soit sur un joyeux mélange... Certains sont assez anciens, comme CDargs, qui comporte en plus une interface curses pour piocher dans la liste des répertoires. Voici une liste assez complète (!), je vous laisse faire votre marché ;)
Ceux qui sont packagés dans Debian : http://www.skamphausen.de/cgi-bin/ska/CDargs http://xd-home.sourceforge.net/xdman.html http://waterlan.home.xs4all.nl/ (outil wcd) http://github.com/joelthelion/autojump http://savannah.nongnu.org/projects/go2/
Et les autres (certains comme z sont assez populaires, il en existe une variante pour zsh) : http://github.com/rupa/j http://github.com/rupa/j2 http://github.com/rupa/z http://github.com/sjl/z-zsh http://github.com/twerth/bashmarks http://github.com/philc/fuzzycd http://github.com/MarcWeber/path-selector http://github.com/karlin/working-directory
Voilà, fin du roman pour aujourd'hui ; comme vous le voyez, il y a de quoi optimiser ce bon vieux "cd"...
-- DW
[ Crosspost et fu2 sur fr.comp.os.unix ]
> > cd -
> Et si on veut plus d'historique on change de répertoire avec pushd,
> et on revient d'un pas en arrière avec popd
> par exemple (en commençant dans d)
> pushd a -> on arrive dans a
> pushd b -> on arrive dans b
> popd -> retour dans a
> popd -> retour dans d
* Tanguy Briançon <briancon_tanguy@yahoo.fr> in fr.comp.os.linux.configuration:
Pour moi l'idéal serait la chose suivante: une commande: puis
2 touches (ou une combinaison de deux touches: les flèches ont
d'autres fonctions) permettant de naviguer dans les derniers
répertoire visités.
Je ne connais pas de moyen d'avoir exactement cela mais on peut s'en
approcher (voir parmi les suggestions que je liste plus loin).
La réponse à la question initiale a été apportée, ainsi que des
compléments sur pushd/popd. En relisant le fil, je me suis souvenu de
quelques notes que j'avais sur le thème de l'optimisation des
changements de répertoire dans un shell interactif ; je me suis dit que
c'était l'occasion de les partager, ça pourra peut-être être utile au PO
ou aux lurkers même si c'est presque HS...
Voici donc des compléments en vrac (certains sont génériques, d'autres
spécifiques bash ou zsh, je vais essayer de le préciser) :
- si on se rend souvent dans quelques répertoires qui ne changent pas,
le plus simple est sans doute d'avoir quelques alias courts "en dur" :
alias _rep1Í /mon/premier/long/rep/ou/je/vais/souvent
- la variable d'environnement CDPATH, qui permet de lister des
répertoires dans lesquels le shell fera une recherche lors d'un "cd
rep" (changement relatif et non absolu) ; par défaut, la variable
n'est pas définie et la recherche a lieu uniquement dans le répertoire
courant. Utiliser CDPATH est parfois déroutant ou source d'erreurs,
mais ça peut aussi faire gagner du temps.
- les options CDABLE_VARS (zsh) et cdable_vars (bash) qui permettent de
stocker des chemins dans des variables du shell et de passer à cd le
nom de ces variables.
- l'option AUTO_PUSHD (zsh) qui empile le chemin lors d'un cd comme si
on avait utilisé pushd ; revient à faire un alias cd=pushd mais si on
a en plus l'option AUTO_CD (point suivant), on peut juste taper le nom
du répertoire (sans "cd") et il sera empilé.
- les options AUTO_CD (zsh) et autocd (bash) : quand on entre le nom
d'un répertoire, "cd " devant est sous-entendu.
- les forme cd ~+N et cd ~-N (où N est un nombre) permet d'aller piocher
directement dans la pile de répertoires, qui peut être affichée avec
"dirs -v". Et avec zsh, on a en plus la complétion sur TAB et le
"cycling" dans la liste (on peut même omettre le ~ donc faire "cd
+<TAB>" ce qui est proche de la demande de l'OP (mais pas mappé sur
une touche, et pas en bash ;-).
- Enfin (mais toujours du copieux :), une foultitude d'outils améliorant
ou complétant cd existent, basés soit sur la notion de bookmarks, soit
sur de la complétion "floue", soit sur des patterns, soit sur un
joyeux mélange... Certains sont assez anciens, comme CDargs, qui
comporte en plus une interface curses pour piocher dans la liste des
répertoires. Voici une liste assez complète (!), je vous laisse faire
votre marché ;)
Ceux qui sont packagés dans Debian :
http://www.skamphausen.de/cgi-bin/ska/CDargs
http://xd-home.sourceforge.net/xdman.html
http://waterlan.home.xs4all.nl/ (outil wcd)
http://github.com/joelthelion/autojump
http://savannah.nongnu.org/projects/go2/
Et les autres (certains comme z sont assez populaires, il en existe
une variante pour zsh) :
http://github.com/rupa/j
http://github.com/rupa/j2
http://github.com/rupa/z
http://github.com/sjl/z-zsh
http://github.com/twerth/bashmarks
http://github.com/philc/fuzzycd
http://github.com/MarcWeber/path-selector
http://github.com/karlin/working-directory
Voilà, fin du roman pour aujourd'hui ; comme vous le voyez, il y a de
quoi optimiser ce bon vieux "cd"...
> Et si on veut plus d'historique on change de répertoire avec pushd, > et on revient d'un pas en arrière avec popd
> par exemple (en commençant dans d)
> pushd a -> on arrive dans a > pushd b -> on arrive dans b > popd -> retour dans a > popd -> retour dans d
* Tanguy Briançon in fr.comp.os.linux.configuration:
Pour moi l'idéal serait la chose suivante: une commande: puis 2 touches (ou une combinaison de deux touches: les flèches ont d'autres fonctions) permettant de naviguer dans les derniers répertoire visités.
Je ne connais pas de moyen d'avoir exactement cela mais on peut s'en approcher (voir parmi les suggestions que je liste plus loin).
La réponse à la question initiale a été apportée, ainsi que des compléments sur pushd/popd. En relisant le fil, je me suis souvenu de quelques notes que j'avais sur le thème de l'optimisation des changements de répertoire dans un shell interactif ; je me suis dit que c'était l'occasion de les partager, ça pourra peut-être être utile au PO ou aux lurkers même si c'est presque HS...
Voici donc des compléments en vrac (certains sont génériques, d'autres spécifiques bash ou zsh, je vais essayer de le préciser) :
- si on se rend souvent dans quelques répertoires qui ne changent pas, le plus simple est sans doute d'avoir quelques alias courts "en dur" : alias _rep1Í /mon/premier/long/rep/ou/je/vais/souvent
- la variable d'environnement CDPATH, qui permet de lister des répertoires dans lesquels le shell fera une recherche lors d'un "cd rep" (changement relatif et non absolu) ; par défaut, la variable n'est pas définie et la recherche a lieu uniquement dans le répertoire courant. Utiliser CDPATH est parfois déroutant ou source d'erreurs, mais ça peut aussi faire gagner du temps.
- les options CDABLE_VARS (zsh) et cdable_vars (bash) qui permettent de stocker des chemins dans des variables du shell et de passer à cd le nom de ces variables.
- l'option AUTO_PUSHD (zsh) qui empile le chemin lors d'un cd comme si on avait utilisé pushd ; revient à faire un alias cd=pushd mais si on a en plus l'option AUTO_CD (point suivant), on peut juste taper le nom du répertoire (sans "cd") et il sera empilé.
- les options AUTO_CD (zsh) et autocd (bash) : quand on entre le nom d'un répertoire, "cd " devant est sous-entendu.
- les forme cd ~+N et cd ~-N (où N est un nombre) permet d'aller piocher directement dans la pile de répertoires, qui peut être affichée avec "dirs -v". Et avec zsh, on a en plus la complétion sur TAB et le "cycling" dans la liste (on peut même omettre le ~ donc faire "cd +<TAB>" ce qui est proche de la demande de l'OP (mais pas mappé sur une touche, et pas en bash ;-).
- Enfin (mais toujours du copieux :), une foultitude d'outils améliorant ou complétant cd existent, basés soit sur la notion de bookmarks, soit sur de la complétion "floue", soit sur des patterns, soit sur un joyeux mélange... Certains sont assez anciens, comme CDargs, qui comporte en plus une interface curses pour piocher dans la liste des répertoires. Voici une liste assez complète (!), je vous laisse faire votre marché ;)
Ceux qui sont packagés dans Debian : http://www.skamphausen.de/cgi-bin/ska/CDargs http://xd-home.sourceforge.net/xdman.html http://waterlan.home.xs4all.nl/ (outil wcd) http://github.com/joelthelion/autojump http://savannah.nongnu.org/projects/go2/
Et les autres (certains comme z sont assez populaires, il en existe une variante pour zsh) : http://github.com/rupa/j http://github.com/rupa/j2 http://github.com/rupa/z http://github.com/sjl/z-zsh http://github.com/twerth/bashmarks http://github.com/philc/fuzzycd http://github.com/MarcWeber/path-selector http://github.com/karlin/working-directory
Voilà, fin du roman pour aujourd'hui ; comme vous le voyez, il y a de quoi optimiser ce bon vieux "cd"...