Birkaç dosyayla bir şeyler yapmanın yaygın bir yolu - ve bunun için bana vurmayın:
for f in $(ls); do …
Şimdi, boşluklara veya diğer garip karakterlere sahip dosyalara karşı güvende olmak için naif bir yol olurdu:
find . -type f -print0 | while IFS= read -r -d '' file; …
Burada, -d ''ASCII NUL'u olduğu gibi ayarlamak için kısadır -d $'\0'.
Ama neden böyle? Neden ''ve $'\0'aynı? Bu boş bir dize ile Bash'ın C köklerinden dolayı her zaman boş bırakılır mı?
for f in *ayrıştırmak yerine kullanın ls.
for i in $(ls)Çok aptalca olduğunu biliyorum - Burada kötü bir örnek olarak kullandığım için neredeyse utanıyorum.
find … -execbunun yerine böyle bir for döngüsü kullanacağınız çoğu durumda çalışan dosyaların etrafında döngü yerine kullanmak. Burada findsizin için her şeyi halleder.