Laut der Manpage ls sollten Sie in der Lage sein, die -O
Option mit der -l
Option zu kombinieren , Flags mit ls anzuzeigen. Beispielsweise:
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
Bearbeiten: Nur um eine spezifischere Lösung für das zu finden, was das OP wollte (siehe Kommentare unten): Um zu sehen, ob ein Ordner ausgeblendet ist oder nicht, können wir die -a
Option an ls übergeben, um den Ordner selbst anzuzeigen. Wir können dann die Ausgabe in sed -n 2p
(dank Stack Overflow ) weiterleiten , um die erforderliche Zeile dieser Ausgabe zu erhalten. Ein Beispiel:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Bearbeiten 2: Für einen Befehl, der unabhängig davon funktionieren soll, ob es sich um eine Datei oder einen Ordner handelt, müssen wir etwas Hackigeres tun.
Die erforderliche Ausgabezeile von ls -al
hängt davon ab, ob es sich um eine Datei oder einen Ordner handelt, da Ordner eine Gesamtanzahl aufweisen, Dateien hingegen nicht. Um dies zu umgehen, können wir nach dem Charakter suchen r
. Dies sollte in ~ allen Dateien / Ordnern sein (fast alle sollten mindestens eine Leseberechtigung haben), aber nicht in der Summenzeile.
Da die Zeile, die wir erhalten möchten, zur ersten Zeile wird, können wir head -n 1
die erste Zeile verwenden (alternativ kann eine Alternative verwendet werden, wenn Sie sed bevorzugen sed -n 1p
).
Also zum Beispiel mit einem Verzeichnis:
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 .
und mit einer Datei:
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: Siehe Tyilos Antwort unten für eine schönere Art als nach zu greifen r
:)