我正在嘗試編寫一個bash函數或將別名命令傳遞給遠程API的別名。轉義使用curl的bash命令--data-urlencode
具體來說,這是我迄今爲止在.bashrc中:
explain() {
cmd=$(printf "%q " "[email protected]")
curl -Gs "https://www.mankier.com/api/explain/?format=text&cols="$(tput cols) --data-urlencode "q=$cmd"
}
export -f explain
我可以使用的東西,如:
$ explain ls -lh
但我還沒有找到一種方法來處理命令參數擴展。幾個例子:
$ explain ls -lh $HOME
$HOME
更改爲/home/j
,但我想串"ls -lh $HOME"
傳遞給遠程API。
$ explain ls -lh *
*
改爲該目錄的內容,但我想串"ls -lh *"
傳遞給遠程API。
這是可能做到的,而不是逃避我想解釋的命令?即解釋函數中的更改不是:explain 'ls -lh *'
好消息:您可以在我的[answer here](http://stackoverflow.com/a/14966731/1501222)上看到一種訪問非轉義命令的方法(它們的文件擴展名和括號評估)。壞消息:你不想那樣做 – BeniBela 2014-09-19 20:09:26
非常感謝@BeniBela - 你能否將這個問題標記爲你鏈接的那個問題的重複? (我沒有足夠的聲望)。要求實際上是相同的。 – 2014-09-22 12:49:35
似乎我可以投票表決(從來沒有做過之前..):可能重複[最小打字命令行計算器 - tcsh vs bash](http://stackoverflow.com/questions/14966102/minimal-typing-command-line -calculator-tcsh-vs-bash) – BeniBela 2014-09-22 12:55:50