Псевдоним назначен неправильно

Псевдоним назначен неправильно

У меня странная проблема с псевдонимом bash. У меня в .bashrc определен следующий псевдоним:

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

Однако, когда я раскрываю псевдоним recв оболочке, CTRL ALT Eя получаю:

nano Remember that all constraints must be readded!

Если я выполню псевдоним, то получу то же самое:

nano Remember that all constraints must be readded!

Если я использую, which recто получаю правильное расширение:

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

Это Remember that all constraints must be readded!вывод (предположительно) совершенно не связанного скрипта, который я написал. Есть идеи, что здесь происходит?

решение1

Вы анализируете ls,тебе не следует этого делать. Я думаю этоможетбыть источником вашей проблемы.

Например, если хотя бы одно из имен ваших slurm-*файлов выглядит так:

*\nRemember that all constraints must be readded!

или

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

где \nесть новая строка, то sortполучает больше строк, чем вы ожидаете. Только это имя файла:

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

сделает sortприем двух строк, а затем в его выводе Remember …строка будет после slurm-…строки. Я не знаю, как slurm-*именно выглядят ваши имена файлов. Я даже не уверен, что это то, что происходит на самом деле. Я хочу сказать, что вам не следует анализировать вывод ls.


Другой слабый фрагмент — это то, где вы не цитируете аргумент для nano. Это, вероятно, не связано с вашей текущей проблемой, но имейте в виду, nano a bчто делает nano edit a, то b, не "a b".

Связанный контент