Birçok insan satır boyunca kod içeren oneliner ve scriptler kullanır
cat "$MYFILE" | command1 | command2 > "$OUTPUT"
Birincisine cat
genellikle "işe yaramaz kedi kullanımı" denir, çünkü teknik olarak, /usr/bin/cat
eğer komut olsaydı, bundan kaçınılması gereken yeni bir işlem başlatmayı gerektirir.
< "$MYFILE" command1 | command2 > "$OUTPUT"
Çünkü o zaman kabuk sadece başlaması command1
ve stdin
verilen dosyayı göstermesi yeterlidir .
Kabuk neden bu dönüşümü otomatik olarak yapmıyor? "Kedinin işe yaramaz kullanımı" sözdiziminin okunmasının daha kolay olduğunu ve kabukların otomatik olarak işe yaramaz kediden kurtulmak için yeterli bilgiye sahip olması gerektiğini düşünüyorum. cat
Kabuk yolunda bir ikili kullanmanın içten yerine uygulamaya izin verilmelidir böylece POSIX standardında tanımlanmıştır. Kabuk, yalnızca tam bir argüman sürümü için uygulama içerebilir ve yoldaki ikili dosyaya geri dönebilir.
lseek
vb hala davranışı tanımlanır ve farklı sonuçlar verebilir, farklı engelleme davranışı semantik olarak anlamlı olabilir ne Bilseydin değişiklik yapmak kapsama dahil edilecek diğer komutlar vardı ve onlar umursamadı biliyordu ya da sadece bu düzeyde uyumluluk ile ilgilenmiyorsanız, ancak fayda oldukça küçük. Fayda eksikliğinin durumu uygunluk maliyetinden daha fazla yönlendirdiğini hayal ediyorum.
cat
kendisinin veya başka herhangi bir yardımcı programın uygulanmasına kesinlikle izin verilir . Ayrıca, sisteme ait diğer yardımcı programların nasıl çalıştığını bilmesine de izin verilir (örneğin , sistemle birlikte gelen harici grep
uygulamanın nasıl davrandığını bilebilir ). Bunu yapmak tamamen uygulanabilir, bu yüzden neden yapmadıklarını merak etmek tamamen adil.
grep
. Ve sed
. Ve awk
. Ve du
. Ve binlerce başka yardımcı program yoksa kaç yüz?