4

Допустим, у меня есть команда bash с несколькими параметрами и интересующей меня переменной (например, имя файла):

my_cmd option1 option2 filename

Я создал псевдоним:

alias my_cmd_12="my_cmd option1 option2"

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

my_cmd option1 option2 filename --flag1

Как мне создать псевдоним, который принимает все опции и флаги:

my_alias filename эквивалентно

my_cmd option1 option2 filename --flag1

1 ответ1

11

Вы не можете сделать это с псевдонимом. Псевдоним работает путем замены строки другой строкой. С этим псевдонимом определен

alias my_cmd_12="my_cmd option1 option2"

my_cmd_12 filename --flag1 расширится до

my_cmd option1 option2 filename --flag1

Но вы хотите вызвать my_alias filename чтобы получить тот же результат. Нет никакого способа заменить my_alias другой строкой, так что --flag1 появляется в конце.

Однако функция должна работать:

my_function() { my_cmd option1 option2 "$1" --flag1; }

Обратите внимание, что это всего лишь минимальное решение с учетом вашего примера. В общем, вы можете использовать больше позиционных параметров или "$@" , условных операторов и т.д., В зависимости от того, что именно вам нужно. Функции более гибкие, чем псевдонимы.

Больше информации здесь: В Bash, когда использовать псевдоним, когда писать сценарий и когда писать функцию?

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