File me Issues or star this repo.
Name | Comment |
Redirect stdout/stderr | ls /tmp >/dev/null 2>&1 |
Deal with filename | basename $f , dirname $f |
Use timeout: avoid command hang | timeout 10 sh -c ‘ls -lt’ |
Restart shell without killing terminal | exec -l $SHELL |
Run sub-shell | echo $BASH_SUBSHELL; ( echo "Running in subshell: $BASH_SUBSHELL" ) |
Set pipefail | set -ueoxv pipefail , set +ueoxv pipefail |
Shell match regexp | =echo $str, then grep “$regexp”= |
Shell match regexp | expr match "$date" "^[0-9]\{8\}" >/dev/null && echo yes |
Run static code check | Link: shellcheck |
Show date in utc | date -u |
Check file type of a given type | file /etc/hosts |
Check command type of a command | type echo |
1.3 Environment variables
Name | Comment |
List all environment variables | export |
Define a new env variable | export NAME1=”value1” |
Define a variable with default value of others | export MYVAR=”${MYVAR:-$OTHERVAR}” |
Name | Comment |
Delete a word | Ctrl+w |
Name | Comment |
Disable all zsh’s autocorrect | In ~/.zshrc, unsetopt correct_all |
Disable a given autocorrect | In ~/.zshrc, alias ssh=’nocorrect ssh’. zsh_disable |
Name | Comment |
Echo red text | echo -e “hello,\e[0;31m there \e[0;31m” |
Echo multiple lines | echo -e “hello,\ndenny” |
Echo bold text | echo -e hello, “\033[1mThis is bold text.\033[0m” |
Echo underlined text | echo -e hello, “\033[4mThis is underlined text.\033[0m” |
Name | Comment |
Go to given folder | cd /var/log/ |
Go to folder in subshell | (cd /var/log/ && ls) After this, PWD won’t be changed |
Go to home | cd |
Go to parent folder | cd .. |
Go to previous folder | cd - |
Name | Comment |
* | expr 5 \* 4 |
+ | let z=x+y, z=$x+$y |
== | int1 -eq int2 , =[ $? -eq 0 ] && echo “good”= |
>= | int1 -ge =int2 |
> | int1 -gt =int2 |
<= | int1 -le =int2 |
< | int1 -lt =int2 |
!= | int1 -ne =int2 |
# Run grep for files filtered by find
find /var/log -name "*.log" | xargs grep -i error
# Loop with pipes
cat /etc/passwd | awk -F':' '{print $1}' | xargs -I{} sudo -l -U {} | grep -v "not allowed to"
[ 0 -eq $(find ./data -name "*.txt" -type f -print | wc -l) ]
/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
License: Code is licensed under MIT License.