Skip to content

Instantly share code, notes, and snippets.

View ormaaj's full-sized avatar
🙃

Daniel Douglas ormaaj

🙃
View GitHub Profile
@ormaaj
ormaaj / .bash
Created February 8, 2025 22:23
field splitting
$ for sh in bash bb dash yash gash bosh ksh kshv mksh loksh posh zsh mrsh; do printf '%-6s ' "${sh}:"; "$sh" -c 'IFS=0; bash -c "printf \"%q \" \"\$@\"" bash $((x=1101001101))$((x))$((IFS=!IFS))${x}$((x)) ${x}$((x)) "${y:=$((x))}"${y+${z=$((y))}"$((y))"${z}$((IFS=!IFS))}' 2>&3; echo; done 3>/dev/null
bash: '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 110100110111 1 '' 11 1110100110111 1 '' 11 1
bb: '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 110100110111 1 '' 11 1110100110111 1 '' 11 1
dash: '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 110100110111 1 '' 11 1110100110111 1 '' 11 1
yash: '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 110100110111 1 '' 11 1110100110111 1 '' 11 1
gash: '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 '' '' 0 00 '' 0 11010011011
@ormaaj
ormaaj / tmux.conf
Created January 29, 2025 23:13
tmux panes
%hidden trace='strace -DDYYyqqqf'
%hidden el=/usr/bin/execlineb
%hidden bashargs='-sipo vi +o posix +o histexpand -O lastpipe -O extglob -O expand_aliases +O array_expand_once +O sourcepath'
%hidden kshargs='-sipo vi -o posix'
%hidden shexec='import os, os.path, sys, pwd; \
os.sched_setscheduler(0, os.SCHED_OTHER, os.sched_param(0)); \
os.nice(-os.getpriority(os.PRIO_PROCESS, 0)); \
os.environ.setdefault("TMPDIR", "/tmp"); \
os.environ.setdefault("BASH_COMPAT", "51"); \
p = { k: str(v) for k, v in zip(("USER", None, "UID", "GID", None, "HOME", "SHELL"), pwd.getpwuid(os.geteuid())) if k }; \
@ormaaj
ormaaj / arr2set.bash
Last active August 26, 2024 18:08
multiple mixed type array to set
#!/usr/bin/env bash
BASH_COMPAT=51
# Swap or merge keys and indices
function arr2set {
typeset -i n m
typeset -n _ret=$1 r
[[ ${_ret@a} == *A* ]] || return
shift
for r do
@ormaaj
ormaaj / output (bash 5.3)
Last active August 16, 2024 19:04
test pipeline pid access through jobs -p
0: 0,4
1: 0,5
2: 0,6
3: 0,2
@ormaaj
ormaaj / eeyore.bash
Last active June 10, 2024 10:32
file sorting example
#!/usr/bin/env -S-- BASH_COMPAT=51 bash -O lastpipe -O extglob -O expand_aliases +O assoc_expand_once +O sourcepath
typeset x
x=$(pkgconf --var=loadablesdir bash) &&
[[ ! $BASH_LOADABLES_PATH =~ (^|:)"$x"($|:) ]] &&
BASH_LOADABLES_PATH+=${BASH_LOADABLES_PATH:+:}${x}
for x in asort mktemp
do enable -f "$x"{,} || exit
done
@ormaaj
ormaaj / .ksh
Created May 6, 2024 11:10
ksh empty array subscripts
(ins)ormaaj 65 (2713681) 2 ~ $ function f { unset -f f; typeset -ia fd; typeset -n fdn=fd[\${#fd[@]}]; { env -- BASH_FUNC_pre_pkg_{pretend,setup}'%%=() { function tc-check-openmp { return 0; }; }' execlineb -- "/proc/self/fd/${fd[0]}" "${fd[@]}"; } {fdn}<<\EOF {fdn}<<\EOF; typeset x; for x in "${fd[@]}"; do exec {x}<&-; done; }; f
fdreserve 1
multisubstitute {
importas -iu f0 FD0
elgetpositionals
}
emptyenv -P
fdclose $1
define -sd " " v "${2} ${f0}"
creatememfd $f0 ""
@ormaaj
ormaaj / .bash
Last active July 10, 2024 20:23
aliases
\unset -v aliasrestore
aliasrestore=$(\alias -p) aliasrestore+=${aliasrestore:+$'\n\\'unset -v aliasrestore}
\unalias -a
function setupGlobalAliases {
alias -- \
'--=-- ' \
'l-=local -' \
'fn=function ' \
'exec=exec ' \
@ormaaj
ormaaj / .kshrc
Last active September 11, 2023 00:16
~/.bashrc ~/.kshrc
#!/bin/false
\typeset -a bool; bool+=([1]=)
\typeset -n sh_file
\test -v KSH_VERSION
sh_file=${bool[$?]+bash_source[0]}${bool[!$?]+.sh.file}
dotFilesPath=$(\findmnt -umlnfo target -O subvol=/vol/dotfiles "PARTUUID=$(\findmnt -umlnfo partuuid -T /)")
[[ $sh_file == ?(*/)shell ]]
\source -- ${bool[!$?]+"$sh_file"}${bool[$?]+"${dotFilesPath}/common/home/shell"}/functions
rc_main "$@"
@ormaaj
ormaaj / open fd count per instance vs eager loading.bash
Last active June 10, 2023 20:40
bash builtin loader with lazy loading
$ { function f { lsfd -np "$BASHPID" --summary=only -C ' :ASSOC == "mem"'; }; typeset -fx f; f; bash -ic 'f; type -t print; print -r :\); type -t print; f; print -r :D'; } | tr -s '\n ' ' '; echo
247 31 function :) builtin 36 :D
@ormaaj
ormaaj / fmtarr.bash
Last active May 5, 2023 10:08
Array serializer with eval-based indirection for legacy shells.
#!/usr/bin/env bash
typeset -ga bool=([1]=)
# Usage: in_array name outvar
function fmtarr {
typeset x=1 y max ret=$3
printf -v "$ret" '%s+=(' "$2"
eval -- set -- "\"\${!${1}[@]}\"" "\"\${${1}[@]}\"" || return
((max = $# / 2))