Apa pentingnya titik dalam perintah bash dan bagaimana perbedaannya dari tanda bintang?


11

Saya mencoba memahami pentingnya titik di bash dan bagaimana hal itu berbeda dari tanda bintang. Bisakah seseorang tolong uraikan? Misalnya, apa perbedaan antara cp -ar /foo/. /foo2/dancp -pr /foo/* /foo2/

Jawaban:


12

Titik ( .) hanyalah .direktori di dalam direktori yang sama dengan direktori itu sendiri ( ls -la /fooakan menunjukkannya kepada Anda). Jadi, jika Anda menyalin di foo/.tempat lain, Anda secara efektif menyalin semua pohon di bawah ini footanpa menyalin foosendiri (Anda menyalinnya ke foo2/.yang sama dengan foo2).

/foo/*diperluas oleh shell untuk daftar file non-tersembunyi dan direktori di /foo, sehingga akan menyalin struktur direktori yang sama di bawah /fooke dalam /foo2juga, kecuali untuk dotfiles / dotdirs. Secara efektif, cpakan menerima (berpotensi) banyak argumen. Jika daftar terlalu besar, bahkan dapat menyebabkan eksekusi cpgagal.


Maaf tapi saya bingung. Jadi secara alami, tanda bintang membuat perintah itu berulang? Dengan kata lain, cp -r /foo/*apakah hal yang sama terjadi cp /foo/* ?
Mike B

5
@ MikeB, tidak, shell hanya memperluas daftar file di direktori / foo. Itu tidak mengubah perilaku cp. Gunakan set -xatau echo cp -pr /foo/* /foo2untuk melihat apa yang terjadi. Sangat penting untuk menyadari bahwa itu adalah shell yang memperluas wildcard. cptidak melihat bintang.
Stéphane Chazelas

Bagaimana dengan ini? chmod 755 -R. versus chmod 755 -R *
wayofthefuture
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.