1

У меня странная проблема с псевдонимом 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 ответ1

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 редактировать a , затем b , а не "a b" .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .