У меня странная проблема с псевдонимом 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!
является выводом (предположительно) совершенно не связанного сценария, который я написал. Есть идеи, что здесь происходит?
ls
такжеОтветы:
Вы разбираете
ls
, ты не должен этого делать , я думаю это может быть источником вашей проблемы.Например. если хотя бы один из ваших
slurm-*
имена файлов как:или же
где
\n
новая строка, тоsort
получает больше строк, чем вы ожидаете. Одно только это имя файла:сделаю
sort
получить две строки, а затем на выходеRemember …
линия будет послеslurm-…
линия. Я не знаю как твоиslurm-*
имена файлов выглядят точно так же. Я даже не уверен, что это действительно так. Я хочу сказать, что вы не должны анализировать выводls
,Еще один слабый фрагмент, где вы не цитируете аргумент
nano
, Это, вероятно, не связано с вашей текущей проблемой, но имейте в виду,nano a b
делает нано редактироватьa
, затемb
не"a b"
,источник