improve scripts portability and correctness - iomenu - interactive terminal-based selection menu
HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
DIR commit cee77319ba6cc232295cf29688ba6eb3c58be246
DIR parent f4ee636cedac29de2e5f6ff200f01db97379642c
HTML Author: Josuah Demangeon <me@josuah.net>
Date: Sat, 9 May 2020 20:57:56 +0200
improve scripts portability and correctness
Diffstat:
A bin/column-t | 21 +++++++++++++++++++++
M bin/io-fstab | 10 +++++-----
M bin/io-man | 2 +-
M bin/io-net | 2 +-
M bin/io-passwd | 4 ++--
M bin/io-xdg-open | 2 ++
6 files changed, 32 insertions(+), 9 deletions(-)
---
DIR diff --git a/bin/column-t b/bin/column-t
@@ -0,0 +1,21 @@
+#!/usr/bin/awk -f
+# format text in aligned two-space separated columns: portable column -t
+
+{
+ for (f = 1; f <= NF; f++) {
+ l = length($f)
+ if (l > len[f])
+ len[f] = l
+ field[NR"|"f] = $f
+ }
+ if (--f > count)
+ count = f
+}
+
+END {
+ for (row = 1; row <= NR; row++) {
+ for (f = 1; f < count; f++)
+ printf("%-"len[f]"s ", field[row"|"f])
+ printf("%s\n", field[row"|"f])
+ }
+}
DIR diff --git a/bin/io-fstab b/bin/io-fstab
@@ -2,8 +2,8 @@
# display mounts and fstab in iomenu
{
- printf '#/etc/fstab\n'
- column -ts ' ' </etc/fstab
- printf '#mount\n'
- mount | column -ts ' '
-} | iomenu -#
+ echo "#/etc/fstab"
+ column-t -F '[ \t]' /etc/fstab
+ echo "#mount"
+ mount | column-t -F '[ \t]'
+} | exec iomenu -#
DIR diff --git a/bin/io-man b/bin/io-man
@@ -4,4 +4,4 @@
man -k ' ' | sed -r '
s/ - / - /
s/(.{25}[^ ]* ) * - /\1- /
-' | iomenu | sed -r 's,[(,].*,,' | xargs man
+' | iomenu | sed -r 's,[(,].*,,' | tr '\n' '\0' | xargs -0r man
DIR diff --git a/bin/io-net b/bin/io-net
@@ -1,4 +1,4 @@
#!/bin/sh -e
# searchable netstat results with iomenu
-netstat "$@" | sed 's/^[AP]/#&/' | iomenu -'#'
+netstat -n "$@" | sed 's/^[AP]/#&/' | iomenu -'#'
DIR diff --git a/bin/io-passwd b/bin/io-passwd
@@ -3,7 +3,7 @@
{
printf '#/etc/passwd\n'
- column -ts : < /etc/passwd
+ column-t -F : < /etc/passwd
printf '#/etc/group\n'
- column -ts : < /etc/group
+ column-t -F : < /etc/group
} | iomenu -'#'
DIR diff --git a/bin/io-xdg-open b/bin/io-xdg-open
@@ -5,6 +5,8 @@
LC_COLLATE=C
+touch "$HOME/.cache/find"
+
if test -f "$HOME/.cache/find" && test $# = 0
then exec "$0" "$HOME"
elif test $# = 0