Dalam zsh
, saya sering melakukan:
cd /path/to/somefile(:h)
( h
untuk head
).
Jika somefile
symlink, Anda juga dapat melakukan:
cd somefile(:A:h)
Untuk sampai ke direktori tempat target symlink dapat ditemukan.
The zsh
setara dengan Chris' sekarang bash
solusi -hanya akan:
cd() {
[[ ! -e $argv[-1] ]] || [[ -d $argv[-1] ]] || argv[-1]=${argv[-1]%/*}
builtin cd "$@"
}
Di zsh
, Anda juga dapat mendefinisikan kembali "kata" yang Ctrl-Wdihapus.
Dalam zsh
, "kata-kata" dalam konteks gerakan berbasis kata / transpose / hapus widget adalah urutan alnum ditambah karakter dalam $WORDCHARS
variabel yang secara default termasuk /
.
Anda dapat menghapus /
dari $WORDCHARS
sehingga Ctrl-Whanya menghapus satu komponen jalan:
WORDCHARS=${WORDCHARS/\/}
Ekstensi lain yang bermanfaat adalah select-word-style
widget yang dapat Anda gunakan untuk secara interaktif memilih antara berbagai gaya kata.
autoload select-word-style
zle -N select-word-style
bindkey '\ew' select-word-style
Kemudian menekan Alt-Wmemungkinkan Anda untuk memilih di antara gaya kata yang berbeda.
$ 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
dan gaya kata. Terima kasih juga ataszsh
perintahnya. Itu melakukan pekerjaan dengan sempurna.Saya berasumsi Anda masih ingin mempertahankan fungsi asli jika Anda memasukkan direktori, dan Anda gunakan
bash
.Jika Anda tidak akan pernah menggunakan opsi cd (
-P
, dll), maka ini juga sudah cukup:sumber
builtin
di depancd
panggilancd
opsi tidak berfungsizsh
. Yang lebih sederhana berfungsi dengan baikzsh
, TETAPIcd
tidak lagi setara dengancd ~
: /[ -z "$1" ]
sudah cukup. Saya telah menerima jawaban Stephane untuk memberikan lebih banyak visibilitas, karena tampaknya itu adalah solusi terbaik untuk ituzsh
.Anda dapat menggunakan
dirname
untuk menghapus nama file dari path, misalnyaLihat
man dirname
.sumber
Jika Anda menambahkan ini ke Anda
.profile
, lalu muat (source ~/.profile
atau logout dan masuk lagi), makamycd [file or directory]
akan membawa Anda ke direktori yang benar:Jika Anda menyebutkannya
cd
, maka hal-hal aneh akan terjadi.sumber
zsh
.cd
, suka-P
.sumber
$(sudo reboot)
, fungsi ini dapat mem-boot ulang sistem. Juga, pengguna menggunakanzsh
, bukanbash
.cd '$(sudo reboot)'
akan mengubah direktori, sementara fungsi Anda akan mencoba untuk mengevaluasi nama.