Alias aceitando variáveis do resultado da avaliação [duplicado]

0

Eu estava tentando definir um alias que me ajudasse a criar um cd para o diretório que é criado mais recentemente, e estou usando o seguinte no meu .bashrc:

alias cdlatest="latestdir=$(ls -td -- */|head -n 1); cd $latestdir"

Mas esse alias só funciona uma vez. Se eu mudar para um novo directoy, ele ainda tenta fazer o cd para o último diretório. Parece que a variável $(ls -td -- */|head -n 1) só é avaliada uma vez desde o início. Como consertar isso?

    
por cdnszip 12.06.2017 / 11:43

1 resposta

3

Altere suas aspas duplas em torno da definição de alias para única e você é bom para ir.

alias cdlatest='latestdir=$(ls -td -- */|head -n 1); cd $latestdir'

No entanto, sugiro algumas simplificações:

alias cdlatest='cd "$(\ls -td -- */|head -n 1)"'

onde eliminamos a variável intermediária "$ latestdir", cite os resultados da avaliação do comando $ (...) e use uma forma unaliased de ls.

Mas você precisa lembrar que isso não irá lidar com arquivos com novas linhas em seus nomes.

    
por 12.06.2017 / 12:50