| xsel -i -b -t 30000
}
+dl() {
+ local -r timestamp="$(date --iso-8601=ns)"
+ local -r dir="$HOME"/dl/adhoc/"$timestamp"
+ local -r url_file_path="${dir}/url"
+
+ mkdir -p "$dir"
+ touch "$url_file_path"
+ cd "$dir"
+}
+
## web search
## ws : string -> unit
ws() {
}
## Top Disk-Using directories
-## TODO: Consider using numfmt instead of awk
## tdu : path-string -> (size:number * directory:path-string) list
tdu() {
local -r root_path="$1"
- du "$root_path" \
- | awk '
- {
- size = $1
- path = $0
- sub("^" $1 "\t+", "", path)
- paths[path] = size
- if (size > max)
- max = size
- }
-
- END {
- for (path in paths) {
- size = paths[path]
- pct = 100 * (size / max)
- gb = size / 1024 / 1024
- printf("%6.2f %3d%% %s\n", gb, pct, path)
- }
- }
- ' \
- | sort -r -n -k 1 \
+ du -h "$root_path" \
+ | sort -r -h -k 1 \
| head -50 \
| tac
# A slight optimization: head can exit before traversing the full input.
find "$@" -type f -printf '%s\t%p\0' \
| sort -z -n -k 1 \
| tail -z -n 50 \
- | gawk -v RS='\0' '
- {
- size = $1
- path = $0
- sub("^" $1 "\t+", "", path)
- gb = size / 1024 / 1024 / 1024
- printf("%f\t%s\n", gb, path)
- }'
+ | numfmt -z --to=iec \
+ | tr '\0' '\n'
}
# Most-recently modified file system objects
echo 'accounting'
+ # TODO Bring back seesion and client listing, but per server/socket.
printf '%stmux\n' "$indent_unit"
ps -eo comm,cmd \
| awk '
# "tmux: server tmux -L pistactl new-session -d -s pistactl"
# "tmux: client tmux -L foo"
# "tmux: client tmux -Lbar"
+ # "tmux: client tmux"
+ # "tmux: server tmux -L foo -S bar" <-- -S takes precedence
/^tmux:/ {
# XXX This of course assumes pervasive usage of -L
# TODO Handle -S
role=$2
+
+ split($0, sides_of_S, "-S")
+ split(sides_of_S[2], words_right_of_S, FS)
+
split($0, sides_of_L, "-L")
split(sides_of_L[2], words_right_of_L, FS)
- sock=words_right_of_L[1]
- if (!sock) {
- sock = "default"
+
+ if (words_right_of_S[1]) {
+ sock = "path." words_right_of_S[1]
+ } else if (words_right_of_L[1]) {
+ sock = "name." words_right_of_L[1]
} else {
- sock = "\"" sock "\""
+ sock = "default"
}
+
roles[role]++
socks[sock]++
count[role, sock]++
echo "${indent_unit}-->"
+ # TODO Populate pid->cmd dict from `ps -eo pid,comm` and lookup progs there
+ # since netstat -p output comes out truncated.
+
sudo -n netstat -tulnp \
| awk -v indent="${indent_unit}${indent_unit}" '
NR > 2 && ((/^tcp/ && proc = $7) || (/^udp/ && proc = $6)) {