From c74b861442bacf3f310869f142400450223a3113 Mon Sep 17 00:00:00 2001 From: Malin Freeborn Date: Tue, 26 Aug 2025 23:03:07 +0200 Subject: [PATCH] add joyous bash --- slides/joyous_bash/joyous_bash.md | 243 ++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 slides/joyous_bash/joyous_bash.md diff --git a/slides/joyous_bash/joyous_bash.md b/slides/joyous_bash/joyous_bash.md new file mode 100644 index 0000000..9c7fec4 --- /dev/null +++ b/slides/joyous_bash/joyous_bash.md @@ -0,0 +1,243 @@ +# Shut Up! + + + +```sh +echo blacklist pcspkr > /etc/modprobe.d/nobeep.conf +``` + +--- + +# Standard Visuals + +- `cbonsai` +- `asciiquarium` +- `top` + * `ZH4W` + +## Another Monday! + +- `cal --reform julian` + +## Weather + +```sh +curl wttr.in +curl -s wttr.in/Београд +curl wttr.in/Moon +``` + +# `ls` + +`ls -X` + +--- + +# vim + +- blog! +- seriously, just write + +--- + +# `watch` + +## Watch Differences + +- `watch -d stat "$file"` +- `watch -d ip a` + +## With Makefiles + +```sh +watch --chgexit ping -c 1 dmz.rs && sleep 3 && unison -batch pir +``` + +## Check Progress + +```sh +watch 'ls **/*.pdf | column' +``` + +--- + +# Watch Shell Scripts + + +```sh +watch -e ./script.sh +``` + +--- + +# Slow Down + +```sh +function slow(){ + ff=/tmp/bashpipe_$(date +%s) + mkfifo $ff 2>/dev/null + ( cat $ff | perl -We 'use Time::HiRes;$|++;while(read(STDIN,$c,1)){Time::HiRes::usleep(15000);print $c;}' )& exec &> $ff +} + +``` + +## Safety? + +- no + +## `htop`? + +- no + +## `speedtest`? + +- **YES** + +``` + +--- + +# Notes + +```sh +alias no='$EDITOR .no.md' +function n(){ + [ -z "$1" ] && cat .no.md || echo $@ >> .no.md +} + +``` + +--- + +# URL Decoding + + +```bash +urldecode(){ : "${*//+/ }"; echo -e "${_//%/\\x}"; } +``` + +--- + +# Send Text + + +```sh +function sendtext(){ + [ -f "$1" ] && \ + cat "$1" | nc termbin.com 9999 || \ + echo "$($1)" | nc termbin.com 9999 +} +``` + +--- + +# Readline + + +Put this in `.inputrc`. + +```text +set editing-mode vi +set keymap vi +``` + +--- + +# More Readline vi + + +```text +set editing-mode vi +set show-mode-in-prompt on +set vi-ins-mode-string " " +set vi-cmd-mode-string " " +set keymap vi +``` + +--- + +# More Readline + +```text + +set match-hidden-files off +set show-all-if-ambiguous on +set show-all-if-unmodified on +set colored-stats on + +"\C- ": shell-expand-line +"\C-x": glob-expand-word +Control-g: "g\n" +Control-y: "| ccze\n" +Control-o: "\C-u lfcd\n\C-u" +Control-l: "\C-u clear -x && ls\n" +``` + +--- + +# Synchronization + +## Syncthing + +- 'Just works' + +## Unison + +- Fuck haskell +- But actually it's good + + +--- + +# `column` + +```sh +column -ts: -H PW,GID,shell -N User,PW,UID,GID,Description,Home,shell /etc/passwd +``` + +## + +```sh +column -J -ts: -H PW,GID,shell -N User,PW,UID,GID,Description,Home,shell /etc/passwd | jq -r .table.[].user +``` + +--- + +# Aliases + +## b + +```sh +b () +{ + eval "cd $(for d in $(seq 1 $1); +do + printf ../; +done)" +} + +``` + +--- + +# `eval` + +- Don't + +--- + +# Clear Downloads + +```sh +rm -rf ~/Downloads/* +echo "tmpfs $HOME/Downloads tmpfs defaults,size=1G 0 0" | sudo tee -a /etc/fstab +sudo systemctl daemon-reload # Only for systemd +sudo mount -a +mount | tail -1 +``` + +# The Best: `yes` + +- `yes` +- `yes no` +