осведомленная об аргументе команда псевдонима?

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

Например:

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

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

1
задан 26 February 2016 в 09:31

3 ответа

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

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

, Где ${1##*/} форма Расширения Параметра, которое говорит, "Удаляют все к последней наклонной черте в 1$".

3
ответ дан 3 December 2019 в 06:43

Существуют некоторые обходные решения, где можно использовать комбинацию переменных среды (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
0
ответ дан 3 December 2019 в 06:43

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

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

2
ответ дан 3 December 2019 в 06:43

Другие вопросы по тегам:

Похожие вопросы: