Theo trang man ls , bạn sẽ có thể -O
tùy chọn kết hợp với -l
tùy chọn để xem cờ với ls. Ví dụ:
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
chflags hidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
chflags nohidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
Chỉnh sửa: Chỉ để đưa ra một giải pháp cụ thể hơn cho những gì OP muốn (xem bình luận bên dưới): Để xem thư mục có bị ẩn hay không, chúng ta có thể chuyển -a
tùy chọn cho ls để xem chính thư mục đó. Sau đó chúng ta có thể dẫn đầu ra vào sed -n 2p
(nhờ Stack Overflow ) để có được dòng yêu cầu của đầu ra đó. Một ví dụ:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Chỉnh sửa 2: Đối với một lệnh sẽ hoạt động bất kể đó là tệp hay thư mục, chúng ta cần thực hiện một số thứ hơi hack hơn.
Dòng đầu ra cần thiết ls -al
khác nhau tùy thuộc vào việc vật đó là tệp hay thư mục, vì các thư mục hiển thị tổng số, trong khi các tệp thì không. Để giải quyết vấn đề này, chúng ta có thể grep cho nhân vật r
. Điều này phải có trong ~ tất cả các tệp / thư mục (gần như tất cả phải có ít nhất một quyền đọc), nhưng không phải trong dòng tổng.
Khi dòng chúng tôi muốn nhận sau đó trở thành dòng đầu tiên, chúng tôi có thể sử dụng head -n 1
để có được dòng đầu tiên (thay thế, nếu bạn thích sed, sed -n 1p
có thể được sử dụng).
Vì vậy, ví dụ với một thư mục:
mkdir foo
chflags hidden foo
ls -aOl foo | grep r | head -n 1
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
và với một tập tin:
touch foo.txt
chflags hidden foo.txt
ls -aOl foo.txt | grep r | head -n 1
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
Chỉnh sửa 3: Xem câu trả lời của Tyilo bên dưới để biết cách tốt hơn so với grepping cho r
:)