
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 rec
en el shell CTRL
ALT
E
obtengo:
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 rec
obtengo 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 \n
hay una nueva línea, luego sort
recibe más líneas de las esperadas. Este nombre de archivo solo:
slurm-0.1.-5\nRemember that all constraints must be readded!
hará sort
recibir 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 b
que hace nano edit a
, entonces b
no "a b"
.