Hampir setiap kali saya 'cd' ke direktori berbeda di komputer saya (dalam hal ini, menjalankan Mac OS X 10.6.7) melalui baris perintah (yang bash), saya segera mengetik 'ls' untuk mendapatkan daftar isi dalam direktori itu. Saya mencoba mencari cara untuk mengganti 'cd' sehingga itu berubah ke direktori yang diminta dan kemudian memberi saya daftar dalam satu kesempatan.
Saya sudah bisa mendapatkan fungsionalitas dasar yang saya cari bekerja dengan baris berikut ditambahkan ke ~ / .bash_profile saya
function cl() { cd "$@"; ls -l; }
Ini berfungsi seperti yang diharapkan. Mengubah ke direktori yang diminta dan kemudian menunjukkan kepada saya isinya. Di mana saya mengalami masalah sedang mencoba untuk menimpa "cd" itu sendiri alih-alih membuat perintah "cl" baru.
Hal-hal berikut tidak berfungsi
##### Attempt 1 #####
# Hangs the command line
function cd() { cd "$@"; ls -l; }
##### Attempt 2 #####
# Hangs the command line
function cd() { 'cd' "$@"; ls -l; }
##### Attempt 3 #####
# Does not change directory.
# Does list contents, but of the directory where you started.
function cd() { /usr/bin/cd "$@"; ls -l; }
#### Other attempts that fail in various ways #####
alias cd=cd "$@"; ls -la;
alias cd="cd '$@'; ls -la;"
alias cd='cd "$@"'; ls -la;
alias cd=/usr/bin/cd "$@"; ls -la;
Saya juga mencoba beberapa iterasi lain yang tidak terdaftar serta membuat alias yang menunjuk ke fungsi 'cl' yang berfungsi. Tidak ada yang berhasil.
Apa yang saya baca dalam pembicaraan dokumentasi tentang fakta bahwa 'cd' tidak dapat dijalankan sebagai perintah eksternal (yang saya pahami sebagai cara fungsi perlu menggunakannya).
Jadi, saat ini saya dapat menggunakan perintah "cl" saya dan mendapatkan yang saya inginkan, tetapi pertanyaannya adalah / tetap:
Apakah ada cara untuk mengesampingkan perilaku 'cd' untuk mengubahnya ke direktori yang diminta dan kemudian melakukan hal lain sesudahnya?