(declare -f || typeset -f) 2> /dev/null | awk '/^[a-z]+[a-zA-Z0-9_]+ \(\)/{print $1}'
}
+shell_functions_csv() {
+ local i
+ for i in $(shell_functions); do
+ printf '%s\t' "$i"
+ type "$i" | tail -n +2 | tr -d "\n" | sed -e 's/\\/\\\\/g' -e 's/\t/\\t/g'
+ printf '\n'
+ done
+}
+
shell_ssh() {
local ssh_opt; case "$1" in -*) ssh_opt="$1"; [ "$#" -gt 0 ] && shift ;; esac
local server; server="$1"; shift
--- /dev/null
+DROP TABLE IF EXISTS port;
+CREATE TABLE IF NOT EXISTS port (
+ port INT,
+ proto VARCHAR(3),
+ name VARCHAR(100),
+ PRIMARY KEY (port,proto,name)
+);
+
+BEGIN TRANSACTION;
+DELETE FROM port;
+COPY port FROM PROGRAM '\
+perl -ne "m,^(\w+)\s+(\d+)/(\w+)\s+#\s*(.*?)$, && print join(qq|\t|,map(/^\s*(.*?)\s*$/,\$2,\$3,\$1)).qq|\n|" /etc/services \
+' WITH (format 'text', NULL '');
+COMMIT;