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