W zsh
często robię:
cd /path/to/somefile(:h)
( h
dla head
).
Jeśli somefile
jest dowiązaniem symbolicznym, możesz także:
cd somefile(:A:h)
Aby dostać się do katalogu, w którym można znaleźć cel dowiązania symbolicznego.
zsh
Odpowiednik Chris' teraz bash
rozwiązanie -tylko byłoby:
cd() {
[[ ! -e $argv[-1] ]] || [[ -d $argv[-1] ]] || argv[-1]=${argv[-1]%/*}
builtin cd "$@"
}
W zsh
, można również zmienić pojęcie „Słowa” Ctrl-WUsuwa.
W zsh
„słowach” w kontekście widżetów ruchu / transpozycji / usuwania opartych na słowach są sekwencje alnum plus znaki w $WORDCHARS
zmiennej, która domyślnie zawiera /
.
Możesz usunąć /
z, $WORDCHARS
aby usunąć Ctrl-Wtylko jeden składnik ścieżki:
WORDCHARS=${WORDCHARS/\/}
Innym przydatnym rozszerzeniem jest select-word-style
widget, którego można używać do interaktywnego wybierania różnych stylów słów.
autoload select-word-style
zle -N select-word-style
bindkey '\ew' select-word-style
Następnie naciśnięcie Alt-Wpozwala wybrać pomiędzy różnymi stylami słó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
?
zsh
i stylów słów. Dziękuję również zazsh
polecenie. Doskonale spełnia swoje zadanie.Zakładam, że nadal chcesz zachować oryginalną funkcjonalność, jeśli wpiszesz katalog i korzystasz z niego
bash
.Jeśli nigdy nie będziesz używać opcji cd (
-P
itp.), To wystarczy:źródło
builtin
przedcd
wywołaniamicd
opcje nie działazsh
. Prostszy z tym działa dobrzezsh
, ALEcd
nie jest już równoważny zcd ~
: /[ -z "$1" ]
wystarczyło dodać czek . Zaakceptowałem odpowiedź Stephane'a, aby dać jej lepszą widoczność, ponieważ wydaje się to najlepszym rozwiązaniemzsh
.Możesz użyć
dirname
do usunięcia nazwy pliku ze ścieżki, npZobaczyć
man dirname
.źródło
Jeśli dodasz to do swojego
.profile
, a następnie załaduj (source ~/.profile
lub wyloguj się i zaloguj ponownie),mycd [file or directory]
przeniesie Cię do odpowiedniego katalogu:Jeśli to
cd
nazwiesz, zdarzają się dziwne rzeczy.źródło
zsh
.cd
, na przykład-P
.źródło
$(sudo reboot)
, funkcja ta może ponownie uruchomić system. Ponadto użytkownik korzystazsh
, a niebash
.cd '$(sudo reboot)'
zmieniłbym katalog, a twoja funkcja spróbowałaby ocenić nazwę.