Saya tahu caranya *
diinterpretasikan dalam perintah seperti ls
Misalnya. Tetapi ketika mencoba menjalankan *
sebagai perintah, shell mencoba mengeksekusi file atau direktori pertama di direktori kerja Anda. Kenapa ini? Bagaimana shell memahami *
?
Jawaban yang Diterima:
Tidak seperti di beberapa sistem operasi lain, di Unix, shelllah yang memperluas wildcard nama file. Ini memperluas ekspansi parameter dan gumpalan terlebih dahulu, kemudian menggunakan kata pertama (sekarang) sebagai nama untuk menjalankan perintah.
Ini juga mengapa file yang diberi nama dengan tanda hubung di awal dapat menjadi masalah:gumpalan seperti *
akan diperluas ke nama file, dan nama yang dimulai dengan tanda hubung dapat diambil sebagai opsi. (Contoh menakutkannya adalah file bernama -r
di direktori kerja akan membuat rm *
hapus semuanya secara rekursif…)
Biasanya, seseorang tidak akan menggunakan *
sebagai item pertama pada baris perintah apa pun, jadi memiliki file pertama yang menentukan perintah yang akan dijalankan dalam kasus itu tidak akan menimbulkan masalah.