В соответствии с man-страницей ls , вы должны иметь -O
возможность в сочетании с -l
возможностью просматривать флаги с помощью ls. Например:
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
Редактировать: просто, чтобы дать более конкретное решение для того, что хотел ОП (см. Комментарии ниже): чтобы увидеть, является ли папка скрытой или нет, мы можем передать -a
опцию ls для просмотра самой папки. Затем мы можем направить вывод в sed -n 2p
(благодаря переполнению стека ), чтобы получить требуемую строку этого вывода. Пример:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Редактировать 2: Для команды, которая должна работать независимо от того, файл это или папка, нам нужно сделать что-то более хакерское.
Необходимая строка вывода ls -al
зависит от того, является ли объект файлом или папкой, поскольку папки показывают общее количество, а файлы - нет. Чтобы обойти это, мы можем grep для персонажаr
. Это должно быть во всех файлах / папках (почти все должны иметь хотя бы одно разрешение на чтение), но не в итоговой строке.
Поскольку строка, которую мы хотим получить, становится первой строкой, мы можем использовать ее head -n 1
для получения первой строки (альтернативно, если вы предпочитаете sed,sed -n 1p
).
Так, например, с каталогом:
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 .
и с файлом:
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
Редактировать 3: См. Ответ Tyilo ниже для лучшего способа, чем поискать r
:)