¿Es posible cuando se enumera un directorio para ver permisos numéricos de Unix como 644 en lugar de la salida simbólica -rw-rw-r--
Gracias.
unix
command-line
permissions
Jon Winstanley
fuente
fuente
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
su comando imprima permisos como767
Lo más cerca que puedo pensar (manteniéndolo lo suficientemente simple) es
stat
, suponiendo que sepa qué archivos está buscando. Si no lo hace,*
puede encontrar la mayoría de ellos:Maneja pegajoso, suid y compañía fuera de la caja:
fuente
stat -f '%A %N' *
hace lo mismo en una Mac (FreeBSD)stat
no es,ls
por lo tanto, esta no es la respuesta correcta. Sin embargo, creo que esta es la respuesta correcta en el contexto de la salida deseada. Siawk
se permite en una tubería, sefind
debe permitir dondestat
se llama-exec
; entonces puede usarstat
directamente sin*
stat -c '%a %n' * **/*
.puedes usar GNU find.
fuente
-maxdepth 1
opción, de lo contrario atraviesa todo el árbol de directorios.Puedes usar el siguiente comando
También puede usar cualquiera
filename
o endirectoryname
lugar de*
obtener un resultado específico.En Mac, puedes usar
fuente
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
macOS 10.14.4, entonces el comando debería serstat -f "%Lp %N" *
.%Lp
parece imprimir lo mismo que%A
.@The MYYN
wow, ¡qué bien! ¿Pero qué hay de suid, sgid y pegajoso?
Debe extender su filtro con syt, de lo contrario no contarán y obtendrá el resultado incorrecto. Para calcular el número octal para estos indicadores especiales, el procedimiento es el mismo, pero el índice está en 4 7 y 10. Los posibles indicadores para archivos con conjunto de bits de ejecución son
---s--s--t
amd para los archivos sin conjunto de bits de ejecución.---S--S--T
Para prueba:
resultará en:
y
daré:
fuente
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;}'"
Use esto para mostrar los valores de permisos numéricos de Unix (valores octales) y el nombre del archivo.
Use esto para mostrar los valores de permisos numéricos de Unix (valores octales) y el bit sgid y adhesivo de la carpeta, el nombre de usuario del propietario, el nombre del grupo, el tamaño total en bytes y el nombre del archivo.
Agregue
%y
si necesita la hora de la última modificación en formato legible para humanos. Para más opciones ver estadísticas .Mejor versión con un alias
Usar un alias es una forma más eficiente de lograr lo que necesita y también incluye color. A continuación, se muestran primero los resultados organizados por directorios de grupo, se muestran en color, se imprimen en formato legible para humanos (por ejemplo, 1K 234M 2G), edite
~/.bashrc
y agregue un alias para su cuenta o globalmente editando/etc/profile.d/custom.sh
Al escribir, se
cls
muestran los nuevos resultados del comando LS.Árbol de carpetas
Mientras edita su bashrc o custom.sh, incluya el siguiente alias para ver una representación gráfica donde la escritura
lstree
mostrará la estructura de árbol de carpetas actualMostraría:
fuente
No utiliza ls para obtener la información de permiso de un archivo. Utiliza el comando stat. Le dará los valores numéricos que desea. La "Forma Unix" dice que debes inventar tu propio script usando ls (o 'echo *') y stat y cualquier otra cosa que quieras para dar la información en el formato que desees.
fuente
Partiendo de la respuesta elegida y la sugerencia de usar un alias , la convertí en una función para que sea posible pasar un directorio a la lista.
fuente