Simplify conversion to human-readable units
[khome.git] / home / lib / login_functions.sh
index a691958..e51a2fa 100644 (file)
@@ -256,32 +256,12 @@ top_commands() {
 }
 
 ## 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.
@@ -293,14 +273,8 @@ tduf() {
     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
@@ -674,6 +648,7 @@ status() {
 
     echo 'accounting'
 
+    # TODO Bring back seesion and client listing, but per server/socket.
     printf '%stmux\n' "$indent_unit"
     ps -eo comm,cmd \
     | awk '
@@ -681,18 +656,27 @@ status() {
         #     "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]++
This page took 0.026445 seconds and 4 git commands to generate.