команда псевдонима с поддержкой аргументов?

команда псевдонима с поддержкой аргументов?

Я хочу создать псевдоним, curlкоторый автоматически записывает файл curlв файл с тем же именем в текущем каталоге.

Например:

% curl https://bootstrap.pypa.io/get-pip.py
    curl https://bootstrap.pypa.io/get-pip.py > get-pip.py

Есть ли способ заставить псевдоним прочитать следующий аргумент и вставить его в фактически выполняемый скрипт, как здесь?

решение1

Псевдонимы не обрабатывают аргументы. К счастью, это делают функции:

mycurl () {
    curl "$1" > "${1##*/}"
}

Где ${1##*/}находится форма расширения параметров, которая гласит: «Удалить все до последнего слеша в $1».

решение2

Если вынужныйЧтобы сделать это, я бы использовал функцию bash или (в еще более сложных случаях) ее собственный файл скрипта в ~/bin/...

Но вы можете просто использовать wgetвместо curl. Он должен делать то, что вы просите, по умолчанию, и в качестве дополнительного бонуса вы сможете обойти проблему, связанную с URL без указанного файла (например: http://example.com/).

решение3

Есть некоторые обходные пути, где вы можете использовать комбинацию переменных окружения ( PWD), подстановки команд или перенаправления ввода-вывода внутри псевдонимов. Вот несколько наиболее близких примеров (в Bash):

alias curl='xargs -I% curl -o "%" "%" <<<'

который сохранит файл с тем же именем, что и URL:

$ curl https://bootstrap.pypa.io/get-pip.py
Warning: Failed to create the file https://bootstrap.pypa.io/get-pip.py

Это можно исправить, преобразовав этот URL в имя файла с помощьюманипулирование строкойс помощью операций оболочки, подстановки команд basenameили awkнекоторых других инструментов.

В качестве альтернативы вы всегда можете curlуказать wget:

$ alias curl=wget
$ curl https://bootstrap.pypa.io/get-pip.py
'get-pip.py' saved

Связанный контент