Alias ​​no asignado correctamente

Alias ​​no asignado correctamente

Tengo un problema extraño con un alias de bash. Tengo el siguiente alias definido en mi .bashrc:

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

Sin embargo, cuando expando el alias recen el shell CTRL ALT Eobtengo:

nano Remember that all constraints must be readded!

Si ejecuto el alias, obtengo lo mismo:

nano Remember that all constraints must be readded!

Si lo uso which recobtengo la expansión correcta:

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

Este Remember that all constraints must be readded!es el resultado de un script (supuestamente) completamente ajeno que he escrito. ¿Alguna idea de lo que está pasando aquí?

Respuesta1

Estás analizando ls,no deberías hacer esto. lo piensopuedeser la fuente de tu problema.

Por ejemplo, si al menos uno de sus slurm-*nombres de archivo es como:

*\nRemember that all constraints must be readded!

o

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

donde \nhay una nueva línea, luego sortrecibe más líneas de las esperadas. Este nombre de archivo solo:

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

hará sortrecibir dos líneas y luego en su salida la Remember …línea estará después de la slurm-…línea. No sé cómo slurm-*se ven exactamente tus nombres de archivos. Ni siquiera estoy seguro de que esto sea lo que realmente sucede. Mi punto es que no deberías analizar la salida de ls.


Otro fragmento débil es donde no se cita el argumento a favor nano. Probablemente esto no esté relacionado con su problema actual, pero tenga en cuenta nano a bque hace nano edit a, entonces bno "a b".

información relacionada