add joyous bash
This commit is contained in:
		
							
								
								
									
										243
									
								
								slides/joyous_bash/joyous_bash.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								slides/joyous_bash/joyous_bash.md
									
									
									
									
									
										Normal file
									
								
							@@ -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`
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user