В zsh, я часто роблю:
cd /path/to/somefile(:h)
( hдля head).
Якщо somefileце симпосилання, ви також можете зробити:
cd somefile(:A:h)
Щоб потрапити в каталог, де може бути знайдено ціль символьного посилання.
zshЕквівалент Chris 'тепер bash-тільки рішення буде:
cd() {
[[ ! -e $argv[-1] ]] || [[ -d $argv[-1] ]] || argv[-1]=${argv[-1]%/*}
builtin cd "$@"
}
В zsh, ви можете також перевизначити які «слова» Ctrl-WВидаляє.
Таким чином zsh, "слова" в контексті віджетів на основі руху / транспонування / видалення - це послідовності alnum плюс символи $WORDCHARSзмінної, яка за замовчуванням включає /.
Ви можете видалити /з, $WORDCHARSщоб видалити Ctrl-Wлише один компонент шляху:
WORDCHARS=${WORDCHARS/\/}
Ще одне корисне розширення - select-word-styleвіджет, який ви можете використовувати для інтерактивного вибору між різними стилями слів.
autoload select-word-style
zle -N select-word-style
bindkey '\ew' select-word-style
Потім натискання Alt-Wдозволяє вибирати між різними стилями слів.
$ 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
?