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