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ãodno 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 --