@RamRachum, tetapi lebih banyak karakter saat mengetik.
Paul Draper
1
@PaulDraper Dapat dibaca dan kurang rentan terhadap kesalahan> Lebih singkat dengan satu penekanan tombol
Doorknob
Kutipan tunggal adalah caranya. Saya bahkan tidak pernah berpikir Anda bisa menggunakan backslash dengan cara ini ...
Floris
4
Sebelum shell Anda mengeluarkan findperintah, ia akan melakukan berbagai ekspansi . Melakukannya, itu juga memproses karakter khusus (atau, karakter dengan makna khusus), di mana *wildcard - karakter globbing. Ini adalah apa yang disebut ekspansi nama file.
Katakanlah Anda memiliki dua file di direktori Anda:
foo.pyc
bar.pyc
Maka *.pycakan berkembang menjadi kedua nama. Jadi, jika Anda menulis:
find .-name *.pyc -delete
maka shell akan benar-benar memanggil:
find .-name foo.pyc bar.pyc -delete
yang tidak masuk akal, karena Anda hanya dapat memiliki satu argumen -name. Itu sebabnya Anda perlu melarikan diri karakter khusus untuk mencegahnya ditafsirkan oleh shell. Anda melakukannya dengan melarikan diri backslash, atau sebagai alternatif, mengutipnya.
find
harus memiliki bagian yang disebutNON-BUGS
dengan sesuatu yang mirip sebagai contoh dan penjelasan mengapa diperlukan.Jawaban:
Glob yang tidak dikutip akan diperluas oleh shell sebelum
find
dieksekusi. (Lihat Ekspansi Nama File di manual.)Jadi mengatakan:
akan benar-benar mengeksekusi:
dengan asumsi ada 3 file .pyc di direktori saat ini dan menghasilkan kesalahan sebagai gantinya.
Sebuah backslash membuat shell melewati glob
find
, artinya bertindak seperti*.pyc
dikutip.Idealnya, Anda harus mengutip sebuah bola:
sumber
Sebelum shell Anda mengeluarkan
find
perintah, ia akan melakukan berbagai ekspansi . Melakukannya, itu juga memproses karakter khusus (atau, karakter dengan makna khusus), di mana*
wildcard - karakter globbing. Ini adalah apa yang disebut ekspansi nama file.Katakanlah Anda memiliki dua file di direktori Anda:
foo.pyc
bar.pyc
Maka
*.pyc
akan berkembang menjadi kedua nama. Jadi, jika Anda menulis:maka shell akan benar-benar memanggil:
yang tidak masuk akal, karena Anda hanya dapat memiliki satu argumen
-name
. Itu sebabnya Anda perlu melarikan diri karakter khusus untuk mencegahnya ditafsirkan oleh shell. Anda melakukannya dengan melarikan diri backslash, atau sebagai alternatif, mengutipnya.sumber