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

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! является выводом (предположительно) совершенно не связанного сценария, который я написал. Есть идеи, что здесь происходит?

captainalright
источник
Практически каждый раз, когда вы пытаетесь сделать что-то сложное с псевдонимом, и это не сработает, вы должны вместо этого сделать это функцией - хотя здесь будьте осторожны с анализом вывода ls также
Eric Renouf

Ответы:

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

Kamil Maciorowski
источник