Như William Pursell đã đề cập , lessđọc tổ hợp phím của người dùng từ thiết bị đầu cuối. Nó rõ ràng mở ra /dev/tty, các thiết bị đầu cuối kiểm soát; cung cấp cho nó một bộ mô tả tệp, tách biệt với đầu vào tiêu chuẩn, từ đó nó có thể đọc đầu vào tương tác của người dùng. Nó có thể đồng thời đọc dữ liệu để hiển thị từ đầu vào tiêu chuẩn của nó nếu cần thiết. (Nó cũng có thể ghi trực tiếp vào thiết bị đầu cuối nếu cần thiết.)
Bạn có thể thấy điều này xảy ra bằng cách chạy
some_command | strace -o less.trace -e open,read,write less
Di chuyển xung quanh đầu vào, thoát lessvà xem nội dung của less.trace: bạn sẽ thấy nó mở /dev/ttyvà đọc từ cả hai mô tả tệp 0 và bất kỳ cái nào được trả về khi mở ra /dev/tty(có thể là 3).
Đây là thực tế phổ biến cho các chương trình muốn đảm bảo họ đọc và ghi vào thiết bị đầu cuối. Một ví dụ là SSH, ví dụ khi nó yêu cầu mật khẩu hoặc cụm mật khẩu.
Như được giải thích bởi schily , nếu /dev/ttykhông thể mở được, lesssẽ đọc từ lỗi tiêu chuẩn của nó (mô tả tệp 2). lessViệc sử dụng /dev/ttyđã được giới thiệu trong phiên bản 177, phát hành vào ngày 2 tháng 4 năm 1991.
Nếu bạn thử chạy cat /dev/tty | less, như được đề xuất bởi Hagen von Eitzen , lesssẽ thành công trong việc mở /dev/ttynhưng sẽ không nhận được bất kỳ đầu vào nào từ nó cho đến khi catđóng nó. Vì vậy, bạn sẽ thấy màn hình trống, và không có gì khác cho đến khi bạn nhấn CtrlCđể giết cat(hoặc giết nó theo một cách khác); sau đó lesssẽ hiển thị bất cứ thứ gì bạn gõ khi catđang chạy và cho phép bạn kiểm soát nó.
lessđọc dữ liệu để hiển thị từ stdin và nó đọc các lệnh từ tty. Chúng là những thứ khác nhau.