summaryrefslogtreecommitdiff
path: root/guides
diff options
context:
space:
mode:
Diffstat (limited to 'guides')
-rw-r--r--guides/shell-101.org44
1 files changed, 44 insertions, 0 deletions
diff --git a/guides/shell-101.org b/guides/shell-101.org
new file mode 100644
index 0000000..b09118b
--- /dev/null
+++ b/guides/shell-101.org
@@ -0,0 +1,44 @@
+My tentative introductory guide to navigating a shell interface
+(assuming Bash).
+
+🚧 These are rough notes meant for guiding in-person discussions; they
+are somewhat terse. 🚧
+
+* Moving around, invoking stuff
+
+With a file browser and a terminal emulator side-by-side:
+
+- ls, cd, mkdir, touch, rm; "/" = root
+- globs
+- arguments vs options (e.g. ls, diff)
+- man, --help
+- standard input/output/error: pipes, redirection
+- writing scripts (shebangs: see bash(1) § COMMAND EXECUTION)
+
+* Shell language
+
+- ; & (e.g. sleep)
+- && || (e.g. grep)
+- if, for
+- $? (e.g. grep, diff)
+- [
+- variables
+- functions, $@, $1…
+- black-box model of a command:
+ - inputs: stdin, arguments, environment
+ - outputs: stdout, stderr, exit code
+ - side-effects: writing files, connect to network, …
+- which, type: keyword ≠ builtin ≠ function ≠ program
+- valar quotulis (valar escaepis); e.g. sort operator: [ foo '>' bar ]
+
+* Advanced
+
+- ( ) ≠ { }: try to set variables, or call exit
+- (( )), $( )
+- glob ≠ regex
+- bash extensions
+ - [[
+ - <( )
+ - |&, >&
+ - arrays
+- job control: fg, bg, jobs, wait, kill, C-z