Selon la page de manuel ls , vous devriez pouvoir -O
combiner l' -l
option avec l' option pour afficher les indicateurs avec ls. Par exemple:
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
Edit: Juste pour donner une solution plus spécifique à ce que l'OP voulait (voir les commentaires ci-dessous): Pour voir si un dossier est caché ou non, nous pouvons passer l' -a
option à ls pour afficher le dossier lui-même. Nous pouvons ensuite diriger la sortie vers sed -n 2p
(merci Stack Overflow ) pour obtenir la ligne requise de cette sortie. Un exemple:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Edit 2: Pour une commande qui devrait fonctionner, qu'il s'agisse d'un fichier ou d'un dossier, nous devons faire quelque chose d'un peu plus hacky.
La ligne de sortie requise ls -al
varie selon qu'il s'agit d'un fichier ou d'un dossier, car les dossiers affichent un nombre total, contrairement aux fichiers. Pour contourner cela, nous pouvons chercher le personnage r
. Cela devrait être dans ~ tous les fichiers / dossiers (presque tous devraient avoir au moins une autorisation de lecture), mais pas dans la ligne des totaux.
Comme la ligne que nous voulons obtenir devient alors la première ligne, nous pouvons utiliser head -n 1
pour obtenir la première ligne (une alternative, si vous préférez sed, sed -n 1p
pourrait être utilisée).
Ainsi, par exemple avec un répertoire:
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 .
et avec un fichier:
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
Edit 3: Voir la réponse de Tyilo ci-dessous pour une meilleure façon que de chercher r
:)