Bash: Difference between revisions

From DWIKI
mNo edit summary
Line 11: Line 11:
*[https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ Change colour of bash prompt]
*[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=
 
==String manipulation==
= Tips and tricks =
===Remove character from string===
 
== String manipulation ==
 
=== Remove character from string ===
 
  VERSION='2.3.3'
  VERSION='2.3.3'
  echo "${VERSION//.}"
  echo "${VERSION//.}"


===check if var contains substring===
=== check if var contains substring ===
  [[ $foo =~ .*sub.* ]]
 
  [[ $foo =~ .*sub.* ]]
 
=== get first character of a string ===


===get first character of a string===
  FIRST=${STRING:0:1}
  FIRST=${STRING:0:1}


==read without while loop==
== read without while loop ==
 
The problem is scope, try
The problem is scope, try
  echo foo bar | { read a b;echo $b; }
  echo foo bar | { read a b;echo $b; }


==check if variable is integer==
== check if variable is integer ==
if [[ $foo =~ ^[0-9]+$ ]]


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


 


 
== move cursor ==


==move cursor==
  ^b move back 1 char
  ^b move back 1 char
  ^f move forward 1 char
  ^f move forward 1 char
Line 39: Line 50:
  alf-f move forward 1 word
  alf-f move forward 1 word


==loops==
== loops ==
===loop through range of numbers===
 
=== loop through range of numbers ===
 
  for i in {0..10};do echo $i;done
  for i in {0..10};do echo $i;done


[[Category: Scripting]]
 
[[Category: Programming]]


=== exit while loop ===


===exit while loop===
  break
  break


 
=== skip one in loop ===


===skip one in loop===
  continue
  continue


==bash history timestamp==
== bash history timestamp ==
 
  HISTTIMEFORMAT="%d/%m/%y %T "
  HISTTIMEFORMAT="%d/%m/%y %T "


==screen and bash history==
== screen and bash history ==
 
To make sure all screens write to same history (at least on CentOS and RHEL):
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
  echo "history -a;history -r" > /etc/sysconfig/bash-prompt-screen
  chmod +x /etc/sysconfig/bash-prompt-screen
  chmod +x /etc/sysconfig/bash-prompt-screen


In general:
In general:
  export PROMPT_COMMAND='history -n'
  export PROMPT_COMMAND='history -n'
or
or
  export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"
  export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"


==functions==
== functions ==
 
  function foo() {
  function foo() {
     echo $1 $2
     echo $1 $2
   }
   }
== Check if disk is mounted ==
mountpoint /mnt/foo
  [[Category:Scripting]] [[Category:Programming]]

Revision as of 10:17, 2 February 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
 }

Check if disk is mounted

mountpoint /mnt/foo