3

Мой вопрос очень похож на этот старый пост.

Я хотел бы сделать нечто подобное: поместить в псевдоним последний аргумент (ы), введенный в текущей командной строке. Это было бы эквивалентно csh \!* которые могут использоваться в псевдонимах.

Согласно упомянутому посту, похоже, что проблема заключается в расширении истории bash, поэтому вместо него используется fc. Идея заключалась бы в том, чтобы подстановка работала в середине строки команд, например, alias cat='cat -n !!:* && echo ""' (в упрощенном примере, который не работает из-за вопрос расширения).

Однако это отличается от ссылочного поста в том смысле, что я хочу получить только аргументы после первой команды (т. Е. В посте они захватывают всю строку, а не всю строку, за исключением нулевого аргумента, команды сам).

Каков наилучший способ сделать это в псевдониме bash? (Примечание: вы хотите сохранить этот псевдоним, а не скрипт или функцию).

1 ответ1

2

Лучше избегать псевдонимов для чего-либо, кроме простых замен одной командой. Чтобы использовать аргументы, несколько команд и т.д., Вы можете определить функцию, получая доступ к параметрам так же, как в сценарии:

foo() {
    do_this
    do_that "$1"
}

cat() { command cat "$@" && echo ""; }

(Обычно функции переопределяют исполняемые файлы, поэтому command cat необходима, если вы хотите пропустить функцию и напрямую запустить исполняемый файл.)

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