En utilisant stat -c "%a %n" *
j'obtiens des autorisations de fichier en mode octal (tel que 755). Existe-t-il un moyen de voir les autorisations de fichier en mode binaire (tel que 111 101 101)?
Pour un seul fichier:
stat -c "%a" filename.txt | xargs -I PERM echo "obase=2; ibase=8; PERM" | bc
Et en tant que script plus clair pour plus d'un fichier:
#!/bin/bash
for file in *
do
perm=$(stat -c "%a" "$file")
bin=$(echo "obase=2; ibase=8; $perm" | bc)
echo "$bin $file"
done
le résultat:
110110100 baz
110110100 foo
110110101 bar
for file in *
.stat -c "%a
nous recueillons l’autorisation de fichier en octal, puisecho
, nous ajoutons d’autres détails nécessaires à permission
et nous les transmettons à bc
.bc
effectue la conversion, puis nous affichons le résultat et le nom du fichier.Vous pouvez le faire en utilisant le module Perl stat , par exemple. donné
$ stat -c '%a %n' *
600 other file
775 somedir
664 somefile
ensuite
$ Perl -MFile::stat -e 'printf "%b %s\n", (stat $_)->[2] & 07777, $_ for @ARGV' *
110000000 other file
111111101 somedir
110110100 somefile
$ python -c 'import sys,os;[ sys.stdout.write( " ".join([bin(os.stat( i ).st_mode)[-9:],i,"\n"]) ) for i in sys.argv[1:] ]' /etc/passwd
110100100 /etc/passwd
Le travail est effectué via la fonction os.stat()
, qui renvoie un ensemble d'attributs de fichier, parmi lesquels isst_mode
au format décimal. Nous le convertissons ensuite en binaire et extrayons les 9 derniers chiffres.
Tout est effectué dans le cadre de la compréhension de liste pour fonctionner sur tous les fichiers donnés en ligne de commande (vous pouvez donc fournir plusieurs fichiers ou utiliser Globstar).
en tant que script
#!/usr/bin/env python2
import sys, os
for filename in sys.argv[1:]:
perms = os.stat(filename).st_mode
print bin(perms)[-9:], filename
Si vous voulez juste visualiser les permissions de fichiers en binaire, vous pouvez utiliser la première colonne de ls -l
:
$ ls -ld /bin
drwxr-xr-x 2 root root 4096 mai 18 05:38 /bin
Ici vous pouvez voir que rwxr-xr-x
correspond à 111101101