Difference between revisions of "Bash"

From DWIKI
⧼monobook-jumptonavigation⧽⧼monobook-jumptosearch⧽
m
m
Line 1: Line 1:
 +
 
*[http://www.gnu.org/software/bash/bash.html Homepage]
 
*[http://www.gnu.org/software/bash/bash.html Homepage]
*http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
 
*[http://teohm.com/blog/shortcuts-to-move-faster-in-bash-command-line/ Shortcuts to move faster in Bash command line]
 
*[http://en.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html Bash Guide for Beginners]
 
*http://www.ling.helsinki.fi/users/reriksso/unix/shell.html
 
*[http://en.tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide]
 
*[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial]
 
*[http://subsignal.org/doc/AliensBashTutorial.html Aliens Bash Tutorial]
 
*http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
 
*[https://ss64.com/bash/syntax-keyboard.html Bash Keyboard Shortcuts]
 
*[https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ Change colour of bash prompt]
 
  
 +
*[http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html]
 +
*[http://teohm.com/blog/shortcuts-to-move-faster-in-bash-command-line/ Shortcuts to move faster in Bash command line]
 +
*[http://en.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html Bash Guide for Beginners]
 +
*[http://www.ling.helsinki.fi/users/reriksso/unix/shell.html http://www.ling.helsinki.fi/users/reriksso/unix/shell.html]
 +
*[http://en.tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide]
 +
*[http://www.freeos.com/guides/lsst/ Linux Shell Scripting Tutorial]
 +
*[http://subsignal.org/doc/AliensBashTutorial.html Aliens Bash Tutorial]
 +
*[http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/ http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/]
 +
*[https://ss64.com/bash/syntax-keyboard.html Bash Keyboard Shortcuts]
 +
*[https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ Change colour of bash prompt]
 +
 +
 
  
 
= Tips and tricks =
 
= Tips and tricks =
Line 23: Line 26:
 
=== check if var contains substring ===
 
=== check if var contains substring ===
  
  [[ $foo =~ .*sub.* ]]
+
  [[$foo_=~_.*sub.*|$foo =~ .*sub.*]]
  
 
=== get first character of a string ===
 
=== get first character of a string ===
Line 92: Line 95:
 
     echo $1 $2
 
     echo $1 $2
 
   }
 
   }
 +
 +
=== convert units ===
 +
function convertunits() {
 +
        C="$1"
 +
        U="$2"
 +
        debug "converting $C $U"
 +
        case $U in
 +
                "KiB") O=$((C*1000)) ;;
 +
                "MiB") O=$((C*1000*1000)) ;;
 +
                "GiB") O=$((C*1000*1000*1000)) ;;
 +
                "TiB") O=$((C*1000*1000*1000*1000)) ;;
 +
                *) O="convert error in $U" ;;
 +
        esac
 +
        if [ -z "$O" ];then O="convert_error for unit $U";fi
 +
        echo "$O"
 +
 +
}
  
 
== Check if disk is mounted ==
 
== Check if disk is mounted ==
 +
 
  mountpoint /mnt/foo
 
  mountpoint /mnt/foo
 
 
 
   [[Category:Scripting]] [[Category:Programming]]
 
   [[Category:Scripting]] [[Category:Programming]]

Revision as of 15:30, 30 August 2021

 

Tips and tricks

String manipulation

Remove character from string

VERSION='2.3.3'
echo "${VERSION//.}"

check if var contains substring

$foo =~ .*sub.*

get first character of a string

FIRST=${STRING:0:1}

read without while loop

The problem is scope, try

echo foo bar | { read a b;echo $b; }

check if variable is integer

if [[$foo =~ ^[0-9]+$]]

 

 

move cursor

^b move back 1 char
^f move forward 1 char
alt-b move back 1 word
alf-f move forward 1 word

loops

loop through range of numbers

for i in {0..10};do echo $i;done

 

exit while loop

break

 

skip one in loop

continue

bash history timestamp

HISTTIMEFORMAT="%d/%m/%y %T "

screen and bash history

To make sure all screens write to same history (at least on CentOS and RHEL):

echo "history -a;history -r" > /etc/sysconfig/bash-prompt-screen
chmod +x /etc/sysconfig/bash-prompt-screen

In general:

export PROMPT_COMMAND='history -n'

or

export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"

functions

function foo() {
   echo $1 $2
 }

convert units

function convertunits() {

       C="$1"
       U="$2"
       debug "converting $C $U"
       case $U in
               "KiB") O=$((C*1000)) ;;
               "MiB") O=$((C*1000*1000)) ;;
               "GiB") O=$((C*1000*1000*1000)) ;;
               "TiB") O=$((C*1000*1000*1000*1000)) ;;
               *) O="convert error in $U" ;;
       esac
       if [ -z "$O" ];then O="convert_error for unit $U";fi
       echo "$O"

}

Check if disk is mounted

mountpoint /mnt/foo