X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;ds=sidebyside;f=home%2Flib%2Flogin_functions.sh;h=75cfd1d8ac7aa0f75c41d6b216d775e8f34ca25c;hb=71ce30e23a8c3093aa9c488b8f3c528b0996678d;hp=4ed67bad202005c28e923aa88c4027daf84dd2ec;hpb=7a665e9c2d45d2982279490cb185fa6384f56a3a;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 4ed67ba..75cfd1d 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,10 +1,32 @@ # +## web search +## ws : string -> unit +ws() { + local line search_string0 search_string + + search_string0="$*" + case "$search_string0" in + '') + while read -r line; do + search_string="${search_string} ${line}" + done;; + *) + search_string="$search_string0";; + esac + + firefox --search "$search_string" +} + + +## dictionary +## d : string -> string list d() { local -r word=$(fzf < /usr/share/dict/words) dict "$word" } +## shell_activity_report : (mon | dow) -> string list shell_activity_report() { # TODO: optional concrete number output # TODO: optional combinations of granularities: hour, weekday, month, year @@ -102,6 +124,7 @@ shell_activity_report() { }' } +## top_commands : unit -> (command:string * count:number * bar:string) list top_commands() { history \ | awk ' @@ -136,10 +159,13 @@ top_commands() { | column -t } -# Top Disk-Using directories -# TODO: Consider using numfmt instead of awk +## Top Disk-Using directories +## TODO: Consider using numfmt instead of awk +## tdu : path-string -> (size:number * directory:path-string) list tdu() { - du "$1" \ + local -r root_path="$1" + + du "$root_path" \ | awk ' { size = $1 @@ -165,9 +191,10 @@ tdu() { # A slight optimization: head can exit before traversing the full input. } -# Top Disk-Using Files +## Top Disk-Using Files +## tduf : path-string list -> (size:number * file:path-string) list tduf() { - find "$1" -type f -printf '%s\t%p\0' \ + find "$@" -type f -printf '%s\t%p\0' \ | sort -z -n -k 1 \ | tail -z -n 50 \ | gawk -v RS='\0' ' @@ -181,13 +208,12 @@ tduf() { } # Most-recently modified file system objects +## recent : ?(path-string list) -> path-string list recent() { # NOTES: - # - intentionally not quoting the parameters, so that some can be ignored - # if not passed, rather than be passed to find as an empty string; # - %T+ is a GNU extension; # - gawk is able to split records on \0, while awk cannot. - find $@ -printf '%T@ %T+ %p\0' \ + find "$@" -printf '%T@ %T+ %p\0' \ | tee >(gawk -v RS='\0' 'END { printf("[INFO] Total found: %d\n", NR); }') \ | sort -z -k 1 -n -r \ | head -n "$(stty size | awk 'NR == 1 {print $1 - 5}')" -z \ @@ -200,23 +226,28 @@ recent() { }' } +## recent_dirs : ?(path-string list) -> path-string list recent_dirs() { - recent "$1" -type d + recent "$@" -type d } +## recent_files : ?(path-string list) -> path-string list recent_files() { - recent "$1" -type f + recent "$@" -type f } +## pa_def_sink : unit -> string pa_def_sink() { pactl info | awk '/^Default Sink:/ {print $3}' } +## void_pkgs : ?(string) -> json void_pkgs() { curl "https://xq-api.voidlinux.org/v1/query/x86_64?q=$1" | jq '.data' } -# Colorful man +## Colorful man +## man : string -> string man() { # mb: begin blink # md: begin bold @@ -237,15 +268,20 @@ man() { command man "$@" } -# new experiment +## new experiment +## x : string list -> unit x() { cd "$(~/bin/x $@)" || kill -INT $$ } +## ocaml repl +## hump : unit -> unit hump() { ledit -l "$(stty size | awk '{print $2}')" ocaml $@ } +## search howtos +## howto : unit -> string howto() { cat "$(find ~/arc/doc/HOWTOs -mindepth 1 -maxdepth 1 | sort | fzf)" } @@ -348,15 +384,6 @@ note() { vim -c 'set spell' "$DIR_NOTES/$(date +'%Y_%m_%d--%H_%M_%S%z')--$1.md" } -weather() { - local _weather_location - case "$1" in - '') _weather_location="$WEATHER_LOCATION";; - *) _weather_location="$1" - esac - curl "http://wttr.in/$_weather_location?format=v2" -} - _bt_devs_infos() { # grep's defintion of a line does not include \r, wile awk's does and # which bluetoothctl outputs @@ -536,13 +563,11 @@ status() { echo printf '%smem by proc\n' "$indent_unit" - ps -eo rss,cmd \ + ps -eo rss,comm \ | awk -v total="$(free | awk '$1 == "Mem:" {print $2; exit}')" ' NR > 1 { rss = $1 - cmd = $2 - n = split(cmd, path, "/") # _may_ be a path - proc = path[n] + proc = $2 by_proc[proc] += rss } @@ -667,10 +692,10 @@ status() { echo "${indent_unit}<->" - printf '%sTCP: ' "${indent_unit}${indent_unit}" + printf '%sTCP\t' "${indent_unit}${indent_unit}" sudo -n netstat -tnp \ | awk 'NR > 2 && $6 == "ESTABLISHED" {print $7}' \ - | awk -F/ '{print $2}' \ + | awk '{sub("^[0-9]+/", ""); print}' \ | sort -u \ | xargs \ | column -t