Alias tidak dimaksudkan untuk melakukan ini, tetapi Anda dapat membuat fungsi yang disebut cd
itu adalah pembungkus untuk cd
yang asli . Yang ini bekerja untuk saya! Masukkan saja ke dalam .bash_profile
Anda atau file profil pilihan Anda.
cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }
Atau, dengan komentar dan pemformatan cantik:
cd ()
{
if [ "$1" = ",," ]; then # if first argument is ",,"...
builtin cd .. # call the builtin cd with ".." instead...
else
builtin cd "[email protected]" # else call builtin cd with original arguments
fi
}
EDIT
Terima kasih @derobert karena menunjukkan if then else
itu lebih baik di sini daripada && ||
. Juga, saya baru menyadari (*facepalm *) bahwa implementasi ini hanya akan berfungsi jika ada argumen non-jalur (mis. -L -P
) bukan argumen pertama. Jadi berhati-hatilah, jika Anda memiliki kebiasaan buruk mengetik cd -L ,,
ini tidak akan membantu Anda. Dan itu tidak sepele untuk ditangani dengan benar, menurut saya.
ZSH:
Jika Anda menggunakan zsh
alias -g ,,=".."
adalah yang Anda butuhkan, tetapi ini akan menyebabkan ",," diperluas di mana saja, tidak hanya saat digunakan dengan cd
.
Dari man zshbuiltins
:
Jika
-g
bendera ada, tentukan alias global; alias global diperluas meskipun tidak muncul di posisi perintah.
BASH:
Jika dibatasi untuk bash
(karena pertanyaannya ditandai dengan bash), baca yang berikut:
Ini adalah solusi alias murni, seperti yang diminta, namun ini akan melakukan lebih dari yang diperlukan mungkin membuat pengguna frustrasi (lihat peringatan di akhir posting saya).
Mengutip man bash
:
Jika karakter terakhir dari nilai alias adalah kosong, maka kata perintah berikutnya yang mengikuti alias juga diperiksa untuk perluasan alias.
Oleh karena itu cukup dengan alias cd
dengan spasi ekstra (untuk memungkinkan perluasan argumen berikutnya) dan kemudian alias ,,
ke ..
. Lihat itu
alias cd='cd '
alias ,,='..'
memberikan apa yang Anda butuhkan.
Perhatikan bahwa ini benar tidak hanya untuk bash
(dan alias
nya implementasi), tetapi semua shell yang menyusun POSIX. Mengutip contoh dari man 1p alias
(manual tidak menjelaskan fitur ini secara eksplisit, hanya melalui contoh):
Siapkan nohup agar dapat menangani argumen yang juga merupakan nama alias:
alias nohup="nohup "
Peringatan: Seperti yang ditulis @PeterCordes dalam komentarnya, itu akan secara otomatis menyebabkan lainnya alias untuk memperluas ketika ditulis setelah cd
. Anda mungkin perlu menulis cd \grep
jika Anda ingin mengubah direktori menjadi grep
tetapi grep
Anda adalah alias untuk grep --color=auto
. Tanpa garis miring terbalik, cd
akan melaporkan kesalahan "terlalu banyak argumen" (Anda tidak dapat cd
ke dua direktori sekaligus)!.
Alias harus menjadi kata pertama dari sebuah perintah. Selain itu, alias harus diganti dengan sebuah kata oleh karena itu tidak ada spasi).
Manual Referensi Bash:Alias
Alias memungkinkan string diganti dengan sebuah kata bila digunakan sebagai kata pertama dari perintah sederhana.
Anda bisa menggunakan alias ..
dan ,,
menjadi cd ..
.
$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/