less
stdout
terminal olup olmadığını kontrol eder ve olmadığı gibi davranır cat
(stOnayı EOF'ye kadar stdout'a kopyalar).
Bu özellik , bir dosyayı kolayca yeniden yönlendirmeye izin verirken , çıktılarını (örneğin --help
çıktılarını) her zaman gönderen komut dosyaları veya programlar yazmanıza olanak tanır less
. Yine de some_command --fullhelp > help.txt
stdin'deki boşluk çubuğunun metin veya sayfadan geçmesini beklediğinde berbat olurdu . Bazı komutlar (örneğin man
), çıktılarını bir çağrı cihazı aracılığıyla gönderip göndermeyeceğine karar vermek için kendi çıktısını kontrol eder. Eğer man ls > ls.txt
kaçarsan, asla$PAGER
.
less
Bir boru hattına daha fazla aşama eklerken onu tek bir astardan düzenlemeyi unutursanız, kedi benzeri davranışları kullanışlıdır.
less
Uçbirim boyutlarını (bir kerede kaç satır gösterileceğini bilmek için ekran boyutu) belirlemeliyiz. ioctl(2)
O kullandığı stdout
yine terminal olmayan dava dosyasını kaçınamaz böylece, terminal olmayan üzerinde ENOTTY dönecekti. less
aslında isatty(3)
terminal boyutlarını kontrol etmeden önce kullanır , ancak isatty
sadece tty ioctl kullanarak ve hata eksikliğini kontrol ederek çalışır.
Gibi basit bir çağrı cihazı more(1)
(en azından util-linux sürümü) bile bu özelliğe sahiptir, çünkü muhtemelen bu dava için uygulanması en basit mantıklı davranıştır.
Eğer boru şey zaman unutmayın içine less
(örneğin grep foo bar.txt | less
), açmak için var /dev/tty
klavye girişi için. (Bunu bununla yaptığını görebilirsiniz echo foo | strace less
).
bash script.sh
,bash script.sh | cat
,bash script.sh > file
, ve ne olsun çıkış bakın.