====== Shelltricks ====== Miscellaneous small shell scripts that I may or may not need again in the far future. ===== Check umask for all users ===== #!/bin/bash for user in $(awk -F: '{print $1}' /etc/passwd); do printf "%-20s" "$user" ; su -s /bin/bash -c 'umask' -l $user 2>/dev/null done Original source: https://unix.stackexchange.com/a/82645 ===== Show the dates of the oldest unseen messages in multiple maildirs, newest first ===== Beware of weird directory names. I am not responsible if this somehow does an ''rm -rf --no-preserve-root /'' or something. for dir in /var/vmail/domain/*/Maildir/new /var/vmail/domain/*/Maildir/.*/new; do echo -e "$(stat -c %y $dir/$(ls -Art $dir | head -1))\t$dir" done | grep -v '/\./' | sort -rn Same thing, but for the newest seen messages: for dir in /var/vmail/domain/*/Maildir/cur /var/vmail/domain/*/Maildir/.*/cur; do echo -e "$(stat -c %y $dir/$(ls -At $dir | head -1))\t$dir" done | grep -v '/\./' | sort -rn The only differences are the folders (''cur'' vs. ''new'') and the sorting done by ''ls''. ===== Extract IP addresses from "ip a" output by regex ===== Might be useful for scripting, I guess. IPRE='192\.168\.1\.|2001:1234:' ip a s up | grep -Eo "inet6? [^ /]+" | cut -d' ' -f2 | grep -E "$IPRE" This prints: 192.168.1.123 2001:1234:5678:90ab:cdef:1234:5678:90ab