Added obsolete syntax
This commit is contained in:
316
README.md
316
README.md
@@ -85,19 +85,10 @@ scripts and not full blown utilities.
|
|||||||
* [Arithmetic](#arithmetic)
|
* [Arithmetic](#arithmetic)
|
||||||
* [Simpler syntax to set variables.](#simpler-syntax-to-set-variables)
|
* [Simpler syntax to set variables.](#simpler-syntax-to-set-variables)
|
||||||
* [Ternary tests.](#ternary-tests)
|
* [Ternary tests.](#ternary-tests)
|
||||||
* [Colors](#colors)
|
* [Obsolete Syntax](#obsolete-syntax)
|
||||||
* [Convert a hex color to RGB.](#convert-a-hex-color-to-rgb)
|
* [Shebang.](#shebang)
|
||||||
* [Convert an RGB color to hex.](#convert-an-rgb-color-to-hex)
|
* [Command Substitution.](#command-substitution)
|
||||||
* [Information about the terminal](#information-about-the-terminal)
|
* [Function Declaration.](#function-declaration)
|
||||||
* [Get the terminal size in lines and columns (*from a script*).](#get-the-terminal-size-in-lines-and-columns-from-a-script)
|
|
||||||
* [Get the terminal size in pixels.](#get-the-terminal-size-in-pixels)
|
|
||||||
* [Get the current cursor position.](#get-the-current-cursor-position)
|
|
||||||
* [Code Golf](#code-golf)
|
|
||||||
* [Shorter `for` loop syntax.](#shorter-for-loop-syntax)
|
|
||||||
* [Shorter infinite loops.](#shorter-infinite-loops)
|
|
||||||
* [Shorter function declaration.](#shorter-function-declaration)
|
|
||||||
* [Shorter `if` syntax.](#shorter-if-syntax)
|
|
||||||
* [Simpler `case` statement to set variable.](#simpler-case-statement-to-set-variable)
|
|
||||||
* [Internal Variables](#internal-variables)
|
* [Internal Variables](#internal-variables)
|
||||||
* [Get the location to the `bash` binary.](#get-the-location-to-the-bash-binary)
|
* [Get the location to the `bash` binary.](#get-the-location-to-the-bash-binary)
|
||||||
* [Get the version of the current running `bash` process.](#get-the-version-of-the-current-running-bash-process)
|
* [Get the version of the current running `bash` process.](#get-the-version-of-the-current-running-bash-process)
|
||||||
@@ -108,6 +99,19 @@ scripts and not full blown utilities.
|
|||||||
* [Get the name of the Operating System / Kernel.](#get-the-name-of-the-operating-system--kernel)
|
* [Get the name of the Operating System / Kernel.](#get-the-name-of-the-operating-system--kernel)
|
||||||
* [Get the current working directory.](#get-the-current-working-directory)
|
* [Get the current working directory.](#get-the-current-working-directory)
|
||||||
* [Get the number of seconds the script has been running.](#get-the-number-of-seconds-the-script-has-been-running)
|
* [Get the number of seconds the script has been running.](#get-the-number-of-seconds-the-script-has-been-running)
|
||||||
|
* [Information about the terminal](#information-about-the-terminal)
|
||||||
|
* [Get the terminal size in lines and columns (*from a script*).](#get-the-terminal-size-in-lines-and-columns-from-a-script)
|
||||||
|
* [Get the terminal size in pixels.](#get-the-terminal-size-in-pixels)
|
||||||
|
* [Get the current cursor position.](#get-the-current-cursor-position)
|
||||||
|
* [Colors](#colors)
|
||||||
|
* [Convert a hex color to RGB.](#convert-a-hex-color-to-rgb)
|
||||||
|
* [Convert an RGB color to hex.](#convert-an-rgb-color-to-hex)
|
||||||
|
* [Code Golf](#code-golf)
|
||||||
|
* [Shorter `for` loop syntax.](#shorter-for-loop-syntax)
|
||||||
|
* [Shorter infinite loops.](#shorter-infinite-loops)
|
||||||
|
* [Shorter function declaration.](#shorter-function-declaration)
|
||||||
|
* [Shorter `if` syntax.](#shorter-if-syntax)
|
||||||
|
* [Simpler `case` statement to set variable.](#simpler-case-statement-to-set-variable)
|
||||||
* [Other](#other)
|
* [Other](#other)
|
||||||
* [Use `read` as an alternative to the `sleep` command.](#use-read-as-an-alternative-to-the-sleep-command)
|
* [Use `read` as an alternative to the `sleep` command.](#use-read-as-an-alternative-to-the-sleep-command)
|
||||||
* [Check if a program is in the user's PATH.](#check-if-a-program-is-in-the-users-path)
|
* [Check if a program is in the user's PATH.](#check-if-a-program-is-in-the-users-path)
|
||||||
@@ -916,47 +920,144 @@ Downloads
|
|||||||
((var=var2>var?var2:var))
|
((var=var2>var?var2:var))
|
||||||
```
|
```
|
||||||
|
|
||||||
# Colors
|
# Obsolete Syntax
|
||||||
|
|
||||||
## Convert a hex color to RGB.
|
## Shebang.
|
||||||
|
|
||||||
**Example Function:**
|
Use `#!/usr/bin/env bash` instead of `#!/bin/bash`.
|
||||||
|
|
||||||
```sh
|
- The former searches the user's `PATH` to find the `bash` binary.
|
||||||
hex_to_rgb() {
|
- The latter assumes it is always installed to `/bin/` which can cause issues.
|
||||||
# Usage: hex_to_rgb "#FFFFFF"
|
|
||||||
((r=16#${1:1:2}))
|
|
||||||
((g=16#${1:3:2}))
|
|
||||||
((b=16#${1:5:6}))
|
|
||||||
|
|
||||||
printf '%s\n' "$r $g $b"
|
```shell
|
||||||
|
# Right:
|
||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Wrong:
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## Command Substitution.
|
||||||
|
|
||||||
|
Use `$()` instead of `` ` ` ``.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Right.
|
||||||
|
var="$(command)"
|
||||||
|
|
||||||
|
# Wrong.
|
||||||
|
var=`command`
|
||||||
|
|
||||||
|
# $() can easily be nested whereas `` cannot.
|
||||||
|
var="$(command "$(command)")"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Function Declaration.
|
||||||
|
|
||||||
|
Don't use the `function` keyword, it reduces compatibility with older versions of `bash`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Right.
|
||||||
|
do_something() {
|
||||||
|
# ...
|
||||||
|
}
|
||||||
|
|
||||||
|
# Wrong.
|
||||||
|
function do_something() {
|
||||||
|
# ...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Example Usage:**
|
|
||||||
|
# Internal Variables
|
||||||
|
|
||||||
|
**NOTE**: This list does not include every internal variable (*You can
|
||||||
|
help by adding a missing entry!*).
|
||||||
|
|
||||||
|
For a complete list, see:
|
||||||
|
http://tldp.org/LDP/abs/html/internalvariables.html
|
||||||
|
|
||||||
|
## Get the location to the `bash` binary.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ hex_to_rgb "#FFFFFF"
|
"$BASH"
|
||||||
255 255 255
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Get the version of the current running `bash` process.
|
||||||
## Convert an RGB color to hex.
|
|
||||||
|
|
||||||
**Example Function:**
|
|
||||||
|
|
||||||
```sh
|
|
||||||
rgb_to_hex() {
|
|
||||||
# Usage: rgb_to_hex "r" "g" "b"
|
|
||||||
printf '#%02x%02x%02x\n' "$1" "$2" "$3"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Example Usage:**
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ rgb_to_hex "255" "255" "255"
|
# As a string.
|
||||||
#FFFFFF
|
"$BASH_VERSION"
|
||||||
|
|
||||||
|
# As an array.
|
||||||
|
"${BASH_VERSINFO[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Open the user's preferred text editor.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$EDITOR" "$file"
|
||||||
|
|
||||||
|
# NOTE: This variable may be empty, set a fallback value.
|
||||||
|
"${EDITOR:-vi}" "$file"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the name of the current function.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Current function.
|
||||||
|
"${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
# Parent function.
|
||||||
|
"${FUNCNAME[1]}"
|
||||||
|
|
||||||
|
# So on and so forth.
|
||||||
|
"${FUNCNAME[2]}"
|
||||||
|
"${FUNCNAME[3]}"
|
||||||
|
|
||||||
|
# All functions including parents.
|
||||||
|
"${FUNCNAME[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the host-name of the system.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$HOSTNAME"
|
||||||
|
|
||||||
|
# NOTE: This variable may be empty.
|
||||||
|
# Optionally set a fallback to the hostname command.
|
||||||
|
"${HOSTNAME:-$(hostname)}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the architecture of the Operating System.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$HOSTTYPE"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the name of the Operating System / Kernel.
|
||||||
|
|
||||||
|
This can be used to add conditional support for different Operating
|
||||||
|
Systems without needing to call `uname`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$OSTYPE"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the current working directory.
|
||||||
|
|
||||||
|
This is an alternative to the `pwd` built-in.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$PWD"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get the number of seconds the script has been running.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
"$SECONDS"
|
||||||
```
|
```
|
||||||
|
|
||||||
# Information about the terminal
|
# Information about the terminal
|
||||||
@@ -1037,6 +1138,50 @@ $ get_cursor_pos
|
|||||||
1 8
|
1 8
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
|
||||||
|
## Convert a hex color to RGB.
|
||||||
|
|
||||||
|
**Example Function:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hex_to_rgb() {
|
||||||
|
# Usage: hex_to_rgb "#FFFFFF"
|
||||||
|
((r=16#${1:1:2}))
|
||||||
|
((g=16#${1:3:2}))
|
||||||
|
((b=16#${1:5:6}))
|
||||||
|
|
||||||
|
printf '%s\n' "$r $g $b"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Usage:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ hex_to_rgb "#FFFFFF"
|
||||||
|
255 255 255
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Convert an RGB color to hex.
|
||||||
|
|
||||||
|
**Example Function:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
rgb_to_hex() {
|
||||||
|
# Usage: rgb_to_hex "r" "g" "b"
|
||||||
|
printf '#%02x%02x%02x\n' "$1" "$2" "$3"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Usage:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ rgb_to_hex "255" "255" "255"
|
||||||
|
#FFFFFF
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
# Code Golf
|
# Code Golf
|
||||||
|
|
||||||
## Shorter `for` loop syntax.
|
## Shorter `for` loop syntax.
|
||||||
@@ -1138,95 +1283,6 @@ esac
|
|||||||
os="$_"
|
os="$_"
|
||||||
```
|
```
|
||||||
|
|
||||||
# Internal Variables
|
|
||||||
|
|
||||||
**NOTE**: This list does not include every internal variable (*You can
|
|
||||||
help by adding a missing entry!*).
|
|
||||||
|
|
||||||
For a complete list, see:
|
|
||||||
http://tldp.org/LDP/abs/html/internalvariables.html
|
|
||||||
|
|
||||||
## Get the location to the `bash` binary.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$BASH"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the version of the current running `bash` process.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# As a string.
|
|
||||||
"$BASH_VERSION"
|
|
||||||
|
|
||||||
# As an array.
|
|
||||||
"${BASH_VERSINFO[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Open the user's preferred text editor.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$EDITOR" "$file"
|
|
||||||
|
|
||||||
# NOTE: This variable may be empty, set a fallback value.
|
|
||||||
"${EDITOR:-vi}" "$file"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the name of the current function.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# Current function.
|
|
||||||
"${FUNCNAME[0]}"
|
|
||||||
|
|
||||||
# Parent function.
|
|
||||||
"${FUNCNAME[1]}"
|
|
||||||
|
|
||||||
# So on and so forth.
|
|
||||||
"${FUNCNAME[2]}"
|
|
||||||
"${FUNCNAME[3]}"
|
|
||||||
|
|
||||||
# All functions including parents.
|
|
||||||
"${FUNCNAME[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the host-name of the system.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$HOSTNAME"
|
|
||||||
|
|
||||||
# NOTE: This variable may be empty.
|
|
||||||
# Optionally set a fallback to the hostname command.
|
|
||||||
"${HOSTNAME:-$(hostname)}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the architecture of the Operating System.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$HOSTTYPE"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the name of the Operating System / Kernel.
|
|
||||||
|
|
||||||
This can be used to add conditional support for different Operating
|
|
||||||
Systems without needing to call `uname`.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$OSTYPE"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the current working directory.
|
|
||||||
|
|
||||||
This is an alternative to the `pwd` built-in.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$PWD"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Get the number of seconds the script has been running.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
"$SECONDS"
|
|
||||||
```
|
|
||||||
|
|
||||||
# Other
|
# Other
|
||||||
|
|
||||||
## Use `read` as an alternative to the `sleep` command.
|
## Use `read` as an alternative to the `sleep` command.
|
||||||
|
|||||||
Reference in New Issue
Block a user