Verifique suas aspas simples. Aspas simples não se encaixam magicamente.
alias sll 'ls -l \!* | grep -oE '\''[^ ]+$'\'' | xargs ls -ld --'
Isso ainda é falho por vários motivos:
- Por causa de
[^ ]
, isso não funcionará para nomes de arquivo ou link que contenham espaços. - como você está tratando essa lista como uma lista de linhas, que não funcionará com nomes de destino de arquivo / link que contenham caracteres de nova linha.
- por causa de
xargs
, que não funcionará com nomes de arquivo / destino contendo apóstrofos, barras invertidas, aspas duplas e outros tipos de espaços em branco. - Para links simbólicos com caminhos relativos como seus destinos, isso só funciona para links simbólicos no diretório atual, pois o que você passa para o segundo
ls
é um caminho relativo para o diretório atual, enquanto links simbólicos são resolvido em relação ao caminho do arquivo de link simbólico (se você tiver um linka/b/c -> d
, isso é paraa/b/d
, nãod
no diretório atual). - você receberá uma mensagem de erro falsa devido à primeira linha
total <n>
da saída dels
. - para links simbólicos para links simbólicos, que não lhe darão o mesmo que
ls -lL
(pode ser o que você quiser).
Com zsh
, você pode:
ls -ld -- *(:A)
O modificador :A
expande os links simbólicos para o caminho absoluto canônico deles.
Um quase equivalente em sistemas GNU:
readlink -fz -- * | xargs -r0 ls -ld --