BASH的TMOUT变量用于控制台自动退出的时间
来自高级bash脚本编程指南
ll -t | sort -k 5 -r
加密文件:
gpg -c xxx.txt
gpg xxx.txt.gpg
可以通过gpg给脚本加密,或者用shc ccsh(a bash to c cross compiler)
cmdline="$opeartion$procName"
$cmdline $argv
find . | grep -v 'org.eclipse.osgi' | xargs -t -i cp --parrents {} /tm/111/conf
--parrents表示同时拷贝目录结构
echo -e "`date +%Y_%m_%d_%r` \t ${FUNCNAME[1]}:\t$1\t$2" >> xxx.log
打印当前函数名称到日志中。
参考内部变量
uniq去掉重复的行
1.检查参数
case "$1" in
"" ) lines=50;;
*[!0-9]*) Usage; exit 99;;
* ) lines=$1;;
esac
2.更有效率的方法
cd /var/log || {
echo "xxxx" > &2
exit 99;
}
3.注释字符的例外情况
"#"和\#不是注释
echo ${PATH#*:} 参数替换
echo $((2#101011)) 数制转换
4. ,用于连接一系列算术命令,但是只有最后一项会被返回
let "t2=((a=9,15/3))" # set a=9 and t2=15/3
5. :相当与true
while:
do
done
在if/else中坐占位符
if condition
then:
else
fi
:> data.xxx相当于cat /dev/null > data.xxx
6. ** 幂运算
7. {xxx, yyy, zzz}扩展集合
8. (cd /src/dir && tar cf - .) | (cd /dst/dir && tar xpvf -)
上面两个-号,第一个相当于stdout,原本这里应该指定xxx.tar的,但-可以指代stdout,因此输出到stdout
第二个相当于stdin
p参数表述所有权及文档属性。
9.${1:-$BACKFILE} 如果$1为空,用$BACKFILE
10. a='^H^H'
echo -n 'abcdef$a ' # 一定要加空格才能包含两个退格
11.let作为算术运算,和(())可作为test的一部分
a=2334
let "a+=1"
b=${a/23/BB} # 替换23-BB
12.代码作用域
local var 只在代码块{}或者函数中可见
13.$9之后的参数,引用的时候要加{},如${10}
14.== [[]]和[]在没有""的情况下不同
[[ $a == z* ]] 模式匹配,z开头的string极为true
[ $a = z* ] file globbing文件匹配
15.数制${BASE#NUMBER}
16.PS4用于bash -x
SECONDS运行了多久
BASH_SUBSHELL运行了多少层shell
SHLVL shell层次
17.${#string} 字符串长度
expr length $string
expr "$string":".*"
从字符串开始匹配字符串长度
expor match "$string" "$substr"
expor "$string":"$substr"
索引
expr index $str $substr
提取字符串
${string:pos}
${string:pos:len}
如果是负数,可以加一个(-4)或者 -4(加一个空格)转义
如果str是*或者@,这已参数的个数来算
如${@:2:3}第二个后4个参数
string删除
${str#substr} 从左边第一个开始删除
${str##substr} 从左边最后一个开始删除
${i##+(0)} 删除最长连续的0
${str%substr} ${str%%substr}从右边开始
string替换
${str/substr/rplstr}
${str//substr/rplstr} # replace all
${str/#sbustr/rplstr} # 从左边开始替换
${str/%sbustr/rplstr} # 从右边开始替换
替换法则类似于file globbing,不是正则表达式
18.echo假管道
echo | awk '{print substr (""${str}"",3,4)}'用echo来避免使用文件,也就是假管道