
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 rec
no shell, CTRL
ALT
E
obtenho:
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 rec
obtenho 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, sort
recebe mais linhas do que o esperado. Este nome de arquivo sozinho:
slurm-0.1.-5\nRemember that all constraints must be readded!
fará sort
receber 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 b
de que o nano edit a
não .b
"a b"