我想实现一个 bash 别名,这样我就可以输入:
$> lynxsearch most popular unix text browsers
$> w3msearch most popular unix text browsers
(或引号或括号内的搜索词)
已在搜索结果页面上进行初始加载。
我的 .bash_aliases 中有以下内容,但仅当我有一个搜索词时它才有效。而且它不适用于多个搜索词。
alias w3g='f(){ w3m https://www.duckduckgo.com/?q=$@; unset -f f; };
f'
alias lyg='f(){ lynx https://www.duckduckgo.com/?q=$@; unset -f f;
}; f'
有什么解决办法吗?
答案1
在您的示例中,URL 将变为:
https://www.duckduckgo.com/?q=most popular unix text browsers
这不是有效的 URL,因为它包含空格。您可以将空格替换为任一%20
或更简单的+
。
让我们摆脱别名,因为无论如何它们只是较弱的函数,并创建一个正确的函数:
lynxsearch () {
local search=$@
search="${search// /%20}"
lynx "https://www.duckduckgo.com/?q=$search"
}
把这个放在你的.bashrc
而不是.bash_aliases
.