From b565249494c315703311dce1b18a0e6293d6fdcc Mon Sep 17 00:00:00 2001 From: Rawiri Blundell Date: Tue, 25 Apr 2023 23:17:50 +1200 Subject: [PATCH] Fix a funny issue of non-idempotency --- start.md | 142 +++++++++++++++++++++++++++---------------------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/start.md b/start.md index 65a32a9..5d6327d 100644 --- a/start.md +++ b/start.md @@ -32,88 +32,88 @@ only there to prevent SPAM. - [Bash v4 - a rough overview](bash4.md) (unmaintained, since Bash 4 is more or less standard) -- [style](/scripting/style.md.md) -- an assorted collection of style and optic +- [style](/scripting/style.md) -- an assorted collection of style and optic hints -- [basics](/scripting/basics.md.md) -- [newbie_traps](/scripting/newbie_traps.md.md) -- [bashbehaviour](/scripting/bashbehaviour.md.md) -- [posparams](/scripting/posparams.md.md) -- [processtree](/scripting/processtree.md.md) -- [obsolete](/scripting/obsolete.md.md) -- [nonportable](/scripting/nonportable.md.md) -- [debuggingtips](/scripting/debuggingtips.md.md) -- [terminalcodes](/scripting/terminalcodes.md.md) -- [tutoriallist](/scripting/tutoriallist.md.md) +- [basics](/scripting/basics.md) +- [newbie_traps](/scripting/newbie_traps.md) +- [bashbehaviour](/scripting/bashbehaviour.md) +- [posparams](/scripting/posparams.md) +- [processtree](/scripting/processtree.md) +- [obsolete](/scripting/obsolete.md) +- [nonportable](/scripting/nonportable.md) +- [debuggingtips](/scripting/debuggingtips.md) +- [terminalcodes](/scripting/terminalcodes.md) +- [tutoriallist](/scripting/tutoriallist.md) ## Code snippets -There is a [section that holds small code snippets](/snipplets/start.md.md). +There is a [section that holds small code snippets](/snipplets/start.md). -See also [some Bash source code excerpts](/misc/readthesourceluke.md.md). +See also [some Bash source code excerpts](/misc/readthesourceluke.md). ## How to -[Doing specific tasks: concepts, methods, ideas](/howto/start.md.md): +[Doing specific tasks: concepts, methods, ideas](/howto/start.md): -- [Simple locking (against parallel run)](/howto/mutex.md.md) -- [Rudimentary config files for your scripts](/howto/conffile.md.md) -- [Editing files with ed(1)](/howto/edit-ed.md.md) -- [Collapsing Functions](/howto/collapsing_functions.md.md) -- [Illustrated Redirection Tutorial](/howto/redirection_tutorial.md.md) +- [Simple locking (against parallel run)](/howto/mutex.md) +- [Rudimentary config files for your scripts](/howto/conffile.md) +- [Editing files with ed(1)](/howto/edit-ed.md) +- [Collapsing Functions](/howto/collapsing_functions.md) +- [Illustrated Redirection Tutorial](/howto/redirection_tutorial.md) - [Calculate with dc(1)](/howto/calculate-dc.md) -- [Introduction to pax - the POSIX archiver](/howto/pax.md.md) -- [getopts_tutorial](/howto/getopts_tutorial.md.md) (*under construction!*) -- [dissectabadoneliner](/howto/dissectabadoneliner.md.md) An example of a bad +- [Introduction to pax - the POSIX archiver](/howto/pax.md) +- [getopts_tutorial](/howto/getopts_tutorial.md) (*under construction!*) +- [dissectabadoneliner](/howto/dissectabadoneliner.md) An example of a bad oneliner, breakdown and fix (by `kojoro`) -- [Write tests for ./your-script.sh](/howto/testing-your-scripts.md.md) by +- [Write tests for ./your-script.sh](/howto/testing-your-scripts.md) by using bashtest util ## Bash syntax and operations -- [Bash features overview by version](/scripting/bashchanges.md.md) -- [Basic grammar rules](/syntax/basicgrammar.md.md) -- [Quoting and character escaping](/syntax/quoting.md.md) -- [Parsing and execution](/syntax/grammar/parser_exec.md.md) -- [Some words about words...](/syntax/words.md.md) -- [Patterns and pattern matching](/syntax/pattern.md.md) -- [Arithmetic expressions](/syntax/arith_expr.md.md) -- [List of shell options](/internals/shell_options.md.md) -- [Redirection](/syntax/redirection.md.md) -- [Special parameters and shell variables](/syntax/shellvars.md.md) -- [Arrays](/syntax/arrays.md.md) +- [Bash features overview by version](/scripting/bashchanges.md) +- [Basic grammar rules](/syntax/basicgrammar.md) +- [Quoting and character escaping](/syntax/quoting.md) +- [Parsing and execution](/syntax/grammar/parser_exec.md) +- [Some words about words...](/syntax/words.md) +- [Patterns and pattern matching](/syntax/pattern.md) +- [Arithmetic expressions](/syntax/arith_expr.md) +- [List of shell options](/internals/shell_options.md) +- [Redirection](/syntax/redirection.md) +- [Special parameters and shell variables](/syntax/shellvars.md) +- [Arrays](/syntax/arrays.md) ## Compound commands -| **[Compound commands overview](/syntax/ccmd/intro.md.md)** | | +| **[Compound commands overview](/syntax/ccmd/intro.md)** | | |:-----------------------------------------------------|------------------------------------------------------------------| | Grouping | | -| `{ ...; }` | [command grouping](/syntax/ccmd/grouping_plain.md.md) | -| `( ... )` | [command grouping in a subshell](/syntax/ccmd/grouping_subshell.md.md) | +| `{ ...; }` | [command grouping](/syntax/ccmd/grouping_plain.md) | +| `( ... )` | [command grouping in a subshell](/syntax/ccmd/grouping_subshell.md) | | Conditionals | | -| `[[ ... ]]` | [conditional expression](/syntax/ccmd/conditional_expression.md.md) | -| `if ...; then ...; fi` | [conditional branching](/syntax/ccmd/if_clause.md.md) | -| `case ... esac` | [pattern-based branching](/syntax/ccmd/case.md.md) | +| `[[ ... ]]` | [conditional expression](/syntax/ccmd/conditional_expression.md) | +| `if ...; then ...; fi` | [conditional branching](/syntax/ccmd/if_clause.md) | +| `case ... esac` | [pattern-based branching](/syntax/ccmd/case.md) | | Loops | | -| `for word in ...; do ...; done` | [classic for-loop](/syntax/ccmd/classic_for.md.md) | -| `for ((x=1; x<=10; x++)); do ...; done` | [C-style for-loop](/syntax/ccmd/c_for.md.md) | -| `while ...; do ...; done` | [while loop](/syntax/ccmd/while_loop.md.md) | -| `until ...; do ...; done` | [until loop](/syntax/ccmd/until_loop.md.md) | +| `for word in ...; do ...; done` | [classic for-loop](/syntax/ccmd/classic_for.md) | +| `for ((x=1; x<=10; x++)); do ...; done` | [C-style for-loop](/syntax/ccmd/c_for.md) | +| `while ...; do ...; done` | [while loop](/syntax/ccmd/while_loop.md) | +| `until ...; do ...; done` | [until loop](/syntax/ccmd/until_loop.md) | | Misc | | -| `(( ... ))` | [arithmetic evaluation](/syntax/ccmd/arithmetic_eval.md.md) | -| `select word in ...; do ...; done` | [user selections](/syntax/ccmd/user_select.md.md) | +| `(( ... ))` | [arithmetic evaluation](/syntax/ccmd/arithmetic_eval.md) | +| `select word in ...; do ...; done` | [user selections](/syntax/ccmd/user_select.md) | ## Expansions and substitutions -| **[Introduction to expansions and substitutions](/syntax/expansion/intro.md.md)** | | +| **[Introduction to expansions and substitutions](/syntax/expansion/intro.md)** | | |:----------------------------------------------------------------------------|------------------------------------------------------| -| `{A,B,C} {A..C}` | [Brace expansion](/syntax/expansion/brace.md.md) | -| `~/ ~root/` | [Tilde expansion](/syntax/expansion/tilde.md.md) | -| `$FOO ${BAR%.mp3}` | [Parameter expansion](/syntax/pe.md.md) | -| `` `command` $(command) `` | [Command substitution](/syntax/expansion/cmdsubst.md.md) | -| `<(command) >(command)` | [Process substitution](/syntax/expansion/proc_subst.md.md) | -| `$((1 + 2 + 3)) $[4 + 5 + 6]` | [Arithmetic expansion](/syntax/expansion/arith.md.md) | -| `Hello <---> Word!` | [Word splitting](/syntax/expansion/wordsplit.md.md) | -| `/data/*-av/*.mp?` | [Pathname expansion](/syntax/expansion/globs.md.md) | +| `{A,B,C} {A..C}` | [Brace expansion](/syntax/expansion/brace.md) | +| `~/ ~root/` | [Tilde expansion](/syntax/expansion/tilde.md) | +| `$FOO ${BAR%.mp3}` | [Parameter expansion](/syntax/pe.md) | +| `` `command` $(command) `` | [Command substitution](/syntax/expansion/cmdsubst.md) | +| `<(command) >(command)` | [Process substitution](/syntax/expansion/proc_subst.md) | +| `$((1 + 2 + 3)) $[4 + 5 + 6]` | [Arithmetic expansion](/syntax/expansion/arith.md) | +| `Hello <---> Word!` | [Word splitting](/syntax/expansion/wordsplit.md) | +| `/data/*-av/*.mp?` | [Pathname expansion](/syntax/expansion/globs.md) | ## Builtin Commands @@ -137,7 +137,7 @@ datastructures. declare +href="/commands/builtin/declare.md">declare Display or set shell variables or functions along with attributes. typeset @@ -167,14 +167,14 @@ href="/commands/builtin/local">local readonly +href="/commands/builtin/read.mdonly">readonly Mark variables or functions as read-only. typeset -r special builtin unset +href="/commands/builtin/unset.md">unset Unset variables and functions. - special builtin @@ -197,7 +197,7 @@ streams. coproc +href="/syntax/keywords/coproc.md">coproc Co-processes: Run a command in the background with pipes for reading / writing its standard streams. - @@ -212,21 +212,21 @@ href="/commands/builtin/echo">echo mapfile +href="/commands/builtin/mapfile.md">mapfile Read lines of input into an array. readarray builtin printf +href="/commands/builtin/printf.md">printf "advanced echo." - builtin read +href="/commands/builtin/read.md">read Read input into variables or arrays, or split strings into fields using delimiters. - @@ -241,14 +241,14 @@ Commands that modify shell behavior, change special options, assist in debugging caller +href="/commands/builtin/caller.md">caller Identify/print execution frames. - builtin set +href="/commands/builtin/set.md">set Set the positional parameters and/or set options that affect shell behaviour. - @@ -256,7 +256,7 @@ behaviour. shopt +href="/commands/builtin/shopt.md">shopt set/get some bash-specific shell options. - builtin @@ -305,7 +305,7 @@ href="/commands/builtin/continueBreak">continue / break let +href="/commands/builtin/let.md">let Arithmetic evaluation simple command. - builtin @@ -319,7 +319,7 @@ href="/commands/builtin/return">return [ +href="/commands/classictest.md">[ The classic test simple command. test builtin @@ -334,7 +334,7 @@ signals, process groups, subshells. exec +href="/commands/builtin/exec.md">exec Replace the current shell process or set redirections. - special builtin @@ -385,7 +385,7 @@ href="/commands/builtin/wait">wait ## Dictionary -| :bulb: A list of expressions, words, and their meanings is [here](/dict/index.md.md). | +| :bulb: A list of expressions, words, and their meanings is [here](/dict/index.md). | | --- | ## Links @@ -474,7 +474,7 @@ href="/commands/builtin/wait">wait commands](https://www.rosehosting.com/blog/basic-shell-commands-after-putty-ssh-logon/) - [Bashphorism list from the Bash IRC channel on Freenode](/misc/bashphorisms) -- [Some more or less funny commandline stuff](/misc/shell_humor.md.md) +- [Some more or less funny commandline stuff](/misc/shell_humor.md) - [How to Enable SSH on Ubuntu Tutorial](https://thishosting.rocks/how-to-enable-ssh-on-ubuntu/) - [How To Make an Awesome Custom Shell with @@ -499,7 +499,7 @@ If you have critiques or suggestions, please feel free to send a mail using the contact form on the right. Note that there is a simple discussion option below every article. -Please also see the [imprint](/user/thebonsai/imprint.md.md) if you have +Please also see the [imprint](/user/thebonsai/imprint.md) if you have problems with the site and its contents (legality, ...)! It also would be nice to drop a line when