Kurung kurawal ini dibiarkan sendiri oleh bash; mereka milik finddan xargs, masing-masing, dan dijelaskan dalam halaman manual mereka.
man find
-exec perintah ;
Jalankan perintah ; true jika 0 status dikembalikan. Semua argumen berikut untuk ditemukan dianggap sebagai argumen untuk perintah sampai argumen yang terdiri dari ;ditemui. String {}diganti dengan nama file saat ini sedang diproses di mana-mana itu terjadi dalam argumen ke perintah, bukan hanya dalam argumen di mana itu sendirian, seperti dalam beberapa versi find. Kedua konstruksi ini mungkin perlu diloloskan (dengan a \) atau dikutip untuk melindunginya dari ekspansi oleh shell. Lihat bagian CONTOH untuk contoh penggunaan -execopsi. Perintah yang ditentukan
dijalankan sekali untuk setiap file yang cocok. Perintah dijalankan di direktori awal. Ada masalah keamanan yang tidak dapat dihindari seputar penggunaan -exec
tindakan; Anda harus menggunakan -execdiropsi ini sebagai gantinya.
-exec perintah {} +
Varian -execaksi ini menjalankan perintah yang ditentukan pada file yang dipilih, tetapi baris perintah dibangun dengan menambahkan setiap nama file yang dipilih di akhir; jumlah total doa perintah akan jauh lebih sedikit daripada jumlah file yang cocok. Baris perintah dibangun dengan cara yang sama dengan yang xargsmembangun baris perintahnya. Hanya satu instance dari {}yang diizinkan dalam perintah. Perintah dijalankan di direktori awal. Jika findmenemukan kesalahan, ini kadang-kadang dapat menyebabkan keluar langsung, sehingga beberapa perintah yang tertunda mungkin tidak dijalankan sama sekali. Varian ini -execselalu menghasilkan true.
-execdir perintah ;
-execdir perintah {} +
Suka -exec, tetapi perintah yang ditentukan dijalankan dari subdirektori yang berisi file yang cocok, yang biasanya bukan direktori tempat Anda mulai mencari. Ini metode yang jauh lebih aman untuk menjalankan perintah, karena menghindari kondisi balapan selama resolusi jalur ke file yang cocok. Seperti -exec tindakan,
+ bentuk -execdir akan membangun baris perintah untuk memproses lebih dari satu file yang cocok, tetapi setiap permintaan perintah yang diberikan hanya akan mencantumkan file yang ada di subdirektori yang sama. Jika Anda menggunakan opsi ini, Anda harus memastikan bahwa $PATHvariabel lingkungan Anda tidak referensi.; jika tidak, penyerang dapat menjalankan perintah apa pun yang mereka suka dengan meninggalkan file dengan nama yang sesuai di direktori di mana Anda akan menjalankan -execdir. Hal yang sama berlaku untuk memiliki entri $PATHyang kosong atau yang bukan nama direktori absolut. Jika findmenemukan kesalahan, ini kadang-kadang dapat menyebabkan keluar langsung, sehingga beberapa perintah yang tertunda mungkin tidak dijalankan sama sekali. Hasil dari tindakan tergantung pada apakah varian +atau ;sedang digunakan;
-execdir perintah {} + selalu mengembalikan true, sedangkan -execdir perintah {} ; mengembalikan true hanya jika perintah mengembalikan 0.
man xargs
-I ganti-str
Ganti kemunculan replace-str dalam argumen-awal dengan nama yang dibaca dari input standar. Juga, blanko tanda kutip tidak menghentikan item input; sebaliknya pemisah adalah karakter baris baru. Tersirat -xdan -L 1.
-i[ ganti-str ], --replace[ =ganti-str ]
Opsi ini adalah sinonim untuk -Ireplace-str jika replace-str ditentukan. Jika argumen replace-str tidak ada, efeknya sama dengan -I{}. Opsi ini sudah usang; gunakan -Isaja.
Sunting: dan di sini MENGAPA bash mengabaikan kurung kurawal itu:
man bash
{ daftar; }
daftar hanya dieksekusi di lingkungan shell saat ini. daftar harus diakhiri dengan baris baru atau titik koma. Ini dikenal sebagai perintah grup. Status kembali adalah status keluar dari daftar. Perhatikan bahwa tidak seperti metacharacters ( dan ) , { dan } adalah kata-kata yang dicadangkan dan harus muncul ketika kata yang dilindungi diizinkan untuk dikenali. Karena mereka tidak menyebabkan istirahat kata, mereka harus dipisahkan dari daftar oleh spasi putih atau karakter meta shell lainnya.
Untuk penekanan: daftar harus diakhiri dengan baris baru atau titik koma .
{}- artinyatargetsuntuk bertindak, denganfindperintah, ini menghapus /rmmenemukan file.