换行符
echo -n 禁止换行
环境变量声明export
export PATH="$PATH:/home/user/bin"
获取字符串的长度
length=${#var}
shell数学运算
let [] (()) expr
注:使用let时,变量名之前不需要$
标准输入stdin--0
标准输出stdout--1
标准错误stderr--2
读取命令返回值$? #错误并退回为非0,成功完成为0
重定向
cmd 2>stderr.txt 1>stdout.txt #分别重定向到不同文件
cmd 2>&1 alloutput.txt #1、2输出到同一文件
cmd &> output.txt #1、2输出到同一文件
/dev/null 黑洞,丢弃接收到的任何数据
cat<<EOF>log.txt
添加的内容 #新增至文件log.txt顶部
EOF
别名alias(默认临时,关闭终端则失效)
alias rm="cp $@ ~/backup && rm $@" #创建别名
echo ''alias cmd="command seq"' >> ~/.bashrc #创建永久的
unalias / alias cmd= #取消别名
time CommandOrScriptName #计算命令花费时间
sleep 30 #延迟脚本执行30s
bash -x script.sh #使用x,启用脚本跟踪调试功能
_DEBUG=on ./script.sh #调用bash内置函数,启用调试功能
$@以列表的方式一次性打印所有参数,"$1" "$2" "$3"
$*所有参数视为单个实体, "$1$2$3"
read -p "input the num:" num #两种方式一致
echo -n "input the num:"
read num
read -t 10 -p "input the num:" num #计时10s输入
read -s -p "input the num:" num #默读,输出不显示