Bash (Unix shell): Difference between revisions
| (17 intermediate revisions by the same user not shown) | |||
| Line 20: | Line 20: | ||
[https://linuxize.com/post/bash-if-else-statement/ https://linuxize.com/post/bash-if-else-statement/] | [https://linuxize.com/post/bash-if-else-statement/ https://linuxize.com/post/bash-if-else-statement/] | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
if [[ $VAR -gt 10 ]] then | if [[ $VAR -gt 10 ]]; then | ||
echo "The variable is greater than 10." | echo "The variable is greater than 10." | ||
elif [[ $VAR -eq 10 ]] then | elif [[ $VAR -eq 10 ]]; then | ||
echo "The variable is equal to 10." | echo "The variable is equal to 10." | ||
else | else | ||
| Line 30: | Line 30: | ||
[https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html bash if statements] | [https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html bash if statements] | ||
;Some common expressions: | |||
<syntaxhighlight lang="bash"> | |||
# File exists and is a regular file. | |||
[ -f $FILE ] | |||
# File is non-zero size | |||
[ -s $FILE ] | |||
# String has length zero | |||
[ -z $STR ] | |||
# String has length non-zero | |||
[ -n $STR ] | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
# Check if user is root (https://stackoverflow.com/questions/18215973/how-to-check-if-running-as-root-in-a-bash-script) | |||
if [ "$EUID" -ne 0 ]; then | |||
echo "Please run as root" | |||
exit | |||
fi | |||
</syntaxhighlight> | |||
===Comparisons=== | ===Comparisons=== | ||
| Line 35: | Line 54: | ||
* <code>-gt</code> is <code>></code> | * <code>-gt</code> is <code>></code> | ||
* <code>-ge</code> is <code>>=</code> | * <code>-ge</code> is <code>>=</code> | ||
===Arrays=== | ===Arrays=== | ||
| Line 50: | Line 66: | ||
/media/veracrypt7 | /media/veracrypt7 | ||
/media/veracrypt8 | /media/veracrypt8 | ||
) | ) | ||
# Add to the array | |||
DRIVES+=(/media/veracrypt9) | |||
for i in "${DRIVES[@]}" | for i in "${DRIVES[@]}" | ||
| Line 96: | Line 113: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
trap "exit" INT | trap "exit" INT | ||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
trap 'kill $(jobs -p)' EXIT | |||
</syntaxhighlight> | </syntaxhighlight> | ||
===Wait=== | ===Wait=== | ||
Add <code>wait</code> at the end of a script to wait for all subprocesses. | Add <code>wait</code> at the end of a script to wait for all subprocesses. | ||
===Brace Expansion=== | |||
When you type the following: | |||
<syntaxhighlight lang="bash"> | |||
echo {red,green,blue}_apple | |||
</syntaxhighlight> | |||
bash will print out | |||
<pre> | |||
red_apple green_apple blue_apple | |||
</pre> | |||
If you want to save this into a variable, you can save it as an array: | |||
<syntaxhighlight lang="bash"> | |||
APPLES=({red,green,blue}_apple) | |||
echo "${APPLES[@]}" | |||
</syntaxhighlight> | |||
===<code>--</code>=== | |||
[https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean Reference] | |||
<code>--</code> explicitly ends non-positional arguments for many commands | |||
===alias=== | |||
You can add aliases to your <code>.bashrc</code> to make commmon commands shorter. | |||
<syntaxhighlight lang="bash"> | |||
alias kc=kubectl | |||
alias tb="tensorboard --logdir" | |||
</syntaxhighlight> | |||
==dirname== | ==dirname== | ||
| Line 108: | Line 157: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" | |||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" | cd "${DIR}" || exit 1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 124: | Line 173: | ||
Your <code>.bashrc</code> file will be loaded for each terminal.<br> | Your <code>.bashrc</code> file will be loaded for each terminal.<br> | ||
==Presentation of Shell Variable (PS1)== | ===Presentation of Shell Variable (PS1)=== | ||
Add the following to show your current working directory. | Add the following to show your current working directory. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$' | PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ ' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Programming languages]] | |||