Saya mencoba membuat alias di bash. Yang ingin saya lakukan adalah memetakan ls -la
kels -la | more
Dalam file .bashrc saya inilah yang saya coba:
alias 'ls -la'='ls -la | more'
Namun itu tidak berfungsi karena (saya berasumsi) ini memiliki spasi dalam nama alias. Apakah ada solusi untuk ini?
alias lsm='ls -la | more'
Jawaban:
The dokumentasi Bash negara "Untuk hampir setiap tujuan, fungsi shell lebih disukai daripada alias." Berikut adalah fungsi shell yang menggantikan
ls
dan menyebabkan output untuk disalurkan kemore
jika argumen terdiri dari (hanya)-la
.Sebagai one-liner:
Output pipa secara otomatis:
sumber
command
mencegah fungsi dipanggil secara rekursif.Dari halaman manual alias :
Jadi, hanya kata pertama yang diperiksa untuk kecocokan alias yang membuat alias multi-kata menjadi tidak mungkin. Anda mungkin dapat menulis skrip shell yang memeriksa argumen dan memanggil perintah Anda jika cocok dan sebaliknya hanya memanggil yang normal
ls
(Lihat jawaban @Dennis Williamson )sumber
Pendekatan yang sedikit lebih baik diambil dari jawaban Dennis:
Atau satu-baris:
Ini memungkinkan untuk opsi / argumen lebih lanjut ditambahkan setelah perintah jika diperlukan, misalnya
ls -la -h
sumber
ls -lat
dikecualikan dari perawatan ini? Saya perlu meletakkan kasing untuk menanganinya di atas-la*
entri, ya?Anda masih dapat menggunakan alias ini, tetapi Anda perlu mengutip agar ruang tersebut merupakan bagian dari kata perintah. Jadi
"ls -la" -p pattern
akan melewati-p pattern
opsi untukmore
, bukanls
.sumber