ls
kiểm tra xem đầu ra có đi đến một thiết bị đầu cuối không. Nếu đầu ra không đi đến một thiết bị đầu cuối, thì đó -1
là mặc định. (Điều này có thể được vô hiệu hóa bởi một trong những -C
, -m
hoặc -x
tùy chọn.)
Do đó, khi ls
được sử dụng trong một đường ống dẫn và bạn chưa ghi đè nó bằng một tùy chọn khác, ls
sẽ sử dụng -1
. Bạn có thể dựa vào điều này vì hành vi này được POSIX yêu cầu
Đặc điểm kỹ thuật POSIX
POSIX yêu cầu -1
như mặc định bất cứ khi nào đầu ra không đến thiết bị đầu cuối:
Thông số POSIX :
Định dạng mặc định sẽ là liệt kê một mục nhập trên mỗi dòng cho đầu ra tiêu chuẩn; các ngoại lệ là cho các thiết bị đầu cuối hoặc khi một trong các tùy chọn -C, -m hoặc -x được chỉ định. Nếu đầu ra là một thiết bị đầu cuối, định dạng được xác định theo thực hiện.
Ba tùy chọn ghi đè định dạng cột đơn mặc định là:
-C
Viết đầu ra đa văn bản-cột với các mục được sắp xếp xuống các cột, theo trình tự đối chiếu. Số lượng cột văn bản và các ký tự phân tách cột không được chỉ định, nhưng phải được điều chỉnh theo tính chất của thiết bị đầu ra. Tùy chọn này vô hiệu hóa đầu ra định dạng dài.
-m
Định dạng đầu ra luồng; liệt kê tên đường dẫn trên trang, được phân tách bằng ký tự <dấu phẩy> theo sau là ký tự <dấu cách>. Sử dụng ký tự <newline> làm dấu kết thúc danh sách và sau chuỗi phân tách khi không có chỗ trên một dòng cho mục nhập danh sách tiếp theo. Tùy chọn này vô hiệu hóa đầu ra định dạng dài.
-x
Giống như -C, ngoại trừ đầu ra nhiều cột văn bản được tạo ra với các mục được sắp xếp trên, thay vì xuống, các cột. Tùy chọn này vô hiệu hóa đầu ra định dạng dài.
Tài liệu GNU
Từ hướng dẫn sử dụng GNU ls :
'-1'
'--format = cột đơn'
Liệt kê một tệp trên mỗi dòng. Đây là mặc định cho ls khi đầu ra tiêu chuẩn không phải là một thiết bị đầu cuối . Xem thêm các tùy chọn -b và -q để chặn đầu ra trực tiếp của các ký tự dòng mới trong một tên tệp. [Nhấn mạnh thêm]
Ví dụ
Hãy tạo ba tệp:
$ touch file{1..3}
Khi đầu ra đi đến một thiết bị đầu cuối, GNU ls
chọn sử dụng định dạng nhiều cột:
$ ls
file1 file2 file3
Khi đầu ra đi đến một đường ống, thông số POSIX yêu cầu cột đơn là mặc định:
$ ls | cat
file1
file2
file3
Ba trường hợp ngoại lệ ghi đè hành vi cột đơn mặc định được -m
phân tách bằng dấu phẩy, -C
cho các cột được sắp xếp xuống và -x
cho các cột được sắp xếp trên:
$ ls -m | cat
file1, file2, file3
$ ls -C | cat
file1 file2 file3
$ ls -x | cat
file1 file2 file3
n=0; for i in .* *; do ((n++)) ; done ; echo $n
(bỏ. * nếu bạn không muốn đếm số đó). hoặc:ls -1d ./.* ./* | grep '^\./' | wc -l
(vì tên tệp không thể chứa '/')