//执行结果输出到1.log,错误信息输出到2.log
sh test.sh > 1.log 2>2.log
//效果等同于:sh test.sh > 1.log 2>1.log
sh test.sh > 1.log 2>&1
//错误信息追加到1.log
sh test.sh >> 1.log 2>>&1
//对文件内容按分号分割,并且去除第2到4段的内容
cat filename|cut -d ':' -f 2-4
//对文件内容进行分割,并且取出第10个字符
cat filename|cut -c 10
//查找含有home关键字的行,并且输出行号,颜色标识
cat filename|grep -n --color=auto 'home'
//搜索多个字符串匹配
grep -E "aaa|bbb|ccc"
//文件内容每行按:分割,然后根据第三段内容进行排序
cat filename|sort -t ':' -k 3
//统计文件行数
cat filename|wc -l
//输出结果重定向到1.log,并且打印到终端
cat filename|tee 1.log
//将文件中的所有小写字母转换为大写字母
cat filename|tr '[a-z]' '[A-Z]'
//将执行结果作为一行输出
ls|xargs
//打印第一行
sed '1p' -n 1.txt
//打印第五行到最后一行,并显示行号
grep -n '.*' 1.txt | sed '5,$p' -n
//包含root行
grep -n '.*' 1.txt | sed '/root/p' -n
//正则匹配
grep -n '.*' 1.txt | sed -r '/ro?t/p' -n
//流水线匹配,等价于 grep -n '.*' 1.txt | sed '/root/p;/mysql/p' -n
grep -n '.*' 1.txt | sed -e '/root/p' -e '/mysql/p' -n
//删除第五行到最后一行
grep -n '.*' 1.txt | sed '5,$d'
//替换
grep -n '.*' 1.txt | sed 's/root/toor/g'
//删除所有数字
grep -n '.*' 1.txt | sed 's/[0-9]//g'
//删除所有非数字
grep -n '.*' 1.txt | sed 's/[^0-9]//g'
//直接替换文档
sed -i
//分隔符匹配,并且打印某个段
awk -F ':' '{print $2}' 1.txt
//根据分割之后的结果,再进行匹配
awk -F ':' '$1~/root/' 1.txt
//替换分隔符打印输出
awk -F ':' '$1~/root/ {OFS="#";print $1,$2}' 1.txt
//精准匹配
awk -F ':' '$1=="root" {print $1,$2}' 1.txt
awk -F ':' '$1=="root" || NR>30 {print $1,$2}' 1.txt (或者行号大于30)
awk -F ':' '$1=="root" && NR>30 {print $1,$2}' 1.txt (并且行号大于30)
//改变某一段的值
awk -F ':' '$1=$3+$4 {print}' 1.txt
//段数大于3小于10
awk -F ':' 'NF>3 && NF<10 {print $1,$2}' 1.txt
//获取当前时间的年份,2017
date +%Y
//获取当前时间的年份,最后两位,17
date +%y
//获取当前时间的月份,05
date +%m
//获取当前时间的日期,27
date +%d
//获取当前时间的小时
date +%H
//获取当前时间的分钟
date +%M
//获取当前时间的秒数
date +%S
//获取当前时间的秒数,1495873175
date +%s
//由秒数推导出日期
date -d @100
//格式化输出当前时间,2017-01-01 20:32:33
date +"%F %T"
//当前时间是周几
date +%w
//当前时间是第几周
date +%W
//获取前一天日期(可以+/-,可以month/hour/min/sec)
date -d "-1 day" +"%F %T"
//[root@wangs ~]# 用户名,主机名,目录
echo $PS1
[\u@\h \W]\$变量赋值:
获取当前脚本的文件名:$0
获取参数:$n(n表示第几个参数)
获取参数个数:$#
获取所有参数:$*
获取上个命令的退出状态:$?
当前Shell的pid:$$
a=1;b=2
let c=a+b
//空格不能少!
c=`expr $a + $b`
c=$((a+b))
c=$[$a+$b]
if [ xxx ]
then xxx
elif [ xxx ]
then xxx
else
xxx
fi
case "$1" in:
start)
xxx
;;
stop)
xxx
;;
*)
xxx
;;
esac
if [ $a -lt 3 ]; then echo ok;else echo nook; fi
if (($a>3)); then echo ok;else echo nook; fi
if [ $a -lt 10 ] && [ $a -gt 3 ]; then echo ok; fi
if [ $a -lt 10 ] || [ $a -gt 3 ]; then echo ok; fi
//等价于&&
if [ $a -lt 10 -a $a -gt 3 ]; then echo ok; fi
//等价于||
if [ $a -lt 10 -o $a -gt 3 ]; then echo ok; fi
if [ -e file/dir ]; then echo "exist"; fi
//取反操作
if [ ! -e file/dir ]; then echo "not exist";
//简单判断并输出
[ -f file ] && echo "exist"
[ -f file ] || echo "exist" 取反操作
if [ -z $n ]
//从1到100,步长为2,步长可以为负数
for i in {1..100..2}
do
echo $i
done
while :
do
sleep(2)
echo `date +"%F %T"`
done
sum() {
s=$[$1+$2]
return $s
sum 1 2