|
|
|
|
@ -1,42 +1,43 @@ |
|
|
|
|
# web_search from terminal |
|
|
|
|
|
|
|
|
|
function web_search() { |
|
|
|
|
# get the open command |
|
|
|
|
local open_cmd |
|
|
|
|
if [[ "$OSTYPE" = darwin* ]]; then |
|
|
|
|
open_cmd='open' |
|
|
|
|
else |
|
|
|
|
open_cmd='xdg-open' |
|
|
|
|
fi |
|
|
|
|
emulate -L zsh |
|
|
|
|
|
|
|
|
|
# define search engine URLS |
|
|
|
|
typeset -A urls |
|
|
|
|
urls=( |
|
|
|
|
google "https://www.google.com/search?q=" |
|
|
|
|
bing "https://www.bing.com/search?q=" |
|
|
|
|
yahoo "https://www.yahoo.com/search?q=" |
|
|
|
|
duckduckgo "https://www.duckduckgo.com/?q=" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
# define the open command |
|
|
|
|
case "$OSTYPE" in |
|
|
|
|
darwin*) open_cmd="open" ;; |
|
|
|
|
linux*) open_cmd="xdg-open" ;; |
|
|
|
|
*) echo "Platform $OSTYPE not supported" |
|
|
|
|
return 1 |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
|
|
|
|
|
# check whether the search engine is supported |
|
|
|
|
if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]]; |
|
|
|
|
then |
|
|
|
|
if [[ -z "$urls[$1]" ]]; then |
|
|
|
|
echo "Search engine $1 not supported." |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
local url="http://www.$1.com" |
|
|
|
|
|
|
|
|
|
# no keyword provided, simply open the search engine homepage |
|
|
|
|
if [[ $# -le 1 ]]; then |
|
|
|
|
$open_cmd "$url" |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
if [[ $1 == 'duckduckgo' ]]; then |
|
|
|
|
#slightly different search syntax for DDG |
|
|
|
|
url="${url}/?q=" |
|
|
|
|
# search or go to main page depending on number of arguments passed |
|
|
|
|
if [[ $# -gt 1 ]]; then |
|
|
|
|
# build search url: |
|
|
|
|
# join arguments passed with '+', then append to search engine URL |
|
|
|
|
url="${urls[$1]}${(j:+:)@[2,-1]}" |
|
|
|
|
else |
|
|
|
|
url="${url}/search?q=" |
|
|
|
|
# build main page url: |
|
|
|
|
# split by '/', then rejoin protocol (1) and domain (2) parts with '//' |
|
|
|
|
url="${(j://:)${(s:/:)urls[$1]}[1,2]}" |
|
|
|
|
fi |
|
|
|
|
shift # shift out $1 |
|
|
|
|
|
|
|
|
|
while [[ $# -gt 0 ]]; do |
|
|
|
|
url="${url}$1+" |
|
|
|
|
shift |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
url="${url%?}" # remove the last '+' |
|
|
|
|
nohup $open_cmd "$url" >/dev/null 2&>1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|