User Tools

Site Tools


bash

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
bash [2011/10/18 13:11]
k2patel [Indirect Referance]
bash [2020/08/10 02:35] (current)
Line 1: Line 1:
 ====== Bash ====== ====== Bash ======
 +  * [[ Floating Point Calculation ]]
 +
  
 ==== Bash Short-Cut ==== ==== Bash Short-Cut ====
Line 119: Line 121:
 [ FILE1 -ef FILE2 ] True if FILE1 and FILE2 refer to the same device and inode numbers. [ FILE1 -ef FILE2 ] True if FILE1 and FILE2 refer to the same device and inode numbers.
 [ -o OPTIONNAME ] True if shell option "​OPTIONNAME"​ is enabled. [ -o OPTIONNAME ] True if shell option "​OPTIONNAME"​ is enabled.
-[ -z STRING ] True ​of the length ​if "​STRING"​ is zero.+[ -z STRING ] True ​if the length ​of "​STRING"​ is zero.
 [ -n STRING ] or [ STRING ] True if the length of "​STRING"​ is non-zero. [ -n STRING ] or [ STRING ] True if the length of "​STRING"​ is non-zero.
 [ STRING1 == STRING2 ] True if the strings are equal. "​="​ may be used instead of "​=="​ for strict POSIX compliance. [ STRING1 == STRING2 ] True if the strings are equal. "​="​ may be used instead of "​=="​ for strict POSIX compliance.
Line 269: Line 271:
 </​code>​ </​code>​
  
 +
 +==== Bash alias and complition ====
 +Using command completion for alias in bash.
 +<code bash ~/​.bash_profile>​
 +alias c='/​usr/​bin/​ssh'​
 +export HLIST
 +HLIST=`cat ~/​.ssh/​known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "​\["​`
 +HLIST="​${HLIST} $(cat ~/​.ssh/​config | grep Host | awk '​{print $2}' | grep -v \*)"
 +HLIST=$(echo ${HLIST} | sort | uniq)
 +complete -W "​${HLIST}"​ c
 +</​code>​
 +
 +==== Control case ====
 +In Bash 4:
 +
 +To lowercase
 +
 +<code bash>
 +$ string="​A FEW WORDS"
 +$ echo ${string,}
 +a FEW WORDS
 +$ echo ${string,,}
 +a few words
 +$ echo ${string,,​[AEIUO]}
 +a FeW WoRDS
 +
 +$ string="​A Few Words"
 +$ declare -l string
 +$ string=$string;​ echo $string
 +a few words
 +</​code>​
 +
 +To uppercase
 +
 +<code bash>
 +$ string="​a few words"
 +$ echo ${string^}
 +A few words
 +$ echo ${string^^}
 +A FEW WORDS
 +$ echo ${string^^[aeiou]}
 +A fEw wOrds
 +
 +$ string="​A Few Words"
 +$ declare -u string
 +$ string=$string;​ echo $string
 +A FEW WORDS
 +</​code>​
 +
 +Toggle (undocumented)
 +
 +<code bash>
 +$ string="​A Few Words"
 +$ echo ${string~~}
 +a fEW wORDS
 +$ string="​A FEW WORDS"
 +$ echo ${string~}
 +a fEW wORDS
 +$ string="​a few words"
 +$ echo ${string~}
 +A Few Words
 +</​code>​
 +
 +Capitalize (undocumented)
 +
 +<code bash>
 +$ string="​a few words"
 +$ declare -c string
 +$ string=$string
 +$ echo $string
 +A few words
 +</​code>​
 +
 +Title case:
 +
 +<code bash>
 +$ string="​a few words"
 +$ string=($string)
 +$ string=${string[@]^}
 +$ echo $string
 +A Few Words
 +
 +$ declare -c string
 +$ string=(a few words)
 +$ echo ${string[@]}
 +A Few Words
 +</​code>​
 +
 +To turn off a declare attribute, use "​+"​. For example, declare +c string. This affects subsequent assignments and not the current value.
 +
 +==== Bash Tips / Tricks ====
 +
 +=== Quating ===
 +Bash has a special form of quoting, $'​string'​ in which backslash-character combinations are expanded. For example, echo $'this is a literal tab: \t'
 +<code bash>
 +re='​foo.*bar';​ [[ $'​foo\nbar'​ =~ $re ]] && echo '​yes'​ || echo '​no'​
 +</​code>​
 +
 +=== History Size ===
 +<code bash>
 +HISTSIZE=1500000
 +HISTFILESIZE=1500000
 +HISTTIMEFORMAT="​[%Y-%m-%d - %H:%M:%S] - "
 +</​code>​
 +
 +=== Truth Table ===
 +<code bash>
 +These two commands not the same:
 +
 +command1 && command2 || command3
 +
 +if command1
 +then
 +command2
 +else
 +command3
 +fi
 +</​code>​
 +
 +In the if-then-else,​ exactly one of command2 or command3 will be executed. But in the && || version, command3 runs if either command1 or command2 returns false.
 +
 +<code bash>
 +for c1 in true false; do for c2 in true false; do echo "$c1 && $c2 || c3"; (echo c1; $c1) && (echo c2; $c2) || echo c3; done; done
 +</​code>​
 +
 +And the output:
 +
 +<code bash>
 +true && true || c3
 +c1
 +c2
 +true && false || c3
 +c1
 +c2
 +c3
 +false && true || c3
 +c1
 +c3
 +false && false || c3
 +c1
 +c3
 +</​code>​
 +[[ http://​www.linkedin.com/​groups/​Tuesdays-tip-difference-between-if-3716796.S.236851680?​view=&​srchtype=discussedNews&​gid=3716796&​item=236851680&​type=member&​trk=eml-anet_dig-b_pd-ttl-cn&​ut=0FCRGmx_LdW5I1 | Link to Article ]]
 +==== Networked Info ====
 +
 +   * [[ Can we Hide Code ]]
 ==== Bash FAQ ==== ==== Bash FAQ ====
  
bash.1318943507.txt.gz ยท Last modified: 2020/08/10 02:28 (external edit)