De acordo com a página de manual ls , você deve poder -O
combinar a -l
opção com a opção de exibir sinalizadores 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
Editar: Apenas para fornecer uma solução mais específica para o que o OP queria (veja os comentários abaixo): Para verificar se uma pasta está oculta ou não, podemos passar a -a
opção para ls para visualizar a própria pasta. Podemos então canalizar a saída sed -n 2p
(graças ao 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 .
Edit 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 ls -al
varia de acordo com a coisa ser um arquivo ou uma pasta, pois as pastas mostram uma contagem total, enquanto os arquivos não. Para contornar isso, podemos cumprimentar o personagem 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, podemos usar head -n 1
a primeira (alternativa, se você preferir o sed, sed -n 1p
pode ser usada).
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
Edit 3: Veja a resposta de Tyilo abaixo para uma maneira melhor do que grepping para r
:)