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 [2012/10/12 16:52]
k2patel [Control case]
bash [2020/08/10 02:35] (current)
Line 121: 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 271: 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 ==== ==== Control case ====
Line 352: Line 363:
 ==== Bash Tips / Tricks ==== ==== 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 ==== ==== Networked Info ====
  
bash.1350060772.txt.gz ยท Last modified: 2020/08/10 02:28 (external edit)