lesssprawdza, czy stdoutjest to terminal i zachowuje się tak, jak catnie jest (kopiuje standardowe wejście na standardowe wyjście, aż do EOF).
Ta funkcja pozwala pisać skrypty lub programy, które zawsze wysyłają dane wyjściowe (np. Dane --helpwyjściowe), lessjednocześnie umożliwiając łatwe przekierowanie do pliku. Byłoby do bani, gdyby some_command --fullhelp > help.txtnadal czekał na spację na stdin, aby przewinąć tekst lub coś w tym rodzaju. Niektóre polecenia (np. man) Sprawdzają, czy ich dane wyjściowe decydują, czy wysłać dane wyjściowe za pomocą pagera, czy nie. Jeśli biegniesz man ls > ls.txt, nigdy nie wywołuje twojego $PAGER.
lessZachowanie przypominające kota jest przydatne, jeśli zapomnisz edytować go z jednej linii podczas dodawania kolejnych etapów do rurociągu.
lessmusi obliczyć wymiary terminala (rozmiar ekranu, aby wiedzieć, ile linii ma pokazać jednocześnie). ioctl(2)Używa on stdoutwróci ENOTTY na non-końcowy, więc nie można uniknąć manipulowania niekońcową sprawę tak. lessfaktycznie używa isatty(3)przed sprawdzeniem wymiarów terminala, ale isattydziała, próbując ioctl-a tylko tty i sprawdzając brak błędu.
Nawet prosty pager jak more(1)(przynajmniej wersja util-linux) ma tę funkcję, ponieważ jest to prawdopodobnie najprostsze rozsądne zachowanie, które można zastosować w tym przypadku.
Zauważ, że kiedy wpinasz coś do less (np. grep foo bar.txt | less), Musi się otwierać /dev/ttyna klawiaturę. (Możesz to zobaczyć za pomocą echo foo | strace less).
bash script.sh,bash script.sh | cat,bash script.sh > file, i zobaczyć, co wyjście dostać.