diff --git a/start b/start deleted file mode 100644 index a086361..0000000 --- a/start +++ /dev/null @@ -1,584 +0,0 @@ -[](bash4) \~~DISCUSSION:off\~~ - -# The Bash Hackers Wiki - -![](keywords>bash shell linux scripting) - -\ This wiki is intended to hold -documentation of any kind about GNU Bash. The main motivation was to -provide *human-readable documentation* and information so users aren't -forced to read every bit of the Bash manpage - which can be difficult to -understand. However, the docs here are **not** meant as a newbie -tutorial. - -This wiki and any programs found in this wiki are free software: you can -redistribute it and/or modify it under the terms of the GNU General -Public License as published by the Free Software Foundation, either -version 3 of the License, or (at your option) any later version. - -This wiki and its programs are distributed in the hope that it will be -useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program. If not, see \<\>. - -[What would YOU like to see here?](wishes) (outdated and locked, please -use the discussions) - -**Stranger!** [Feel free to -register](http://wiki.bash-hackers.org/start&do=register) and comment or -edit the contents. There is a [Bash Hackers Wiki needs love -page](/meta/need_love) that lists some things to do. The registration is -only there to prevent SPAM. \ - -## Scripting and general information - -- [Bash v4 - a rough overview](bash4) (unmaintained, since Bash 4 is - more or less standard) -- [style](/scripting/style) -- an assorted collection of style and optic - hints -- [basics](/scripting/basics) -- [newbie_traps](/scripting/newbie_traps) -- [bashbehaviour](/scripting/bashbehaviour) -- [posparams](/scripting/posparams) -- [processtree](/scripting/processtree) -- [obsolete](/scripting/obsolete) -- [nonportable](/scripting/nonportable) -- [debuggingtips](/scripting/debuggingtips) -- [terminalcodes](/scripting/terminalcodes) -- [tutoriallist](/scripting/tutoriallist) - -## Code snippets - -There is a [section that holds small code snippets](/snipplets/start). - -See also [some Bash source code excerpts](/misc/readthesourceluke). - -## How to.... - -[Doing specific tasks: concepts, methods, ideas](/howto/start): - -- [Simple locking (against parallel run)](/howto/mutex) -- [Rudimentary config files for your scripts](/howto/conffile) -- [Editing files with ed(1)](/howto/edit-ed) -- [Collapsing Functions](/howto/collapsing_functions) -- [Illustrated Redirection Tutorial](/howto/redirection_tutorial) -- [Calculate with dc(1)](/howto/calculate-dc) -- [Introduction to pax - the POSIX archiver](/howto/pax) -- [getopts_tutorial](/howto/getopts_tutorial) (*under construction!*) -- [dissectabadoneliner](/howto/dissectabadoneliner) An example of a bad - oneliner, breakdown and fix (by `kojoro`) -- [Write tests for ./your-script.sh](/howto/testing-your-scripts) by - using bashtest util - -## Bash syntax and operations - -- [Bash features overview by version](/scripting/bashchanges) -- [Basic grammar rules](/syntax/basicgrammar) -- [Quoting and character escaping](/syntax/quoting) -- [Parsing and execution](/syntax/grammar/parser_exec) -- [Some words about words...](/syntax/words) -- [Patterns and pattern matching](/syntax/pattern) -- [Arithmetic expressions](/syntax/arith_expr) -- [List of shell options](/internals/shell_options) -- [Redirection](/syntax/redirection) -- [Special parameters and shell variables](/syntax/shellvars) -- [Arrays](/syntax/arrays) - -\ ***Compound commands*** - -| **[Compound commands overview](/syntax/ccmd/intro)** | | -|:-----------------------------------------------------|------------------------------------------------------------------| -| Grouping | | -| `{ ...; }` | [command grouping](/syntax/ccmd/grouping_plain) | -| `( ... )` | [command grouping in a subshell](/syntax/ccmd/grouping_subshell) | -| Conditionals | | -| `[[ ... ]]` | [conditional expression](/syntax/ccmd/conditional_expression) | -| `if ...; then ...; fi` | [conditional branching](/syntax/ccmd/if_clause) | -| `case ... esac` | [pattern-based branching](/syntax/ccmd/case) | -| Loops | | -| `for word in ...; do ...; done` | [classic for-loop](/syntax/ccmd/classic_for) | -| `for ((x=1; x<=10; x++)); do ...; done` | [C-style for-loop](/syntax/ccmd/c_for) | -| `while ...; do ...; done` | [while loop](/syntax/ccmd/while_loop) | -| `until ...; do ...; done` | [until loop](/syntax/ccmd/until_loop) | -| Misc | | -| `(( ... ))` | [arithmetic evaluation](/syntax/ccmd/arithmetic_eval) | -| `select word in ...; do ...; done` | [user selections](/syntax/ccmd/user_select) | - -\ - -\ ***Expansions and substitutions*** - -| **[Introduction to expansions and substitutions](/syntax/expansion/intro)** | | -|:----------------------------------------------------------------------------|------------------------------------------------------| -| `{A,B,C} {A..C}` | [Brace expansion](/syntax/expansion/brace) | -| `~/ ~root/` | [Tilde expansion](/syntax/expansion/tilde) | -| `$FOO ${BAR%.mp3}` | [Parameter expansion](/syntax/pe) | -| `` `command` $(command) `` | [Command substitution](/syntax/expansion/cmdsubst) | -| `<(command) >(command)` | [Process substitution](/syntax/expansion/proc_subst) | -| `$((1 + 2 + 3)) $[4 + 5 + 6]` | [Arithmetic expansion](/syntax/expansion/arith) | -| `Hello <---> Word!` | [Word splitting](/syntax/expansion/wordsplit) | -| `/data/*-av/*.mp?` | [Pathname expansion](/syntax/expansion/globs) | - -\ \\ - -## Builtin Commands - -This is a selection of builtin commands and command-like keywords, -loosely arranged by their common uses. These are provided directly by -the shell, rather than invoked as standalone external commands. - -\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Declaration commands
-<wrap center round lo todo box 80%>Commands that set and query -attributes/types, and manipulate simple -datastructures.</wrap>
AltType
declareDisplay or set shell variables or functions along with -attributes.typesetbuiltin
exportDisplay or set shell variables, also giving them the export -attribute.typeset -xspecial builtin
evalEvaluate arguments as shell code.-special builtin
localDeclare variables as having function local scope.-builtin
readonlyMark variables or functions as read-only.typeset -rspecial builtin
unsetUnset variables and functions.-special builtin
shiftShift positional parameters-special builtin
I/O
-<wrap center round lo todo box 80%>Commands for reading/parsing -input, or producing/formatting output of standard -streams.</wrap>
AltType
coprocCo-processes: Run a command in the background with pipes for reading -/ writing its standard streams.-keyword
echoCreate output from arguments.-builtin
mapfileRead lines of input into an array.readarraybuiltin
printf"advanced echo."-builtin
readRead input into variables or arrays, or split strings into fields -using delimiters.-builtin
Configuration and Debugging
-<wrap center round lo todo box 80%>Commands that modify shell -behavior, change special options, assist in debugging.</wrap>
AltType
callerIdentify/print execution frames.-builtin
setSet the positional parameters and/or set options that affect shell -behaviour.-special builtin
shoptset/get some bash-specific shell options.-builtin
- -\ - -\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Control flow and data processing
-<wrap center round lo todo box 80%>Commands that operate on data -and/or affect control flow.</wrap>
AltType
colon"true" null command.truespecial builtin
dotSource external files.sourcespecial builtin
falseFail at doing nothing.-builtin
continue / breakcontinue with or break out of loops.-special builtin
letArithmetic evaluation simple command.-builtin
returnReturn from a function with a specified exit status.-special builtin
[The classic test simple command.testbuiltin
Process and Job control
-<wrap center round lo todo box 80%>Commands related to jobs, -signals, process groups, subshells.</wrap>
AltType
execReplace the current shell process or set redirections.-special builtin
exitExit the shell.-special builtin
killSend a signal to specified process(es)-builtin
trapSet signal handlers or output the current handlers.-special builtin
timesDisplay process times.-special builtin
waitWait for background jobs and asynchronous lists.-builtin
AltType
- -\ \\ \ previous alphabetical -version \ - -| A-G | | -|--------------------------------------|------------------------------------------------------------------------------------------------------| -| [caller](/commands/builtin/caller) | identify/print execution frames (Bash builtin) | -| [coproc](/syntax/keywords/coproc) | Co-processes (Bash keyword) | -| [declare](/commands/builtin/declare) | display or set shell variables or functions along with attributes (Bash builtin, synonym: `typeset`) | -| [exec](/commands/builtin/exec) | replace the shell, set redirections (Bash builtin) | -| I-N | | -| [let](/commands/builtin/let) | arithmetic evaluation - an old fashioned way (Bash builtin) | -| [mapfile](/commands/builtin/mapfile) | Mapping lines of input to an array, also named `readarray` (Bash builtin) | - -\ - -\ - -| O-T | | -|----------------------------------------|------------------------------------------------------------------| -| [printf](/commands/builtin/printf) | "advanced `echo`" (Bash builtin) | -| [read](/commands/builtin/read) | getting input from `stdin` (Bash builtin) | -| [readonly](/commands/builtin/readonly) | mark variables or functions as read-only (Bash builtin) | -| [set](/commands/builtin/set) | control positional parameters and shell behaviour (Bash builtin) | -| [shopt](/commands/builtin/shopt) | set/get shell options (Bash builtin) | -| [test](/commands/classictest) | the classic `test` command (Bash builtin) | -| U-Z | | -| [unset](/commands/builtin/unset) | unset variables and functions (Bash builtin) | - -\ \\ \ - -## Dictionary - -| :bulb: A list of expressions, words, and their meanings is [here](/dict/index). | -| --- | - -## Links - -### Official Bash links - -- [Chet Ramey's Bash - page](http://tiswww.case.edu/php/chet/bash/bashtop.html) and its - [FAQ](http://tiswww.case.edu/php/chet/bash/FAQ). -- [GNU Bash software page](http://www.gnu.org/software/bash/) -- Official Bash mailing lists: - - **Bug reports**: - ([archives](http://mail.gnu.org/pipermail/bug-bash)) - - **General questions**: - ([archives](http://mail.gnu.org/pipermail/help-bash)) -- Official Bash git repository: - - **Browse**: [cgit](http://git.savannah.gnu.org/cgit/bash.git) - - **Clone**: // ssh://git.sv.gnu.org/srv/git/bash.git • - // ssh://git.sv.gnu.org/srv/git/bash.git • // - http://git.savannah.gnu.org/r/bash.git - -### Recommended Shell resources - -- [Greg's wiki](http://mywiki.wooledge.org/) - Greg Wooledge's (aka - "greycat") wiki -- with **MASSIVE** information about Bash and UNIX(r) - in general. - - [BashFAQ](http://mywiki.wooledge.org/BashFAQ) • - [BashGuide](http://mywiki.wooledge.org/BashGuide) • - [BashPitfalls](http://mywiki.wooledge.org/BashPitfalls) • - [BashSheet](http://mywiki.wooledge.org/BashSheet) -- [Sven Mascheck's pages](http://www.in-ulm.de/~mascheck/) - A goldmine - of information. A must-read. -- [\#ksh channel page](https://www.mirbsd.org/ksh-chan.htm) - \#ksh - Freenode channel page maintains a solid collection of recommended - links. -- [The Grymoire Unix pages](http://www.grymoire.com/Unix/) - Good - scripting information, especially read the - [quoting](http://www.grymoire.com/Unix/Quote.html) guide. -- [Heiner's "Shell Dorado"](http://www.shelldorado.com) - Tips, tricks, - links - for every situation. -- [The Single Unix Specification (version 4, aka - POSIX-2008)](http://pubs.opengroup.org/onlinepubs/9699919799/) -- [The Austin Group](http://www.opengroup.org/austin/) - [List - archives](http://dir.gmane.org/gmane.comp.standards.posix.austin.general), - [Bug tracker](http://austingroupbugs.net/main_page.php) -- [comp.unix.shell FAQ](http://cfajohnson.com/shell/cus-faq.html) -- [Advanced Bash-Scripting - Guide](https://tldp.org/LDP/abs/html/index.html) - last update: 10 Mar - 2014, but still very useful guide. - -#### Documentation / Reference - -- **Bash**: [man page](http://tiswww.case.edu/php/chet/bash/bash.html) - [info page](http://tiswww.case.edu/php/chet/bash/bashref.html) -- **AT&T ksh**: - [ksh88](http://www2.research.att.com/sw/download/man/man1/ksh88.html) - [ksh93](http://www2.research.att.com/sw/download/man/man1/ksh.html) -- [mksh](https://www.mirbsd.org/htman/i386/man1/mksh.htm) (pdksh - successor) -- [zsh](http://zsh.sourceforge.net/Doc/) -- [dash](http://man7.org/linux/man-pages/man1/dash.1.html) -- [Heirloom Bourne shell](http://heirloom.sourceforge.net/man/sh.1.html) -- [Thompson shell](http://v6shell.org/man/osh.1.html) - -### Assorted interesting links - -- [History and development of the traditional Bourne shell - family](http://www.in-ulm.de/~mascheck/bourne/) - very interesting and - nice to read! -- [Interview with Chet - Ramey](http://www.computerworld.com.au/article/222764/-z_programming_languages_bash_bourne-again_shell) -- [Interview with Steve - Bourne](http://www.computerworld.com.au/article/279011/a-z_programming_languages_sh) - • [Stephen Bourne - BSDCan 2015 - keynote](https://www.youtube.com/watch?v=2kEJoWfobpA) -- [Interview with David - Korn](http://news.slashdot.org/story/01/02/06/2030205/david-korn-tells-all) -- [Kernighan on the Unix pipeline (computerphile - video)](https://www.youtube.com/watch?v=bKzonnwoR2I) -- Linux in general, with some shell related stuff: [nixCraft: Linux - Tips, Hacks, Tutorials and Ideas](http://www.cyberciti.biz/) -- Linux tutorials, guides and how-tos: [RoseHosting - Blog](https://www.rosehosting.com/blog/), [bash script for installing - WordPress](https://www.rosehosting.com/blog/script-install-wordpress-on-a-debianubuntu-vps/) - and some [basic shell - 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) -- [How to Enable SSH on Ubuntu - Tutorial](https://thishosting.rocks/how-to-enable-ssh-on-ubuntu/) -- [How To Make an Awesome Custom Shell with - ZSH](https://linuxstans.com/how-to-make-an-awesome-custom-shell-with-zsh/) - -### Bash Libraries (needs review) - -- [An oo-style bash library for bash - 4](http://sourceforge.net/projects/oobash/) - provides tools for rapid - script development and huge libraries. -- [General purpose shell framework for bash - 4](https://github.com/hornos/shf3) - in development. -- [General purpose bash library for bash - 4](https://github.com/chilicuil/learn/blob/master/sh/lib) - active - development - -\
- -## Most wanted - -| Statistics for Month: **April 2012** | | | -|--------------------------------------|-------|------------------------------------------------------------| -| Rank | Views | Article | -| 1 | 6833 | [getopts_tutorial](/howto/getopts_tutorial) (March: 11663) | -| 2 | 4025 | [printf](/commands/builtin/printf) (March: 7079) | -| 3 | 2861 | [quoting](/syntax/quoting) (March: 5730) | -| 4 | 2854 | [classictest](/commands/classictest) (March: 6145) | -| 5 | 2222 | [pe](/syntax/pe) (March: 4540) | -| 6 | 1760 | [posparams](/scripting/posparams) (March: 3591) | -| 7 | 1249 | [bash4](bash4) (March: --) | -| 8 | 1212 | [edit-ed](/howto/edit-ed) (March: 2727) | -| 9 | 1205 | [read](/commands/builtin/read) (March: --) | -| 10 | 1182 | [mutex](/howto/mutex) (March: --) | - -- "Total visits": 35144 -- The overall "start" page is not counted - -\ - -## Contact - -\ Visit us in `irc.freenode.net`, channel `#bash` ;-) - -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) if you have -problems with the site and its contents (legality, ...)! - -It also would be nice to drop a line when - -- it helped you -- it didn't help you (something missing / unclear) -- you like it -- you don't like it -- you found mistakes / bugs - -Simply: Reader's feedback \ - -\ ![](contact>subj=Wiki reader feedback) \