diff --git a/docs/bash4.md b/docs/bash4.md
index 5565392..839be57 100644
--- a/docs/bash4.md
+++ b/docs/bash4.md
@@ -1,12 +1,9 @@
# Bash 4 - a rough overview
-:V4:
-
-\Attention: Since Bash 4 has been around for quite some time now
-(4.3 will come soon), I consider it to be \"standard\". This page is not
-maintained anymore and is left here to keep your links working. See the
-[bashchanges](/scripting/bashchanges) page for new stuff
-introduced.\
+!!! warning "Attention"
+ Since Bash 4 has been around for quite some time now (4.3 will come soon), I consider it to be "standard".
+ This page is not maintained anymore and is left here to keep your links working.
+ See the [bashchanges](/scripting/bashchanges) page for new stuff introduced.
Besides many bugfixes since Bash 3.2, Bash 4 will bring some interesting
new features for shell users and scripters. See also
@@ -15,23 +12,19 @@ more details.
Not all of the changes and news are included here, just the biggest or
most interesting ones. The changes to completion, and the readline
-component are not covered. **Though, if you\'re familiar with these
-parts of Bash (and Bash 4), feel free to write a chapter here.**
+component are not covered. **Though, if you're familiar with these parts of Bash (and Bash 4), feel free to write a chapter here.**
The complete list of fixes and changes is in the CHANGES or NEWS file of
your Bash 4 distribution.
-\ The current available **stable**
-version is 4.4.18 release (February 03, 2018):
+The current available **stable** version is 4.4.18 release (February 03, 2018):
--
--
-
-\
+-
+-
## New or changed commands and keywords
-### The new \"coproc\" keyword
+### The new "coproc" keyword
Bash 4 introduces the concepts of coprocesses, a well known feature of
other shells. The basic concept is simple: It will start any command in
@@ -43,7 +36,7 @@ communicate with its input and output data streams.
See [The coproc keyword](/syntax/keywords/coproc)
-### The new \"mapfile\" builtin
+### The new "mapfile" builtin
The `mapfile` builtin is able to map the lines of a file directly into
an array. This avoids having to fill an array yourself using a loop. It
@@ -52,7 +45,7 @@ callback, for example to display a progress bar.
See: [mapfile](/commands/builtin/mapfile)
-### Changes to the \"case\" keyword
+### Changes to the "case" keyword
The `case` construct understands two new action list terminators:
@@ -64,7 +57,7 @@ pattern instead of terminating the whole execution.
See [case](/syntax/ccmd/case)
-### Changes to the \"declare\" builtin
+### Changes to the "declare" builtin
The `-p` option now prints all attributes and values of declared
variables (or functions, when used with `-f`). The output is fully
@@ -77,7 +70,7 @@ assignment.
`declare -A` declares associative arrays (see below).
-### Changes to the \"read\" builtin
+### Changes to the "read" builtin
The `read` builtin command has some interesting new features.
@@ -95,7 +88,7 @@ able to change the text, or press return to accept it.
See [read](/commands/builtin/read)
-### Changes to the \"help\" builtin
+### Changes to the "help" builtin
The builtin itself didn\'t change much, but the data displayed is more
structured now. The help texts are in a better format, much easier to
@@ -104,7 +97,7 @@ read.
There are two new options: `-d` displays the summary of a help text,
`-m` displays a manpage-like format.
-### Changes to the \"ulimit\" builtin
+### Changes to the "ulimit" builtin
Besides the use of the 512 bytes blocksize everywhere in POSIX mode,
`ulimit` supports two new limits: `-b` for max socket buffer size and
@@ -135,13 +128,15 @@ When using substring expansion on the positional parameters, a starting
index of 0 now causes \$0 to be prepended to the list (if the positional
parameters are used). Before, this expansion started with \$1:
- # this should display $0 on Bash v4, $1 on Bash v3
- echo ${@:0:1}
+```bash
+# this should display $0 on Bash v4, $1 on Bash v3
+echo ${@:0:1}
+```
### Globbing
-There\'s a new shell option `globstar`. When enabled, Bash will perform
-recursive globbing on `**` \-- this means it matches all directories and
+There's a new shell option `globstar`. When enabled, Bash will perform
+recursive globbing on `**` – this means it matches all directories and
files from the current position in the filesystem, rather than only the
current level.
@@ -158,11 +153,13 @@ associative arrays.
An associative array is an array indexed by an arbitrary string,
something like
- declare -A ASSOC
+```bash
+declare -A ASSOC
- ASSOC[First]="first element"
- ASSOC[Hello]="second element"
- ASSOC[Peter Pan]="A weird guy"
+ASSOC[First]="first element"
+ASSOC[Hello]="second element"
+ASSOC[Peter Pan]="A weird guy"
+```
See [arrays](/syntax/arrays)
@@ -179,11 +176,11 @@ See [redirection](/syntax/redirection)
## Interesting new shell variables
- Variable Description
- ---------------------------------------------------- --------------------------------------------------------------------------------
- [BASHPID](/syntax/shellvars#BASHPID) contains the PID of the current shell (this is different than what `$$` does!)
- [PROMPT_DIRTRIM](/syntax/shellvars#PROMPT_DIRTRIM) specifies the max. level of unshortened pathname elements in the prompt
- [FUNCNEST](/syntax/shellvars#FUNCNEST) control the maximum number of shell function recursions
+| Variable | Description |
+| -------------------------------------------------- | ------------------------------------------------------------------------------- |
+| [BASHPID](/syntax/shellvars#BASHPID) | contains the PID of the current shell (this is different than what `$$` does!) |
+| [PROMPT_DIRTRIM](/syntax/shellvars#PROMPT_DIRTRIM) | specifies the max. level of unshortened pathname elements in the prompt |
+| [FUNCNEST](/syntax/shellvars#FUNCNEST) | control the maximum number of shell function recursions |
See [shellvars](/syntax/shellvars)
@@ -192,28 +189,28 @@ See [shellvars](/syntax/shellvars)
The mentioned shell options are **off by default** unless otherwise
mentioned.
- Option Description
- ------------- --------------------------------------------------------------------------------------------------------
- `checkjobs` check for and report any running jobs at shell exit
- `compat*` set compatiblity modes for older shell versions (influences regular expression matching in `[[ ... ]]`
- `dirspell` enables spelling corrections on directory names during globbing
- `globstar` enables recursive globbing with `**`
- `lastpipe` (4.2) to execute the last command in a pipeline in the current environment
+| Option | Description |
+| ----------- | ------------------------------------------------------------------------------------------------------ |
+| `checkjobs` | check for and report any running jobs at shell exit |
+| `compat*` | set compatiblity modes for older shell versions (influences regular expression matching in `[[ ... ]]` |
+| `dirspell` | enables spelling corrections on directory names during globbing |
+| `globstar` | enables recursive globbing with `**` |
+| `lastpipe` | (4.2) to execute the last command in a pipeline in the current environment |
See [shell_options](/internals/shell_options)
## Misc
-- If a command is not found, the shell attempts to execute a shell
- function named `command_not_found_handle`, supplying the command
- words as the function arguments. This can be used to display
- userfriendly messages or perform different command searches
-- The behaviour of the `set -e` (`errexit`) mode was changed, it now
- acts more intuitive (and is better documented in the manpage).
-- The output target for the `xtrace` (`set -x`/`set +x`) feature is
- configurable **since Bash 4.1** (previously, it was fixed to
- `stderr`): a variable named
- [BASH_XTRACEFD](/syntax/shellvars#BASH_XTRACEFD) can be set to the
- filedescriptor that should get the output
-- Bash 4.1 is able to log the history to syslog (only to be enabled at
- compile time in `config-top.h`)
+- If a command is not found, the shell attempts to execute a shell
+ function named `command_not_found_handle`, supplying the command
+ words as the function arguments. This can be used to display
+ userfriendly messages or perform different command searches
+- The behaviour of the `set -e` (`errexit`) mode was changed, it now
+ acts more intuitive (and is better documented in the manpage).
+- The output target for the `xtrace` (`set -x`/`set +x`) feature is
+ configurable **since Bash 4.1** (previously, it was fixed to
+ `stderr`): a variable named
+ [BASH_XTRACEFD](/syntax/shellvars#BASH_XTRACEFD) can be set to the
+ filedescriptor that should get the output
+- Bash 4.1 is able to log the history to syslog (only to be enabled at
+ compile time in `config-top.h`)