Eu posso mostrar o arquivo de destino que um link aponta para o uso ls -l
:
snowch$ ls -l /usr/local/bin/mvn
lrwxr-xr-x 1 snowch admin 29 12 Dec 08:58 /usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Existe uma maneira de mostrar menos saída sem precisar canalizar outro comando como o awk? Por exemplo:
snowch$ ls ?? /usr/local/bin/mvn
/usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Estou executando o 3.2.53 no OS X 10.9.5. A saída de vários comandos é mostrada abaixo:
snowch$ ls -H /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ ls -L /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ file /usr/local/bin/mvn
/usr/local/bin/mvn: POSIX shell script text executable
snowch$ file -b /usr/local/bin/mvn
POSIX shell script text executable
stat -f "%N -> %Y" -- /usr/local/bin/mvn
funcionou muito bem. Obrigado!stat -c %N -- /usr/local/bin/mvn
. Para remover as citações, tive que canalizar isso para dentro| perl -pe 's/['"'"'`]//g'
tr -d \'\`
seria suficiente. Observe que esse sistema RHEL teria GNUfind
com o qual você terá mais controle.Use o
file
comandoou
Além disso, por favor, vá ler página homem de
ls
e verificar as opções-L
e-H
e ver se isso seria suficiente a sua exigência.fonte
ls
opções, mas nãofile
. Infelizmente, nenhum dos dois parece funcionar :(linux
caixa. Adicioneosx
como uma de suas tags. Isso deve chamar a atenção dososx
usuários também. Editei a postagem para adicionar a tag, mas não tenho créditos suficientes para que a edição apareça imediatamente.Com um GNU
ls
pelo menos (e, aparentemente,tcsh
a implementação), você pode hackear a$LS_COLORS
variável de ambiente para inserir delimitadores onde quiser (mastcsh
o built-inls-F
não faz destinos de link - apenas sinalizadores de link ) Normalmentels
insere escapes arbitrários e imprimíveis do terminal com base nos valores armazenados nesse ambiente var, mas não há nada que nos impeça de inserir algo arbitrário. Mais sobre isso aqui .Por exemplo:
Isso coloca uma string como
//
no início de todas as listagens (logo anteslrwcrwx
) e a///\n
logo antes do nome do arquivo de qualquer link.sed
em seguida, filtra os intervalos de linhas - eled
exclui todas as linhas de entrada até encontrar///
e a partir daí, até a próxima linha correspondente//
, excluirá as linhas correspondentes//
. Portanto, ele obtém apenas o nome e o destino do link - independentemente dos caracteres intervenientes. Isso ocorre porque/
não pode ocorrer em um nome de arquivo - e aqueles em qualquer caminho quels
podem ser impressos ocorrerão apenas individualmente.Vejo?
... que imprime:
Tente você mesmo.
fonte
ls
que suportaLS_COLORS
essa maneira e a--color=always
e options após argumentos? Se em um sistema GNU, por que você usaria algo complicado quando você pode usarfind
oustat
? Isso também provavelmente não funcionará se você fizer algumaln -s /// some-file
.ls
. Lembro-me de ler isso em algum outro lugar meses atrás, sobrels
tudo tendendo a aceitar um termo como sintaxe. Bom argumento sobre oln -s ///
assunto - mas os\0
NULs também funcionam - e-R
ecursivamente. Quanto ao porquê - bem, é fácil de usar. Em alguns casos, mais fácil do quefind
- e parecia um pouco mais sobre o assunto aqui do quefind
teria sido. De qualquer forma, poucas pessoas consideram isso, então eu menciono quando sou lembrado.tcsh
possuem umls-F
built-in que suportaLS_COLORS
da mesma maneira que algumas versões do GNUls
, mas ele recorrels -F
se você passar alguma opção para ele, para que não funcione aqui, a menos quels
esteja o GNUls
no seu sistema.[No Linux / Bash]
Eu faria o seguinte:
O
sed
comando recolhe vários espaços em um único espaço; acut
extrai do campo 9 para a frente, onde o campo é um separador de espaço.Saída típica disso:
As alternativas são:
Mas esses são imperfeitos: o primeiro pode gerar espaços à direita; o segundo, espaços principais.
fonte