Dans zsh
, je fais souvent:
cd /path/to/somefile(:h)
( h
pour head
).
Si somefile
est un lien symbolique, vous pouvez également faire:
cd somefile(:A:h)
Pour accéder au répertoire où se trouve la cible du lien symbolique.
L' zsh
équivalent de la bash
solution désormais unique de Chris serait:
cd() {
[[ ! -e $argv[-1] ]] || [[ -d $argv[-1] ]] || argv[-1]=${argv[-1]%/*}
builtin cd "$@"
}
Dans zsh
, vous pouvez également redéfinir ce que les "mots" Ctrl-Wsuppriment.
Dans zsh
, les "mots" dans le contexte des widgets de mouvement / transposition / suppression basés sur des mots sont des séquences d'aluns plus les caractères de la $WORDCHARS
variable qui inclut par défaut /
.
Vous pouvez supprimer /
de $WORDCHARS
sorte que Ctrl-Wne supprime qu'un seul composant de chemin:
WORDCHARS=${WORDCHARS/\/}
Une autre extension utile est le select-word-style
widget que vous pouvez utiliser pour choisir interactivement entre différents styles de mots.
autoload select-word-style
zle -N select-word-style
bindkey '\ew' select-word-style
Une pression sur Alt-Wvous permet de choisir entre différents styles de mots.
$ cd /blah/blih<Alt-W>
Word styles (hit return for more detail):
(b)ash (n)ormal (s)hell (w)hitespace (d)efault (q)uit
(B), (N), (S), (W) as above with subword matching
?
Stéphane Chazelas
la source
zsh
styles de mots. Merci aussi pour lazsh
commande. Il fait parfaitement l'affaire.Je suppose que vous souhaitez toujours conserver la fonctionnalité d'origine si vous entrez un répertoire et que vous l'utilisez
bash
.Si vous n'utilisez jamais les options de cd (
-P
, etc.), cela suffira également:la source
builtin
devant lescd
appelscd
options ne fonctionne pas aveczsh
. Le plus simple fonctionne bienzsh
, MAIScd
n'est plus équivalent commecd ~
: /[ -z "$1" ]
était suffisant. J'ai accepté la réponse de Stéphane pour lui donner plus de visibilité, car elle semble être la meilleure solutionzsh
.Vous pouvez utiliser
dirname
pour supprimer le nom de fichier du chemin d'accès, par exempleTu vois
man dirname
.la source
Si vous ajoutez ceci à votre
.profile
, puis chargez-le (source ~/.profile
ou déconnectez-vous et reconnectez-vous), puis vousmycd [file or directory]
amènera au bon répertoire:Si vous le nommez
cd
, des choses étranges se produiront.la source
zsh
.cd
, comme-P
.la source
$(sudo reboot)
, cette fonction peut redémarrer le système. En outre, l'utilisateur utilisezsh
, nonbash
.cd '$(sudo reboot)'
changerait de répertoire, tandis que votre fonction essaierait d'évaluer le nom.