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}'
Pour la création d'un alias (exemple ci-dessous: 'cls' de la commande), l'utilisation: 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}'"
Je copie et collé à la ligne de danger89 et constaté que, curieusement, la sortie a commencé avec %0..o par ligne, au lieu de dire 755. Si quelqu'un d'autre vient dans ce, la cause semble être un personnage caché entre les 0 et les o. Une fois supprimé la commande est mis en place bien. Cheers!
Je pense qu'il y a un problème de calcul. Après chmod 777 dir votre commande imprime les autorisations 767
Comme Donna mentionne, il y a un drôle de personnage (ou 2) entre 0 et o, aussi, bizarrement il ressemble à ceci est de l'ajouter...
Quelqu'un aurait-il un travail d'alias pour cette commande? awk erreur d'exécution impliquant "%0 " sur un dérivé de debian
Cela ne parvient pas à reconnaître les bits de t et s. Vous devez utiliser le "stat' de la commande pour obtenir les informations d'autorisation de fichier. Calculer à la main de conduire à des erreurs!
préserve en fait la couleur si vous utilisez le ls option --color, trop.
Sympa mais ne fonctionne pas dans http://www.codeanywhere.com la machine virtuelle terminal. awk: cmd. ligne:3: awk: cmd. ligne:3: ^ inattendu retour à la ligne ou à la fin de la chaîne de awk: cmd. ligne:3: *2^(8-i));if(k)printf("%0 ",k);print} awk: cmd. ligne:3: ^ erreur de syntaxe awk: cmd. ligne:3: *2^(8-i));if(k)printf("%0 ",k);print} awk: cmd. ligne:3: ^ erreur de syntaxe awk: cmd. ligne:3: *2^(8-i));if(k)printf("%0 ",k);print} awk: cmd. ligne:3: ^ erreur de syntaxe
Plus proche que je peux penser (en gardant assez simple) est stat, en supposant que vous connaissez les fichiers que vous recherchez. Si vous ne le faites pas, * pouvez trouver la plupart d'entre eux:
Cela fonctionne très bien sous Linux, j'ai trouvé stat -f '%A %N' * fait la même chose sur un mac (FreeBSD)
Je suppose que l'argument est que stat n'est pas ls donc ce n'est pas la bonne réponse. Cependant, je crois que c'est la bonne réponse dans le contexte de la sortie souhaitée. Si awk est autorisé dans une pipe, puis find devrait être autorisée dans le cas où stat est appelé dans -exec; vous pouvez ensuite utiliser stat directement, sans *
C'est beaucoup mieux, plus courts et 100% de travail sur n'importe quel système
Si vous souhaitez utiliser stat pour voir les droits de manière récursive, en vertu de bash, utilisez stat -c '%a %n' * **/*.
Aussi, vous pouvez utiliser n'importe quel filename ou directoryname au lieu de * pour obtenir un résultat précis.
Sur Mac, vous pouvez utiliser
stat -f '%A %N' *
Ne fonctionne pas pour moi. stat: illegal option -- cusage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
fonctionne sur ubuntu 14.04.. ne jamais avoir à vous rappeler ce que j'ai ajouté un alias dans mon .bashrc: alias xxx="stat -c '%a %n' *"
Utile! Comment vous déterrer le %de Un qui ne montre même dans l'homme de stat sur Mac?
C'est en réalité un FreeBSD commande, et Mac arrive juste à être construit qu'en l'utilisant comme supérieur du noyau.
Si nous n'utilisons que l'information présentée dans man stat sur macOS 10.14.4, puis la commande doit être stat -f "%Lp %N" *. %Lp semble imprimer la même chose que %A.
wow, nice awk! Mais qu'en est suid, sgid et sticky bit?
Vous devez prolonger votre filtre avec s et t, sinon ils ne seront pas comptabilisés et vous obtenez le résultat erroné. Pour calculer le nombre octal pour cela, des indicateurs, la procédure est la même, mais l'indice est au 4, 7 et 10. les indicateurs possibles pour les fichiers à exécuter sont ---s--s--t amd pour les fichiers sans exécuter ensemble de bits sont ---S--S--T
ls -l | 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
}'
+1 Merci! J'ai réduit à 1 ligne alias: 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;}'"
Vous n'utilisez pas la commande ls pour obtenir une autorisation de fichier d'informations. Vous utilisez la commande stat. Il vous donnera les valeurs numériques que vous souhaitez. Le "Unix" est dit que vous devez inventer votre propre script à l'aide de ls (ou " echo *') et stat et tout ce que vous aimez pour donner de l'information dans le format que vous désirez.
Utilisez cette option pour afficher les Unix numérique autorisation de valeurs (valeurs octales) et un nom de fichier.
stat -c '%a %n' *
Utilisez cette option pour afficher les Unix numérique autorisation de valeurs (valeurs octales) et le dossier de sgid et sticky bit, le nom d'utilisateur du propriétaire, nom du groupe, la taille totale en octets et un nom de fichier.
stat -c '%a %A %U %G %s %n' *
Ajouter %y si vous avez besoin de temps de la dernière modification en format lisible par l'homme. Pour plus d'options consultez stat.
Meilleure version à l'aide d'un Alias
À l'aide d'un alias est un moyen plus efficace pour accomplir ce que vous avez besoin, et il comprend aussi la couleur. Le message suivant s'affiche, vos résultats organisés par groupe de répertoires d'abord, l'affichage en couleur, de formats d'impression en format lisible par l'homme (par exemple, 1K 234M 2G) modifier votre ~/.bashrc et ajouter un alias pour votre compte ou à l'échelle mondiale par l'édition /etc/profile.d/custom.sh
Tapant cls affiche votre nouvelle commande LS résultats.
alias cls="ls -lha --color=always -F --group-directories-first |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;}'"
Arborescence De Dossiers
Pendant que vous modifiez votre bashrc ou custom.sh inclure les éléments suivants alias pour afficher une représentation graphique où tapant lstree affichera votre arborescence du dossier
alias lstree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'"
# ls, with chmod-like permissions and more.
# @param $1 The directory to ls
function lls {
LLS_PATH=$1
ls -AHl $LLS_PATH | 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}"
}
il peut presque ..
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
votre commande imprime les autorisations767
ls
option--color
, trop.Plus proche que je peux penser (en gardant assez simple) est
stat
, en supposant que vous connaissez les fichiers que vous recherchez. Si vous ne le faites pas,*
pouvez trouver la plupart d'entre eux:Il gère collant, suid et de l'entreprise hors de la boîte:
stat -f '%A %N' *
fait la même chose sur un mac (FreeBSD)stat
n'est pasls
donc ce n'est pas la bonne réponse. Cependant, je crois que c'est la bonne réponse dans le contexte de la sortie souhaitée. Siawk
est autorisé dans une pipe, puisfind
devrait être autorisée dans le cas oùstat
est appelé dans-exec
; vous pouvez ensuite utiliserstat
directement, sans*
stat -c '%a %n' * **/*
.vous pouvez simplement utiliser GNU trouver.
-maxdepth 1
option, sinon il traverse l'ensemble de l'arborescence du répertoire.Vous pouvez utiliser la commande suivante
Aussi, vous pouvez utiliser n'importe quel
filename
oudirectoryname
au lieu de*
pour obtenir un résultat précis.Sur Mac, vous pouvez utiliser
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
sur macOS 10.14.4, puis la commande doit êtrestat -f "%Lp %N" *
.%Lp
semble imprimer la même chose que%A
.@La MYYN
wow, nice awk! Mais qu'en est suid, sgid et sticky bit?
Vous devez prolonger votre filtre avec s et t, sinon ils ne seront pas comptabilisés et vous obtenez le résultat erroné. Pour calculer le nombre octal pour cela, des indicateurs, la procédure est la même, mais l'indice est au 4, 7 et 10. les indicateurs possibles pour les fichiers à exécuter sont
---s--s--t
amd pour les fichiers sans exécuter ensemble de bits sont---S--S--T
Pour le test:
permettra:
et
donnera:
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;}'"
Vous n'utilisez pas la commande ls pour obtenir une autorisation de fichier d'informations. Vous utilisez la commande stat. Il vous donnera les valeurs numériques que vous souhaitez. Le "Unix" est dit que vous devez inventer votre propre script à l'aide de ls (ou " echo *') et stat et tout ce que vous aimez pour donner de l'information dans le format que vous désirez.
Utilisez cette option pour afficher les Unix numérique autorisation de valeurs (valeurs octales) et un nom de fichier.
Utilisez cette option pour afficher les Unix numérique autorisation de valeurs (valeurs octales) et le dossier de sgid et sticky bit, le nom d'utilisateur du propriétaire, nom du groupe, la taille totale en octets et un nom de fichier.
Ajouter
%y
si vous avez besoin de temps de la dernière modification en format lisible par l'homme. Pour plus d'options consultez stat.Meilleure version à l'aide d'un Alias
À l'aide d'un alias est un moyen plus efficace pour accomplir ce que vous avez besoin, et il comprend aussi la couleur. Le message suivant s'affiche, vos résultats organisés par groupe de répertoires d'abord, l'affichage en couleur, de formats d'impression en format lisible par l'homme (par exemple, 1K 234M 2G) modifier votre
~/.bashrc
et ajouter un alias pour votre compte ou à l'échelle mondiale par l'édition/etc/profile.d/custom.sh
Tapant
cls
affiche votre nouvelle commande LS résultats.Arborescence De Dossiers
Pendant que vous modifiez votre bashrc ou custom.sh inclure les éléments suivants alias pour afficher une représentation graphique où tapant
lstree
affichera votre arborescence du dossierAfficher:
En profitant de l' la réponse choisie et la suggestion pour l'utilisation d'un alias, je me suis converti à une fonction, de sorte que le passage d'un répertoire à la liste est possible.