
現在のディレクトリ内の同じ名前のファイルに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
回避策としては、環境変数 ( )、コマンド置換、またはエイリアス内の 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