Saya baru saja membuka skrip shell warisan (ditulis dalam ksh88 lama di Solaris) dan menemukan yang berikut ini berulang di seluruh kode:
[ -f $myfile ] && \rm -f $myfile
Backslash yang melarikan diri menurut saya aneh.
Saya tahu ini disengaja, karena melarikan diri semacam ini (tampaknya tidak berguna) diulangi di seluruh kode. Penulis aslinya sudah lama hilang, saya tidak bisa menghubunginya untuk memintanya.
Apakah ini hanya keanehan lucu dari penulis atau itu semacam praktik baik yang sudah ketinggalan zaman yang masuk akal di beberapa titik waktu? Atau mungkin sebenarnya cara yang disarankan untuk melakukan sesuatu dan saya kehilangan sesuatu sama sekali?
shell-script
quoting
ksh
rahmu
sumber
sumber
rm
dengan path lengkap.Jawaban:
Ini digunakan untuk perlindungan alias:
sumber
Pada umumnya merupakan praktik yang baik untuk melemparkan beberapa perlindungan untuk rm, yang biasanya dicapai dengan aliasing. Di lingkungan multi-pengguna, Anda akan sering melihat banyak perlindungan ini ada di tempatnya.
Untuk seorang praktisi scripting shell, seringkali berguna bagi seseorang untuk menonaktifkan perlindungan ini karena mungkin, mereka tahu apa yang mereka lakukan. Ini, seperti yang disebutkan, dilakukan dengan mengawali perintah dengan a
\
.Bertolak belakang dengan saran @ Sorpigal, saya pasti akan menyarankan untuk tidak membuka alias, jangan sampai skrip gagal memberikan pengguna kembali perlindungan mereka. Lebih lanjut, menggunakan lintasan lengkap juga tidak bijaksana karena rm mungkin ada di lintasan bantu karena suatu alasan - yaitu GNU rm vs BSD rm. Mengesampingkannya dengan jalur yang ketat berarti mengalahkan tujuan memiliki PATH, yaitu untuk meningkatkan skala dan menangani banyak arsitektur, lingkungan, dan pengguna.
sumber
rm
bukanlah praktik yang baik tetapi cukup buruk dan tidak menguntungkan.