Я хочу создать псевдоним для curl
который автоматически пишет файл это curl
s в файл с тем же именем в текущем каталоге.
Например:
% curl https://bootstrap.pypa.io/get-pip.py
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
Существует ли способ заставить псевдоним считать следующий аргумент и вставить его в фактический выполняемый сценарий как это?
Псевдонимы не обрабатывают аргументы. К счастью, функции делают:
mycurl () {
curl "$1" > "${1##*/}"
}
, Где ${1##*/}
форма Расширения Параметра, которое говорит, "Удаляют все к последней наклонной черте в 1$".
Существуют некоторые обходные решения, где можно использовать комбинацию переменных среды (PWD
), замены команды или перенаправления IO в псевдонимах. Вот некоторый самый близкий пример (в 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
Если бы Вам было нужно , чтобы сделать это, я сделал бы это с функцией удара или (при еще более сложных обстоятельствах) в ее собственном файле сценария в ~/bin/
...
, Но Вы могли просто использовать wget
вместо curl
. Это должно сделать то, что Вы спрашиваете по умолчанию и как добавленная премия, Вы доберетесь для обхождения проблемы, которая является URL без указанного файла (например: http://example.com/
).