Alias ​​não atribuído corretamente

Alias ​​não atribuído corretamente

Eu tenho um problema estranho com um alias do bash. Tenho o seguinte alias definido em meu .bashrc:

alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`'

No entanto, quando expando o alias recno shell, CTRL ALT Eobtenho:

nano Remember that all constraints must be readded!

Se eu executar o alias, recebo a mesma coisa:

nano Remember that all constraints must be readded!

Se eu usar, which recobtenho a expansão correta:

alias rec='nano `ls slurm-* | sort -t. -k3n | tail -1`'
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/nano-2.6.3-k2cwz7lwjd4zutb7r7cfo63apevyztuw/bin/nano
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/sort
/home/spack/opt/spack/linux-rhel6-x86_64/gcc-4.4.7/coreutils-8.26-icpocuezd6r7ydd73ipkehkg345372eo/bin/tail

Esta Remember that all constraints must be readded!é a saída de um script (supostamente) completamente não relacionado que escrevi. Alguma ideia do que está acontecendo aqui?

Responder1

Você está analisando ls,você não deveria fazer isso. eu penso issopoderiaser a fonte do seu problema.

Por exemplo, se pelo menos um dos seus slurm-*nomes de arquivo for como:

*\nRemember that all constraints must be readded!

ou

*\nRemember that all constraints must be readded!\n*

onde \né uma nova linha, sortrecebe mais linhas do que o esperado. Este nome de arquivo sozinho:

slurm-0.1.-5\nRemember that all constraints must be readded!

fará sortreceber duas linhas e então em sua saída a Remember …linha ficará depois da slurm-…linha. Não sei slurm-*exatamente como são seus nomes de arquivos. Eu nem tenho certeza se isso é o que realmente acontece. O que quero dizer é que você não deve analisar a saída de ls.


Outro fragmento fraco é onde você não cita o argumento a favor nano. Isto provavelmente não está relacionado ao seu problema atual , mas lembre-se nano a bde que o nano edit anão .b"a b"

informação relacionada