Last active 6 months ago

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 8 insertions

slides.md

@@ -748,6 +748,14 @@ echo -e "did I miss your favorite tool?" | boxes -d girl -a c
748 748
749 749 ---
750 750
751 + ## Usefull online resources
752 +
753 + - [crontab guru - The quick and simple editor for cron schedule expressions](https://crontab.guru/)
754 + - [Shell Script Best Practices](https://sharats.me/posts/shell-script-best-practices/)
755 + - [Bash Beginner Series](https://linuxhandbook.com/tag/bash-beginner/)
756 +
757 + ---
758 +
751 759 # Bonus: CLI murder mystery
752 760
753 761 - 3.8k stars https://github.com/veltman/clmystery

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 40 insertions, 41 deletions

slides.md

@@ -111,7 +111,7 @@ I've come up with a set of rules that describe our reactions to technologies:
111 111 +--------------------+
112 112 ```
113 113
114 - ---
114 + --
115 115
116 116 ## terminals and shells
117 117
@@ -126,7 +126,7 @@ I've come up with a set of rules that describe our reactions to technologies:
126 126
127 127 - **everything else** (f.ex. **`PS1`**, scripting language)
128 128
129 - ---
129 + --
130 130
131 131 ## terminal
132 132
@@ -149,7 +149,7 @@ I've come up with a set of rules that describe our reactions to technologies:
149 149 - fish
150 150 - dash (embedded)
151 151
152 - ---
152 + --
153 153
154 154 ### shell / zsh
155 155
@@ -159,7 +159,7 @@ I've come up with a set of rules that describe our reactions to technologies:
159 159 - oh-my-zsh (151k stars) https://ohmyz.sh
160 160 - category: shell
161 161
162 - ---
162 + --
163 163
164 164 ### shell / fish: The new kid on the block
165 165
@@ -170,7 +170,7 @@ I've come up with a set of rules that describe our reactions to technologies:
170 170 - oh-my-fish (8.8k stars) https://github.com/oh-my-fish/oh-my-fish
171 171 - category: shell
172 172
173 - ---
173 + --
174 174
175 175 ### shell / bash
176 176
@@ -195,7 +195,7 @@ Extra, nice-to-have information
195 195 - git status
196 196 - environment infos (node / .NET / Java / Python / etc version)
197 197
198 - ---
198 + --
199 199
200 200 ### shell / PS1: liquidprompt
201 201
@@ -208,7 +208,7 @@ simple prompt
208 208 - available for `zsh`, `bash`, etc
209 209 - category: unix-porn
210 210
211 - ---
211 + --
212 212
213 213 ### shell / PS1: Powerline
214 214
@@ -222,7 +222,7 @@ started as fancy statusline for vim …
222 222 - available for `zsh`, `bash`, etc
223 223 - category: unix-porn
224 224
225 - ---
225 + --
226 226
227 227 ### shell / PS1: Starship
228 228
@@ -240,7 +240,7 @@ the new kid on the block
240 240
241 241 # [Command-Line Operators and What They Do](https://www.makeuseof.com/linux-command-line-chaining-operators/)
242 242
243 - ---
243 + --
244 244
245 245 ## Ampersand Operator (&)
246 246
@@ -252,7 +252,7 @@ $ sleep 5 &
252 252 - command is executed in the background
253 253 - shell is freed
254 254
255 - ---
255 + --
256 256
257 257 ## Semicolon Operator (;)
258 258
@@ -265,7 +265,7 @@ $ pwd; mkdir /tmp/test; cd /tmp/test; touch foo; readlink -f foo
265 265 - chaining execute commands in a defined, sequential order
266 266 - independend from exit code
267 267
268 - ---
268 + --
269 269
270 270 ## OR Operator (||)
271 271
@@ -276,7 +276,7 @@ $ false || uptime
276 276
277 277 - following command only executed if preceding command fails (exit 0)
278 278
279 - ---
279 + --
280 280
281 281 ## Pipe Operator (|)
282 282
@@ -288,7 +288,7 @@ $ lspci | grep -E "(Network|Ethernet)"
288 288
289 289 - directs output of preceding command as input to succeeding command
290 290
291 - ---
291 + --
292 292
293 293 ## AND Operator (&&)
294 294
@@ -303,7 +303,7 @@ $ pwd && mkdir -p /tmp/test && cd /tmp/test && touch foo && readlink -f foo
303 303
304 304 - following command only executed if preceding command was successfully executed (exit 1)
305 305
306 - ---
306 + --
307 307
308 308 ## NOT Operator (!)
309 309
@@ -314,7 +314,7 @@ foo
314 314
315 315 - works similar to except statement in programming
316 316
317 - ---
317 + --
318 318
319 319 ## Precedence Operator ((..))
320 320
@@ -326,7 +326,7 @@ Did exit with false
326 326 - used for grouping and precedence of the execution sequence
327 327 - inside parentheses, starts [subshell](https://tldp.org/LDP/abs/html/subshells.html#SUBSHELLSREF)
328 328
329 - ---
329 + --
330 330
331 331 ## Combination Operator ({..})
332 332
@@ -338,7 +338,7 @@ $ [ -f hello.txt ] && { echo "file exists" ; echo "hello"; }
338 338
339 339 - commands are run (or not run) as a whole
340 340
341 - ---
341 + --
342 342
343 343 ## Concatenation or the Escape Operator (\\)
344 344
@@ -354,7 +354,7 @@ $ ls test\(1\).txt
354 354 - concatenate large commands over several lines
355 355 - escape character when working with strings
356 356
357 - ---
357 + --
358 358
359 359 ## Redirection Operators (>, >>, <)
360 360
@@ -372,7 +372,7 @@ blah
372 372 - redirect [stdout](https://en.wikipedia.org/wiki/Standard_streams#Standard_output_(stdout)) or [stdin](https://en.wikipedia.org/wiki/Standard_streams#Standard_input_(stdin))
373 373 - Use `2>` to handle [sterr](https://en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr))
374 374
375 - ---
375 + --
376 376
377 377 ## References
378 378
@@ -387,7 +387,7 @@ blah
387 387 # Tools
388 388 ## You where waiting for
389 389
390 - ---
390 + --
391 391
392 392 ## tldr
393 393
@@ -397,7 +397,7 @@ blah
397 397 - tldr: implemented in many languages (js, ruby, python, perl, haskell, etc)
398 398 - Demo: `ln`, `tar`, `scp`
399 399
400 - ---
400 + --
401 401
402 402 ## McFly
403 403
@@ -408,7 +408,7 @@ blah
408 408 > McFly replaces your default `Ctrl R` shell history search with an intelligent search engine that takes into account your working
409 409 directory and the context of recently executed commands. McFly’s suggestions are prioritized in real time with a small neural network
410 410
411 - ---
411 + --
412 412
413 413 ## thefuck
414 414
@@ -418,7 +418,7 @@ fix common typos / mistakes
418 418 - example: pushing a newly created git branch
419 419 - category: productivity
420 420
421 - ---
421 + --
422 422
423 423 ### The GNU Midnight Commander
424 424
@@ -426,7 +426,7 @@ fix common typos / mistakes
426 426 - text mode application, but it also includes mouse support
427 427 - best [features](https://www.uibk.ac.at/th-physik/howto/mc.html) are its ability to FTP, view tar and zip files, and to poke into tar, ar, deb, zip, cpio, lha and rar for specific files
428 428
429 - ---
429 + --
430 430
431 431 ## bat
432 432
@@ -437,7 +437,7 @@ _bat looks good on a dark background by default. However, if your terminal uses
437 437
438 438 - category: read / file display
439 439
440 - ---
440 + --
441 441
442 442 ## ripgrep
443 443
@@ -450,7 +450,7 @@ very fast `grep` replacement <!-- (benchmarks on website) -->
450 450
451 451 - category: search
452 452
453 - ---
453 + --
454 454
455 455 ## ripgrep-all
456 456
@@ -466,7 +466,7 @@ cd ~/Dropbox/Apps/Manning\ Books/
466 466 rga Vladimir
467 467 -->
468 468
469 - ---
469 + --
470 470
471 471 ## fzf
472 472
@@ -497,7 +497,7 @@ search for "linux"
497 497 cat slides.md | fzf
498 498 -->
499 499
500 - ---
500 + --
501 501
502 502 ## fd
503 503
@@ -516,7 +516,7 @@ simple alternative to `find`
516 516 - TODO
517 517 -->
518 518
519 - ---
519 + --
520 520
521 521 ## hyperfine
522 522
@@ -543,7 +543,7 @@ sudo apt install -y /tmp/hyperfine.deb
543 543 -->
544 544 - category: benchmarking
545 545
546 - ---
546 + --
547 547
548 548 ## progress
549 549
@@ -565,8 +565,7 @@ unxz, lzma, unlzma, 7z, 7za, zcat, bzcat, lzcat, split, gpg, or wrong permission
565 565 - copy from `~/tmp/demo/origin/*` to `~/tmp/demo/destination/` using `cp`.
566 566 - `watch progress`
567 567
568 -
569 - ---
568 + --
570 569
571 570 ## Ultimate Plumber (up)
572 571
@@ -584,7 +583,7 @@ interactive REPL (read–eval–print loop) for shell piping
584 583 curl -Lso ~/bin/up "https://github.com/akavel/up/releases/latest/download/up" && chmod +x ~/bin/up
585 584 -->
586 585
587 - ---
586 + --
588 587
589 588 ## lolcat
590 589
@@ -593,7 +592,7 @@ Rainbows and unicorns
593 592 - 5.2k stars https://github.com/busyloop/lolcat
594 593 - category: fun, unix porn
595 594
596 - ---
595 + --
597 596
598 597 ## ttyd
599 598
@@ -620,7 +619,7 @@ Rainbows and unicorns
620 619 echo -e "ttyd\nshare your terminal over the web" | boxes -d nuke -a c
621 620 -->
622 621
623 - ---
622 + --
624 623
625 624 ## sl
626 625
@@ -631,7 +630,7 @@ typo `sl` (instead of `ls`) -> show steam locomotive
631 630 - category: fun, unix porn
632 631
633 632
634 - ---
633 + --
635 634
636 635 ## patat
637 636
@@ -653,7 +652,7 @@ let foo = "bar";
653 652
654 653 - category: presentation, slides, unix porn
655 654
656 - ---
655 + --
657 656
658 657 ## ls on steroids
659 658
@@ -669,7 +668,7 @@ Required: font providing all symbols
669 668
670 669 - Example: NerdFonts https://github.com/ryanoasis/nerd-fonts
671 670
672 - ---
671 + --
673 672
674 673 ## ncdu
675 674
@@ -683,7 +682,7 @@ Required: font providing all symbols
683 682
684 683 ## [the serial way](https://wiki.archlinux.org/title/working_with_the_serial_console#Making_Connections)
685 684
686 - ---
685 + --
687 686
688 687 ## terminal
689 688
@@ -695,7 +694,7 @@ $ minicom -s -D /dev/ttyUSB0
695 694
696 695 [More serial p0rn](https://vmandela.com/blog/2019/2019-05-28-serial-port-tools.html)
697 696
698 - ---
697 + --
699 698
700 699 ## grafical
701 700
@@ -703,7 +702,7 @@ $ minicom -s -D /dev/ttyUSB0
703 702 - moserial
704 703 - PuTTY
705 704
706 - ---
705 + --
707 706
708 707 ## Windows
709 708

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 2 insertions, 2 deletions

slides.md

@@ -85,7 +85,7 @@ I've come up with a set of rules that describe our reactions to technologies:
85 85 ## Learn the basics
86 86
87 87 - `emacs` and `vim`
88 - - learn navigation, copy & paste, (and how to exit :thumbsup:)
88 + - learn navigation, copy & paste, (and how to exit 👍)
89 89 - pick one and become fluent
90 90
91 91 - `cd`, `ls`, `cat`, `less`, `find`, `grep`, `sed`, `tail`, `awk`, `dd`, `rsync`, ...
@@ -138,7 +138,7 @@ I've come up with a set of rules that describe our reactions to technologies:
138 138
139 139 - but think about enriching your output!
140 140
141 - - Emojis: :thumbsup: :ballot_box_with_check: :collision: :v: :poop: :speech_balloon: :zap: € ★ :star:
141 + - Emojis: 👍 ✅ 💥 ✌ 💩 💬 🌩 🌟
142 142
143 143 ---
144 144

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 1 insertion, 1 deletion

slides.md

@@ -233,7 +233,7 @@ the new kid on the block
233 233 - cross-plattform, cross-shell
234 234 - stylish
235 235 - great defaults for many environments
236 - - easy to configure
236 + - easy to [configure](https://starship.rs/config/)
237 237 - category: unix-porn
238 238
239 239 ---

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 151 insertions

slides.md

@@ -238,6 +238,157 @@ the new kid on the block
238 238
239 239 ---
240 240
241 + # [Command-Line Operators and What They Do](https://www.makeuseof.com/linux-command-line-chaining-operators/)
242 +
243 + ---
244 +
245 + ## Ampersand Operator (&)
246 +
247 + ```bash
248 + $ sleep 5 &
249 + [1] 301161
250 + ```
251 +
252 + - command is executed in the background
253 + - shell is freed
254 +
255 + ---
256 +
257 + ## Semicolon Operator (;)
258 +
259 + ```bash
260 + $ pwd; mkdir /tmp/test; cd /tmp/test; touch foo; readlink -f foo
261 + /tmp
262 + /tmp/test/foo
263 + ```
264 +
265 + - chaining execute commands in a defined, sequential order
266 + - independend from exit code
267 +
268 + ---
269 +
270 + ## OR Operator (||)
271 +
272 + ```bash
273 + $ false || uptime
274 + 11:21:53 up 20 days, 2:30, 1 user, load average: 0,36, 0,35, 0,46
275 + ```
276 +
277 + - following command only executed if preceding command fails (exit 0)
278 +
279 + ---
280 +
281 + ## Pipe Operator (|)
282 +
283 + ```bash
284 + $ lspci | grep -E "(Network|Ethernet)"
285 + 00:14.3 Network controller: Intel Corporation Comet Lake PCH-LP CNVi WiFi
286 + 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (10) I219-V
287 + ```
288 +
289 + - directs output of preceding command as input to succeeding command
290 +
291 + ---
292 +
293 + ## AND Operator (&&)
294 +
295 + ```bash
296 + $ pwd && mkdir /tmp/test && cd /tmp/test && touch foo && readlink -f foo
297 + /tmp/test
298 + mkdir: cannot create directory '/tmp/test': File exists
299 + $ pwd && mkdir -p /tmp/test && cd /tmp/test && touch foo && readlink -f foo
300 + /tmp/test
301 + /tmp/test/foo
302 + ```
303 +
304 + - following command only executed if preceding command was successfully executed (exit 1)
305 +
306 + ---
307 +
308 + ## NOT Operator (!)
309 +
310 + ```bash
311 + $ ls !(*.txt)
312 + foo
313 + ```
314 +
315 + - works similar to except statement in programming
316 +
317 + ---
318 +
319 + ## Precedence Operator ((..))
320 +
321 + ```bash
322 + $ (true && false) && (false || true) || echo "Did exit with false"
323 + Did exit with false
324 + ```
325 +
326 + - used for grouping and precedence of the execution sequence
327 + - inside parentheses, starts [subshell](https://tldp.org/LDP/abs/html/subshells.html#SUBSHELLSREF)
328 +
329 + ---
330 +
331 + ## Combination Operator ({..})
332 +
333 + ```bash
334 + $ [ -f hello.txt ] && echo "file exists" ; echo "hello"
335 + hello
336 + $ [ -f hello.txt ] && { echo "file exists" ; echo "hello"; }
337 + ```
338 +
339 + - commands are run (or not run) as a whole
340 +
341 + ---
342 +
343 + ## Concatenation or the Escape Operator (\\)
344 +
345 + ```bash
346 + $ echo "Hello! from the\
347 + > other side"
348 + Hello! from theother side
349 + $ touch test\(1\).txt
350 + $ ls test\(1\).txt
351 + 'test(1).txt'
352 + ```
353 +
354 + - concatenate large commands over several lines
355 + - escape character when working with strings
356 +
357 + ---
358 +
359 + ## Redirection Operators (>, >>, <)
360 +
361 + ```bash
362 + $ echo "dsd" > test; echo "bssss" >> test; cat test
363 + dsd
364 + bssss
365 + $ sort < test
366 + bssss
367 + dsd
368 + $ echo "blah" > test; cat test
369 + blah
370 + ```
371 +
372 + - redirect [stdout](https://en.wikipedia.org/wiki/Standard_streams#Standard_output_(stdout)) or [stdin](https://en.wikipedia.org/wiki/Standard_streams#Standard_input_(stdin))
373 + - Use `2>` to handle [sterr](https://en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr))
374 +
375 + ---
376 +
377 + ## References
378 +
379 + - [10 Linux Command-Line Operators and What They Do](https://www.makeuseof.com/linux-command-line-chaining-operators/)
380 + - [Chaining Commands in Linux](https://www.geeksforgeeks.org/chaining-commands-in-linux/)
381 + - [Basics on bash operators](https://lumian2015.github.io/MoreOnLinux/chapter1.html)
382 + - [10 Useful Chaining Operators in Linux with Practical Examples](https://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/)
383 + - [6 Bash Shell Command Line Chaining Operators in Linux](https://www.thegeekdiary.com/6-bash-shell-command-line-chaining-operators-in-linux/)
384 +
385 + ---
386 +
387 + # Tools
388 + ## You where waiting for
389 +
390 + ---
391 +
241 392 ## tldr
242 393
243 394 - 41k stars https://tldr.sh/

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 2 insertions

slides.md

@@ -542,6 +542,8 @@ $ screen /dev/ttyUSB0 115200
542 542 $ minicom -s -D /dev/ttyUSB0
543 543 ```
544 544
545 + [More serial p0rn](https://vmandela.com/blog/2019/2019-05-28-serial-port-tools.html)
546 +
545 547 ---
546 548
547 549 ## grafical

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 32 insertions, 1 deletion

slides.md

@@ -528,7 +528,38 @@ Required: font providing all symbols
528 528
529 529 ---
530 530
531 - # monitoring
531 + # Making Connections
532 +
533 + ## [the serial way](https://wiki.archlinux.org/title/working_with_the_serial_console#Making_Connections)
534 +
535 + ---
536 +
537 + ## terminal
538 +
539 + ```
540 + $ picocom -b 115200 /dev/ttyUSB0
541 + $ screen /dev/ttyUSB0 115200
542 + $ minicom -s -D /dev/ttyUSB0
543 + ```
544 +
545 + ---
546 +
547 + ## grafical
548 +
549 + - cutecom
550 + - moserial
551 + - PuTTY
552 +
553 + ---
554 +
555 + ## Windows
556 +
557 + - [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
558 + - [Terminalbpp](https://sites.google.com/site/terminalbpp/)
559 +
560 + ---
561 +
562 + ## monitoring
532 563
533 564 - htop
534 565 - apachetop

Jan Wagner revised this gist 3 years ago. Go to revision

1 file changed, 572 insertions

slides.md(file created)

@@ -0,0 +1,572 @@
1 + <style type="text/css">
2 + .reveal p {
3 + text-align: left;
4 + }
5 + .reveal ul {
6 + display: block;
7 + }
8 + .reveal ol {
9 + display: block;
10 + }
11 + </style>
12 +
13 + ```text
14 + __ __ _ _ _
15 + | \/ | ___ __| | ___ _ __ _ __ | (_)_ __ _ ___ __
16 + | |\/| |/ _ \ / _` |/ _ \ '__| '_ \ | | | '_ \| | | \ \/ /
17 + | | | | (_) | (_| | __/ | | | | | | | | | | | |_| |> <
18 + |_| |_|\___/ \__,_|\___|_| |_| |_| |_|_|_| |_|\__,_/_/\_\
19 +
20 + _ _ _ _
21 + ___| (_) | |_ ___ ___ | |___
22 + / __| | | | __/ _ \ / _ \| / __|
23 + | (__| | | | || (_) | (_) | \__ \
24 + \___|_|_| \__\___/ \___/|_|___/
25 +
26 + ```
27 + <!--
28 + ---
29 +
30 + ## "modern" is relative...
31 +
32 + **Douglas Adams**
33 +
34 + I've come up with a set of rules that describe our reactions to technologies:
35 +
36 + > 1. Anything that is in the world **when you're born** is normal and ordinary and is just a natural part of the way the world works.
37 + >
38 + > 2. Anything that's invented **between when you're fifteen and thirty-five** is new and exciting and revolutionary and you can probably get a career in it.
39 + >
40 + > 3. Anything invented **after you're thirty-five** is against the natural order of things.
41 + -->
42 +
43 + ---
44 +
45 + ## Target audience
46 +
47 + - linux desktop CLI users
48 + - linux admins
49 +
50 + ```text
51 + __________________________________________
52 + / This is the year of linux on the desktop \
53 + | |
54 + | ...Windows10 has WSL ;-) |
55 + \ /
56 + ------------------------------------------
57 + \ ^__^
58 + \ (oo)\_______
59 + (__)\ )\/\
60 + ||----w |
61 + || ||
62 + ```
63 +
64 + ---
65 +
66 + ## Linux tooling philosophy
67 +
68 + - **do one thing (and only one thing!) well**
69 +
70 + - **chaining**
71 +
72 + - _sound familiar? (hint: functional programming...)_
73 +
74 + ---
75 +
76 + ## Why? Improvements to...
77 +
78 + - **productivity**
79 +
80 + - **optics**
81 + - "unix porn" (`PS1`, `ls`, ...)
82 +
83 + ---
84 +
85 + ## Learn the basics
86 +
87 + - `emacs` and `vim`
88 + - learn navigation, copy & paste, (and how to exit :thumbsup:)
89 + - pick one and become fluent
90 +
91 + - `cd`, `ls`, `cat`, `less`, `find`, `grep`, `sed`, `tail`, `awk`, `dd`, `rsync`, ...
92 + - Combine using pipes ( `|` ) and redirection ( `>` )
93 +
94 + ---
95 +
96 + ## terminals and shells
97 +
98 + ### What is the difference between **terminal** and **shell**?
99 +
100 + ```text
101 + +--------------------+
102 + | "terminal" |
103 + +--------------------+
104 + | |
105 + | +--------------+ |
106 + | | | |
107 + | | "shell" | |
108 + | | | |
109 + | +--------------+ |
110 + | |
111 + +--------------------+
112 + ```
113 +
114 + ---
115 +
116 + ## terminals and shells
117 +
118 + ### terminal
119 +
120 + - **colors** (16 or more), **fonts** (utf8, ligatures, ...)
121 + - **interactions**
122 + - keyboard shortcuts
123 + - mouse interaction (copy & paste, scrolling, selection, ...)
124 +
125 + ### shell
126 +
127 + - **everything else** (f.ex. **`PS1`**, scripting language)
128 +
129 + ---
130 +
131 + ## terminal
132 +
133 + ### What is the best terminal?
134 +
135 + - use your default
136 +
137 + ### Unicode, Emojis, Fonts, Image support (!)
138 +
139 + - but think about enriching your output!
140 +
141 + - Emojis: :thumbsup: :ballot_box_with_check: :collision: :v: :poop: :speech_balloon: :zap: € ★ :star:
142 +
143 + ---
144 +
145 + ## shell
146 +
147 + - bash
148 + - zsh
149 + - fish
150 + - dash (embedded)
151 +
152 + ---
153 +
154 + ### shell / zsh
155 +
156 + - https://www.zsh.org/
157 +
158 + - package manager
159 + - oh-my-zsh (151k stars) https://ohmyz.sh
160 + - category: shell
161 +
162 + ---
163 +
164 + ### shell / fish: The new kid on the block
165 +
166 + - https://fishshell.com
167 +
168 + - package manager
169 + - fisher (6.1k stars) https://github.com/jorgebucaran/fisher
170 + - oh-my-fish (8.8k stars) https://github.com/oh-my-fish/oh-my-fish
171 + - category: shell
172 +
173 + ---
174 +
175 + ### shell / bash
176 +
177 + - https://www.gnu.org/software/bash/
178 +
179 + - package manager
180 + - bash-it (13.2k stars) https://github.com/Bash-it/bash-it
181 + - oh-my-bash (3.5k stars) https://ohmybash.github.io
182 + - category: shell
183 +
184 + ---
185 +
186 + ### shell / PS1
187 +
188 + PS1: alias for "prompt"
189 + - default: `username:/some/location$`
190 + - `$PWD` present working directory
191 +
192 + Extra, nice-to-have information
193 + - only show relevant parts (hide user/machine name on local machine)
194 + - compact location ( $PWD )
195 + - git status
196 + - environment infos (node / .NET / Java / Python / etc version)
197 +
198 + ---
199 +
200 + ### shell / PS1: liquidprompt
201 +
202 + simple prompt
203 +
204 + - 4.2k stars https://github.com/nojhan/liquidprompt
205 +
206 + - shortens `$PWD`
207 + - adds git status
208 + - available for `zsh`, `bash`, etc
209 + - category: unix-porn
210 +
211 + ---
212 +
213 + ### shell / PS1: Powerline
214 +
215 + started as fancy statusline for vim …
216 +
217 + - 11k stars https://github.com/powerline/powerline
218 +
219 + - started as fancy statusline for `vim`...
220 + - shortens `$PWD`
221 + - adds git status
222 + - available for `zsh`, `bash`, etc
223 + - category: unix-porn
224 +
225 + ---
226 +
227 + ### shell / PS1: Starship
228 +
229 + the new kid on the block
230 +
231 + - 16k stars https://github.com/starship/starship
232 +
233 + - cross-plattform, cross-shell
234 + - stylish
235 + - great defaults for many environments
236 + - easy to configure
237 + - category: unix-porn
238 +
239 + ---
240 +
241 + ## tldr
242 +
243 + - 41k stars https://tldr.sh/
244 +
245 + - man pages can be difficult
246 + - tldr: implemented in many languages (js, ruby, python, perl, haskell, etc)
247 + - Demo: `ln`, `tar`, `scp`
248 +
249 + ---
250 +
251 + ## McFly
252 +
253 + - 4.5 stars https://github.com/cantino/mcfly
254 +
255 + - category: history search
256 +
257 + > McFly replaces your default `Ctrl R` shell history search with an intelligent search engine that takes into account your working
258 + directory and the context of recently executed commands. McFly’s suggestions are prioritized in real time with a small neural network
259 +
260 + ---
261 +
262 + ## thefuck
263 +
264 + fix common typos / mistakes
265 +
266 + - 51k stars https://github.com/nvbn/thefuck
267 + - example: pushing a newly created git branch
268 + - category: productivity
269 +
270 + ---
271 +
272 + ### The GNU Midnight Commander
273 +
274 + [mc](http://midnight-commander.org/) is a visual shell much like a file manager, only with many more features
275 + - text mode application, but it also includes mouse support
276 + - best [features](https://www.uibk.ac.at/th-physik/howto/mc.html) are its ability to FTP, view tar and zip files, and to poke into tar, ar, deb, zip, cpio, lha and rar for specific files
277 +
278 + ---
279 +
280 + ## bat
281 +
282 + `cat` & `less` with syntax highlighting
283 + - 37.6k stars https://github.com/sharkdp/bat
284 +
285 + _bat looks good on a dark background by default. However, if your terminal uses a light background, some themes like GitHub or OneHalfLight will work better for you._
286 +
287 + - category: read / file display
288 +
289 + ---
290 +
291 + ## ripgrep
292 +
293 + very fast `grep` replacement <!-- (benchmarks on website) -->
294 + - 33.7k stars https://github.com/BurntSushi/ripgrep
295 + - `ripgrep` recursively searches directories for a regex pattern
296 + - sensible defaults: respect `.gitignore`, ignores hidden files & folders
297 + - command: `rg`
298 + - use `rg hidden g '!.git' "your search"` to search all hidden folder except .git
299 +
300 + - category: search
301 +
302 + ---
303 +
304 + ## ripgrep-all
305 +
306 + ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, sqlite (!), etc
307 + - 5k stars https://github.com/phiresky/ripgrep-all
308 + - command: `rga`
309 + - faster than `pdfgrep` (see website for a benchmark)
310 + - category: search
311 + - Demo: search in Manning books folder
312 +
313 + <!--
314 + cd ~/Dropbox/Apps/Manning\ Books/
315 + rga Vladimir
316 + -->
317 +
318 + ---
319 +
320 + ## fzf
321 +
322 + interactive fuzzy search
323 + - 47.5k stars https://github.com/junegunn/fzf
324 + - pipe any line based input to fzf: Example `find * -type f | fzf`
325 + - good integration with other tools
326 + - nice helper methods for
327 + - files & directories `cd **<TAB>`
328 + - kill `kill -9 <TAB>`
329 + - host names `ssh **<TAB>`
330 + - environment variables & aliases `unset **<TAB>`, `export **<TAB>`, `unalias **<TAB>`
331 + - category: search
332 + - Demos:
333 + - find files and select them
334 + - search a text file
335 +
336 + <!--
337 +
338 + cd ~/exercism
339 + ## `fzf -m` multiselect
340 + ## select files with Shift+TAB
341 + ## search for "bob"
342 + find * -type f | fzf -m
343 +
344 + cd .
345 + search for "linux"
346 + cat slides.md | fzf
347 + -->
348 +
349 + ---
350 +
351 + ## fd
352 +
353 + - 24.9k stars https://github.com/sharkdp/fd
354 +
355 + simple alternative to `find`
356 + - "The command name is 50% shorter than `find`"
357 + - Convenient syntax `fd PATTERN` (instead of `find -iname '*PATTERN*'`)
358 + - Sensible defaults: `.gitignore`, ignore hidden files/folders
359 + - fast
360 + - category: search
361 +
362 + <!--
363 + # Demo
364 +
365 + - TODO
366 + -->
367 +
368 + ---
369 +
370 + ## hyperfine
371 +
372 + benchmarking tool
373 +
374 + - 13.1k stars https://github.com/sharkdp/hyperfine
375 +
376 + ```bash
377 + # comparing `fd` with `find`
378 +
379 + # ubuntu uses `fdfind` by default
380 + hyperfine --warmup 3 'fdfind -HI '.*[0-9]\.jpg$'' 'find ~ -iregex '.*[0-9]\.jpg''
381 +
382 + # arch
383 + hyperfine --warmup 3 'fd -HI '.*[0-9]\.jpg$' Documents/talks' 'find Documents/talks -iregex '.*[0-9]\.jpg$''
384 +
385 + # unfair comparison: `fd` ignores hidden files and `.git` be default
386 + hyperfine --warmup 3 'fd '.*[0-9]\.jpg$' Documents/talks' 'find Documents/talks -iregex '.*[0-9]\.jpg$''
387 + ```
388 + <!--
389 + HYPERFINE_VERSION=$(curl -s "https://api.github.com/repos/sharkdp/hyperfine/releases/latest" | grep -Po '"tag_name": "v\K[0-9.]+')
390 + curl -Lso /tmp/hyperfine.deb "https://github.com/sharkdp/hyperfine/releases/latest/download/hyperfine_${HYPERFINE_VERSION}_amd64.deb"
391 + sudo apt install -y /tmp/hyperfine.deb
392 + -->
393 + - category: benchmarking
394 +
395 + ---
396 +
397 + ## progress
398 +
399 + monitor any kind of "copy"
400 +
401 + - 5.8k stars https://github.com/Xfennec/progress
402 + - attach to any kind of copy
403 + - category: monitoring
404 +
405 + ```sh
406 + No command currently running: cp, mv, dd, tar, cat, rsync, grep, fgrep, egrep, cut, sort, md5sum,
407 + sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz,
408 + unxz, lzma, unlzma, 7z, 7za, zcat, bzcat, lzcat, split, gpg, or wrong permissions.
409 + ```
410 +
411 + - Demo:
412 + - `~/tmp/demo/origin/` contains very large file
413 + - tmux split screen `~/tmp/demo/`
414 + - copy from `~/tmp/demo/origin/*` to `~/tmp/demo/destination/` using `cp`.
415 + - `watch progress`
416 +
417 +
418 + ---
419 +
420 + ## Ultimate Plumber (up)
421 +
422 + interactive REPL (read–eval–print loop) for shell piping
423 +
424 + - 7.8k stars https://github.com/akavel/up
425 +
426 + - interactive piping
427 + - instant live preview
428 + - category: search, file manipulation, interactive
429 +
430 + - Demo: images/up-demo.gif
431 +
432 + <!--
433 + curl -Lso ~/bin/up "https://github.com/akavel/up/releases/latest/download/up" && chmod +x ~/bin/up
434 + -->
435 +
436 + ---
437 +
438 + ## lolcat
439 +
440 + Rainbows and unicorns
441 +
442 + - 5.2k stars https://github.com/busyloop/lolcat
443 + - category: fun, unix porn
444 +
445 + ---
446 +
447 + ## ttyd
448 +
449 + - 4.4 stars https://tsl0922.github.io/ttyd/
450 +
451 + ```text
452 + _ ._ _ , _ ._
453 + (_ ' ( ` )_ .__)
454 + ( ( ( ) `) ) _)
455 + (__ (_ (_ . _) _) ,__)
456 + `~~`\ ' . /`~~`
457 + ,::: ; ; :::,
458 + ':::::::::::::::'
459 + ______________/_ __ \_____________
460 + | |
461 + | ttyd |
462 + | share your terminal over the web |
463 + |__________________________________|
464 + ```
465 +
466 + - category: network, dangerous
467 +
468 + <!--
469 + echo -e "ttyd\nshare your terminal over the web" | boxes -d nuke -a c
470 + -->
471 +
472 + ---
473 +
474 + ## sl
475 +
476 + typo `sl` (instead of `ls`) -> show steam locomotive
477 +
478 + - 2.5k stars https://github.com/mtoyoda/sl
479 +
480 + - category: fun, unix porn
481 +
482 +
483 + ---
484 +
485 + ## patat
486 +
487 + - 1.9k stars https://github.com/jaspervdj/patat
488 +
489 + - nerdy slides in your shell
490 + - runs in a terminal (similar to `revealJs` for the browser)
491 + - Pandoc syntax (f. ex. markdown)
492 + - syntax highlighting
493 +
494 + ```javascript
495 + let foo = "bar";
496 + ```
497 + <!--
498 + - emojis: :thumbsup:, :white_check_mark:, :ballot_box_with_check:, :collision:
499 + -->
500 + - next slide: experimental image support in some terminals (same as for `ranger`)
501 + - `iterm2`, `urxvt`, `kitty`
502 +
503 + - category: presentation, slides, unix porn
504 +
505 + ---
506 +
507 + ## ls on steroids
508 +
509 + `ls` problem: sort by name and time at the same time...
510 +
511 + **Use colors!**
512 +
513 + - `colorls` ("the original" in ruby: https://github.com/athityakumar/colorls)
514 + - `lsd` (in rust: https://github.com/Peltoche/lsd)
515 + - `exa` (in rust: https://github.com/ogham/exa)
516 +
517 + Required: font providing all symbols
518 +
519 + - Example: NerdFonts https://github.com/ryanoasis/nerd-fonts
520 +
521 + ---
522 +
523 + ## ncdu
524 +
525 + - https://dev.yorhel.nl/ncdu
526 +
527 + - interactive `df` alternative
528 +
529 + ---
530 +
531 + # monitoring
532 +
533 + - htop
534 + - apachetop
535 + - ngxtop
536 + - mtp
537 + - pg_top
538 + - powertop
539 + - iotop
540 + - iftop
541 + - nethogs
542 +
543 + ---
544 +
545 + ## Some more tools
546 +
547 + - mosh (robust replacement for ssh) https://mosh.org/
548 + - neofetch (fancy system info in the shell) 7.7k stars https://github.com/dylanaraps/neofetch
549 + - expect https://likegeeks.com/expect-command/
550 + - jq (sed for json) https://stedolan.github.io/jq/
551 + - httpie (cli http client) 45k stars https://httpie.org/
552 + - http-prompt (cli http client) 7.6k stars http://http-prompt.com/
553 + - pywal (color schemes for terminal) 3.4k stars https://github.com/dylanaraps/pywal
554 + - fish_config (web-based configuration tool for fish shell) https://fishshell.com/docs/current/commands.html#fish_config
555 + - xclip (cli to X clipboard) 403 stars https://github.com/astrand/xclip
556 + - apt-iselect (interactive ncurses package search for debian) https://www.rot13.org/~dpavlin/apt-iselect.html
557 + - gcalcli (google calender in the shell) 2k stars https://github.com/insanum/gcalcli
558 + - pastebinit (cli tool to send data to pastebin) 17 stars https://github.com/skorokithakis/pastebinit
559 + - MapSCII (ascii google maps in the terminal) https://github.com/rastapasta/mapscii
560 + - alwaysontop (always move prompt to top of screen) 160 stars https://github.com/swirepe/alwaysontop
561 +
562 + <!--
563 + echo -e "did I miss your favorite tool?" | boxes -d girl -a c
564 + -->
565 +
566 + ---
567 +
568 + # Bonus: CLI murder mystery
569 +
570 + - 3.8k stars https://github.com/veltman/clmystery
571 +
572 + - CLI murder mystery
Newer Older