Bash (Unix shell): Difference between revisions

 
(11 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>
===Check if File/Folder Exists===
See [https://linuxize.com/post/bash-check-if-file-exists/#check-if-directory-exist https://linuxize.com/post/bash-check-if-file-exists/#check-if-directory-exist].


===Arrays===
===Arrays===
Line 50: Line 66:
   /media/veracrypt7
   /media/veracrypt7
   /media/veracrypt8
   /media/veracrypt8
  /media/veracrypt9
)
)
# 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>


Line 121: Line 141:


<code>--</code> explicitly ends non-positional arguments for many commands
<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 129: 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 150: Line 178:
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\$ '
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]]