Menurut halaman manual ls , Anda harus dapat -O
dikombinasikan dengan -l
opsi untuk melihat flag dengan ls. Sebagai contoh:
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
Sunting: Hanya untuk memberikan solusi yang lebih spesifik untuk apa yang diinginkan OP (lihat komentar di bawah): Untuk melihat apakah folder disembunyikan atau tidak, kita dapat memberikan -a
opsi kepada ls untuk melihat folder itu sendiri. Kami kemudian dapat menyalurkan output ke sed -n 2p
(terima kasih Stack Overflow ) untuk mendapatkan garis yang diperlukan dari output itu. Sebuah contoh:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Sunting 2: Untuk perintah yang seharusnya berfungsi terlepas dari apakah itu file atau folder, kita perlu melakukan sesuatu yang sedikit lebih meretas.
Garis keluaran yang diperlukan ls -al
bervariasi tergantung pada apakah benda itu berupa file atau folder, karena folder menunjukkan jumlah total, sedangkan file tidak. Untuk menyiasati ini, kita dapat memahami karakter r
. Ini harus di ~ semua file / folder (hampir semua harus memiliki setidaknya satu izin baca), tetapi tidak di baris total.
Karena baris yang ingin kita dapatkan kemudian menjadi baris pertama, kita dapat menggunakan head -n 1
untuk mendapatkan baris pertama (alternatif, jika Anda lebih suka sed, sed -n 1p
bisa digunakan).
Jadi, misalnya dengan direktori:
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 .
dan dengan file:
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
Sunting 3: Lihat jawaban Tyilo di bawah ini untuk cara yang lebih baik daripada menerima r
:)
ls -Ol fooDir/ | grep hidden
) untuk melihat hanya file / folder yang tersembunyi. Ini masih akan menampilkan semua file, tetapi jika Anda menyalurkannya melalui beberapa sihir sed / awk (orang lain harus membantu di sini, saya khawatir) Anda harus bisa mendapatkan hanya daftar file.-a
opsi ke ls. Untuk mendapatkan garis yang Anda butuhkan dari output, Anda dapat menggunakan sed. Sebagai contoh:ls -aOl foo | sed -n 2p
. Ini akan menampilkan satu baris output. Jika itu mengandung kata "tersembunyi", maka foo disembunyikan. Jika tidak, foo tidak disembunyikan. :)ls -Old dirname/
akan menunjukkan kepada Anda properti direktori itu sendiri, bukan isinya.Temukan solusinya di sini: Bagaimana saya bisa membuat saya menunjukkan informasi tentang direktori yang ditentukan saja, bukan info tentang sub-file atau isi foldernya?
Yang pada dasarnya adalah
ls -ldO foo
dan kemudian Anda hanya menambahkan| awk '{ print $5 }'
agar menampilkan informasi.sumber
stat
.Seperti yang dirujuk oleh @ Tyilo , @Sorpigal menyarankan untuk mencoba
stat
, yang menyandikan "flag pengguna" dengan%Xf
(ia X menyandikan pengguna f lag), dan jauh lebih aman untuk parsing mesin.Nilai-nilai hex untuk bendera pengguna tinggal di sini:
grep UF /usr/include/sys/stat.h
. Mulai dari macOS 10.11:sumber