De acordo com o ls man page , você deve poder a opção -O
combinada com a opção -l
para visualizar flags com ls. Por exemplo:
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: Só para dar uma solução mais específica para o que o OP queria (veja os comentários abaixo):
Para ver se uma pasta está oculta ou não, podemos passar a opção -a
para ls para ver a pasta em si. Podemos, então, canalizar a saída para sed -n 2p
(obrigado Stack Overflow ) para obter a linha necessária dessa saída. Um exemplo:
mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .
Editar 2: Para um comando que deve funcionar independentemente de ser um arquivo ou uma pasta, precisamos fazer algo um pouco mais hacky.
A linha de saída necessária de ls -al
varia dependendo se a coisa é um arquivo ou pasta, pois as pastas mostram uma contagem total, enquanto os arquivos não. Para contornar isso, podemos grep para o caractere r
. Isso deve estar em ~ todos os arquivos / pastas (quase todos devem ter pelo menos uma permissão de leitura), mas não na linha de totais.
Como a linha que queremos obter se torna a primeira linha, podemos usar head -n 1
para obter a primeira linha (alternativa, se você preferir sed, sed -n 1p
poderia ser usado).
Então, por exemplo, com um diretório:
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 .
e com um arquivo:
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
Edite 3: Veja a resposta de Tyilo abaixo para uma maneira mais agradável do que grepping para r
:)