O problema é que você precisa citar os backticks em sua definição de alias. Aspas duplas ( "
) não citam a substituição do comando. Você precisará de aspas simples ( '
). Use
alias via='vim 'ls -rt | tail -1''
Embora você realmente queira:
alias via='vim -- "$(ls -t | head -n 1)"'
Isto é:
- use a forma moderna de substituição de comando (
$(...)
) enquanto estivermos nisso. - faça uma citação para desabilitar o operador split + glob (caso contrário, não funcionaria corretamente se o nome do arquivo tivesse caracteres IFS ou curingas (ainda não funciona se tiver caracteres de nova linha)).
- Use
--
para marcar o final das opções paravim
(caso contrário, não funcionaria para nomes de arquivos que começam com-
ou+
). - Use
ls -t | head
em vez dels -rt | tail
para obter o resultado mais cedo.
Não use
alias via="vim 'ls -rt | tail -1'"
Se você fizer isso, a substituição do comando acontece quando você define o alias, não quando você o executa. Tente digitar alias via
para ver que a saída não é realmente alias via='vim 'ls -rt | tail -1''
, mas sim alias via='vim <prematurely expanded output>'
.