$ a=$( (echo 'out'; echo 'error' 1>&2) 2>&1 1>/dev/null)
$ echo $a
error
14. 删除前3行
$cat a.txt | sed 1,3d
15. 读取多个域到变量
read a b c <<< "xxx yyy zzz"
16. 遍历数组
array=( one two three )
for i in ${array[@]}
do
echo $i
done
17. 查看目录大小
$ du –sh ~/apps
18. 查看CPU信息
$ cat /proc/cpuinfo
19. date
$ date +%Y-%m-%d
2012-12-24
$ date +%Y-%m-%d –date ‘-1 day'
2012-12-23
$ date +%Y-m-%d –date ‘Dec 25'
2011-12-25
$ date +%Y-m-%d –date ‘Dec 25 – 10 days'
2011-12-15
20. 获取路径名和文件名
$ dirname ‘/home/lalor/a.txt'
/home/lalor
$ basename ‘/home/lalor/a.txt'
a.txt
21. 并集和交集
comm 可以用来求并集,交集,差集,假设现在有两个文件a和b,它们的内容如下:
$cat a
1
3
5
$cat b
3
4
5
6
7
$comm a b
1
3
4
5
6
7
$comm -1 -2 a b #交集
3
5
$comm a b | sed 's/t//g' #并集
1
2
3
4
5
6
7
$comm -1 -3 a b | sed 's/t//g' #b-a
4
6
7
22. awk复杂分隔符
多字符作分隔符
$ echo "a||b||c||d" | awk -F '[|][|]' '{print $3}'
c
多种分隔符1
$echo "a||b,#c d" | awk -F '[| ,#]+' '{print $4}'
d
多种分隔符2
$echo "a||b##c|#d" | awk -F '([|][|])|([#][#])' '{print $NF}'
c|#d
23. 产生一个随机数
echo $RANDOM
24. 按照模式split 文件
csplit server.log /PATTERN/ -n 2 -s {*} -f server_result -b "%02d.log" -z
/PATTERN/ 用来匹配某一行,分割过程由此开始
{*} 根据匹配,重复执行分割
-s 静默模式
-n 分割后文件名后缀中,数字的个数
-f 分割后的文件名前缀
-b 指定后缀格式
25. 获取文件名或者扩展名
var=hack.fun.book.txt
echo ${var%.*}
hack.fun.book
echo ${var%%.*}
hack
echo ${var#.*}
fun.book.txt
echo ${var##.*}
txt
26. 以 root 帐户执行上一条命令。
$sudo !!
其中: * !! 是指上一条命令 * !$ 上一条命令的最后一个参数 * !* 上一条命令的所有参数 * !:3 上一条命令的第3个参数
例如:










