Apakah mungkin ketika mendaftar direktori untuk melihat izin unix numerik seperti 644 daripada output simbolik -rw-rw-r--
Terima kasih.
unix
command-line
permissions
Jon Winstanley
sumber
sumber
alias cls="ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\"%0o \",k);print}'"
chmod 777 dir
perintah Anda mencetak izin sebagai767
Paling dekat yang bisa saya pikirkan (menjaganya agar tetap sederhana) adalah
stat
, dengan asumsi Anda tahu file mana yang Anda cari. Jika tidak,*
dapat menemukan sebagian besar dari mereka:Ini menangani lengket, suid dan perusahaan di luar kotak:
sumber
stat -f '%A %N' *
melakukan hal yang sama pada mac (FreeBSD)stat
tidakls
karena ini bukan jawaban yang benar. Namun, saya percaya ini adalah jawaban yang benar dalam konteks hasil yang diinginkan. Jikaawk
diizinkan dalam pipa, makafind
harus diizinkan di manastat
dipanggil-exec
; maka Anda dapat menggunakanstat
langsung tanpa*
stat -c '%a %n' * **/*
.Anda bisa menggunakan GNU find.
sumber
-maxdepth 1
opsi, jika tidak melintasi seluruh pohon direktori.Anda dapat menggunakan perintah berikut
Anda juga dapat menggunakan
filename
ataudirectoryname
bukannya*
untuk mendapatkan hasil tertentu.Di Mac, Anda bisa menggunakan
sumber
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
pada macOS 10.14.4, maka perintahnya seharusnyastat -f "%Lp %N" *
.%Lp
muncul untuk mencetak hal yang sama dengan%A
.@The MYYN
wow, awk bagus! Tapi bagaimana dengan suid, sgid dan sticky bit?
Anda harus memperluas filter Anda dengan s dan t, jika tidak mereka tidak akan menghitung dan Anda mendapatkan hasil yang salah. Untuk menghitung angka oktal untuk flag-flag khusus ini, prosedurnya sama tetapi indeksnya di 4 7 dan 10. flag-flag yang mungkin untuk file-file dengan bit set eksekusi adalah
---s--s--t
amd untuk file-file tanpa bit eksekusi---S--S--T
Untuk tes:
akan menghasilkan:
dan
akan memberi:
sumber
alias "lsmod=ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
Gunakan ini untuk menampilkan nilai izin numerik Unix (nilai oktal) dan nama file.
Gunakan ini untuk menampilkan nilai izin numerik Unix (nilai oktal) dan bit sgid dan sticky folder, nama pengguna pemilik, nama grup, ukuran total dalam byte dan nama file.
Tambahkan
%y
jika Anda memerlukan waktu modifikasi terakhir dalam format yang dapat dibaca manusia. Untuk opsi lebih lanjut lihat stat .Versi yang lebih baik menggunakan Alias
Menggunakan alias adalah cara yang lebih efisien untuk mencapai apa yang Anda butuhkan dan itu juga termasuk warna. Berikut ini menampilkan hasil Anda yang diatur oleh direktori grup terlebih dahulu, ditampilkan dalam warna, ukuran cetak dalam format yang dapat dibaca manusia (misalnya, 1K 234M 2G) edit
~/.bashrc
dan tambahkan alias untuk akun Anda atau secara global dengan mengedit/etc/profile.d/custom.sh
Mengetik
cls
menampilkan hasil perintah LS Anda yang baru.Pohon Folder
Saat Anda mengedit bashrc atau custom.sh, sertakan alias berikut untuk melihat representasi grafis tempat pengetikan
lstree
akan menampilkan struktur hierarki folder Anda saat iniIni akan menampilkan:
sumber
Anda tidak menggunakan ls untuk mendapatkan informasi izin file. Anda menggunakan perintah stat. Ini akan memberi Anda nilai numerik yang Anda inginkan. "Unix Way" mengatakan bahwa Anda harus menciptakan skrip Anda sendiri menggunakan ls (atau 'echo *') dan stat dan apa pun yang Anda suka untuk memberikan informasi dalam format yang Anda inginkan.
sumber
Membangun dari jawaban yang dipilih dan saran untuk menggunakan alias , saya mengonversinya menjadi fungsi sehingga melewati direktori ke daftar dimungkinkan.
sumber