
我想建立一個別名,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 轉換為檔案名稱來進一步修正此問題操縱字串使用 shell 操作、命令替換、basename
或awk
其他一些工具。
或者,您可以隨時curl
指向wget
:
$ alias curl=wget
$ curl https://bootstrap.pypa.io/get-pip.py
'get-pip.py' saved