Apakah satu alias memengaruhi alias lain?

14

Saya belum memiliki banyak alias yang disiapkan di file .bash_aliases saya dulu. Hanya baru-baru ini saya menemukan betapa bermanfaatnya mereka.

Saya bisa melihat diri saya cukup terpikat pada alias jadi sebelum file menjadi terlalu berat saya ingin mengklarifikasi sesuatu dengan mengajukan pertanyaan yang sangat sederhana. Apakah satu alias memengaruhi yang lain, atau apakah alias selalu kembali ke perintah semula?

Contoh dapat membuat ini lebih jelas:

Saya telah lsalias ls -lF. Katakanlah saya juga ingin alias dke ls -l | grep -E "^d": apakah dsekarang digunakan ls -lFsebagai pengganti ls? Jika demikian, apakah ini masalah pesanan dalam file konfigurasi .bash_aliases?

man alias tidak mencerahkan saya.

boehj
sumber

Jawaban:

20

Dari Alias ​​(bagian 6.6 dari Manual Bash) :

Kata pertama dari setiap perintah sederhana, jika tidak dikutip, diperiksa untuk melihat apakah ada alias. Jika demikian, kata itu diganti dengan teks alias.

Ini terjadi ketika Anda menggunakan alias, bukan saat Anda mendefinisikannya. Ini sebuah contoh:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found
cjm
sumber
1
OK bagus, terima kasih untuk contoh itu (dan juga untuk tautan ke Bash Manual). Saya mengutip dari Manual: "Aturan tentang definisi dan penggunaan alias agak membingungkan ... Untuk hampir setiap tujuan, fungsi shell lebih disukai daripada alias." Saya kira saya lebih baik belajar bagaimana melakukan fungsi shell. :)
boehj
1
Iya. Alias ​​dapat menghemat pengetikan untuk perintah umum, tetapi untuk apa pun yang bahkan kompleks, fungsi penulisan kustom untuk menanganinya biasanya merupakan pilihan yang lebih baik.
Caleb
@Caleb @Gilles - Terima kasih semuanya. BTW, ls = 'ls --color' Saya bisa melihatnya sangat berguna. Suka situs ini. :)
boehj
2
@ boehj: Aturan praktis adalah dengan menggunakan alias ketika Anda ingin memiliki argumen otomatis untuk suatu perintah, menggunakan nama perintah atau variasi kecil, dan berfungsi sebaliknya. Jadi alias ls='ls --color',, alias cp='cp -i'tetapi berfungsi untuk hal-hal yang lebih kompleks. Secara khusus, saya akan membuat dfungsi Anda sehingga Anda dapat menyampaikan argumen ls. [komentar mem-posting ulang untuk memperbaiki braino yang membingungkan, terima kasih @cjm]
Gilles 'SO- stop being evil'
@Gilles - OK, tugas saya hari ini adalah belajar sendiri bagaimana mereplikasi dfungsi shell.
boehj