Buradaki sorun Linux yönlendirmesi ile ilgili bir sorun değil; bunun yerine, boru hattının nasıl çalıştığının temel bir yanlış anlaşılmasıdır. Buradaki yönlendirme çalışmıyor çünkü sadece kesim aslında stdout'a yazdırıyor. echo komutu için stdout, cut'un stdinine (bir dosya belirtildiğinden bu durumda kullanılmaz) kesilmiştir.
echo "header line" > output_file && cut -c 1-5 input_file >> output_file
İstediğiniz ve hiç inelegant değil ne (yerime başkasının senin ;ile &&öylesine başlık başarıyla yazıldıysa kesim komutu yalnızca yürütme anlamına, aynı çalıştırmaz bu şekilde size çıkış_dosyası oluşturmak için izinleri veya yazma yoksa ).
Bunların tümünü bir alt kabukta da yapabilirsiniz, örn.
(echo "header line"; cut -c 1-5 input_file) > output_file
ancak bunu yapmanın gerçek bir yararı yoktur ve daha karmaşık örneklerle, alt kabuğun kapsamının ne olduğunu bilmiyorsanız sorunlara neden olabilir.
Kesimi stdin'den stdout'a geçirmek istiyorsanız deneyebilirsiniz:
echo "header line" | cut -c 1-5 - input_file
(Çizgi stdin için ortak bir kısayoldur)
Bununla birlikte, bu aynı zamanda stdin üzerinde kesme işlemini de gerçekleştirecektir ("başlık" başlık çizgisine yol açar). Sorundan istediğini bu olup olmadığını söylemek zor.
{ .... } > some_file 2>&1( "clobber" some_file değil clobber ancak ekleme kendisine bunun yerine, sadece değiştirmek olacaktır.>Bir içine>>:{ ... } >> some_file 2>&1)