Saya sering menjalankan ls
perintah setelah menjalankan cd
perintah. Bagaimana saya bisa membuat alias (seperti cs
) untuk operasi ini?
sumber
Saya sering menjalankan ls
perintah setelah menjalankan cd
perintah. Bagaimana saya bisa membuat alias (seperti cs
) untuk operasi ini?
Dari Bash Tips and Tricks: 'cd' dengan gaya :
Akhirnya, saya ingin menunjukkan kepada Anda bagaimana menulis pengganti kustom Anda sendiri untuk perintah 'cd'.
Apakah Anda selalu mengetik hal yang sama saat berganti menjadi direktori? Anda mungkin setidaknya daftar file di sana setiap kali, mungkin begitu banyak sehingga tangan Anda secara otomatis mengetik 'ls' setelah setiap 'cd'.
Nah, dengan mencoba segala cara yang dapat saya pikirkan, ternyata hanya ada satu cara untuk mencapai tujuan yang kita cari dengan benar. Kita harus membuat fungsi shell.
Fungsi Shell adalah bagian dari pemrograman shell. Seperti dalam bahasa pemrograman yang dikompilasi, fungsi menyediakan semacam modularizability prosedural. Seseorang dapat membuat fungsi generik untuk melakukan logika atau komputasi yang sering digunakan dengan parameter yang berbeda. Dalam hal ini, parameternya adalah direktori kerja saat ini.
Ini yang sederhana:
function cs () { cd $1 ls }
Seperti dicatat oleh @geirha dengan benar , fungsi di atas akan gagal jika Anda mencoba untuk beralih ke direktori dengan spasi di namanya:
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
Anda sebaiknya menggunakan fungsi berikut:
function cs () {
cd "$@" && ls
}
Setelah menambahkan kode itu ke kode Anda ~/.bashrc
, Anda seharusnya dapat melakukan ini:
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
Anda dapat menggunakan
builtin
perintah di bash:sumber
function ls() { /usr/bin/ls $* }
cd
karenarvm
mengubahcd
definisi saya juga. Lihat stackoverflow.com/a/19941991/1601989Gunakan fungsi alih-alih alias:
sumber
Terima kasih Florian Diesch untuk tip menggunakan fungsi. Saya tidak bisa menggunakan
cs
namanya karena adacs
perintah dalam paket csound , jadi saya gunakanlc
.Saya menambahkan ini ke
~/.bash_aliases
(nano ~/.bash_aliases
):Terminal perlu agar
reset
ini berlaku.sumber
$1
kutip seperti itu akan membuatnya gagal jika direktori tersebut berisi spasi putih. Anda juga harus memeriksa nilai pengembaliancd
; jika gagal (mis. izin ditolak), tidak ada gunanya menjalankanls
.lc() { cd "$@" && ls; }
Sebagai perluasan fungsi ini:
cs() { cd "$1" && ls; }
, Anda mungkin ingin lulus semua argumen fungsi untukcd
menggunakan$@
bukan"$1"
seperti:cs() { cd $@ && ls; }
.sumber
Saya mengalami masalah mendefinisikan ulang
cd
karenarvm
mengubahcd
definisi saya juga. Lihat https://stackoverflow.com/a/19941991/1601989 . Saya tidak benar-benar ingin menggunakannyabuiltin
karena itu akan melompati apa punrvm
yang dilakukan.Saya menambahkan yang berikut ini ke
.bashrc
:Dan kemudian setelah
rmv
baris di.bashrc
:sumber