32 lines
571 B
Bash
Executable File
32 lines
571 B
Bash
Executable File
#! /bin/bash --
|
|
|
|
command -v lynx >/dev/null 2>&1 || { echo "Need lynx"; exit 1; }
|
|
|
|
urlencode () {
|
|
local str="$*"
|
|
local encoded=
|
|
local i c x
|
|
for (( i=0; i < ${#str}; ++i )); do
|
|
c=${str:$i:1}
|
|
case "$c" in
|
|
[-_.~a-zA-Z0-9] ) x="$c" ;;
|
|
* ) printf -v x '%%%02x' "'$c" ;;
|
|
esac
|
|
encoded+="$x"
|
|
done
|
|
printf %s "$encoded"
|
|
}
|
|
|
|
if [ -t 0 ]; then
|
|
query=$(urlencode "$*")
|
|
dump=
|
|
else
|
|
query=$(urlencode "$(tr -d '\n')")
|
|
dump="-dump"
|
|
fi
|
|
|
|
base="https://duckduckgo.com/lite?q="
|
|
[ "$0" = "ggl" ] && base="https://www.google.com/search?q="
|
|
|
|
exec lynx $dump "$base$query"
|