1、echo
echo 'hello world!'
echo "hello world!"错误,“”解释,!有特殊用途
echo -e "\e[1;31m abcd \e[0m"
30m 黑色,31m红色 32m绿色 33m黄色 34m蓝色 35m洋红 36m青色 37m白色
2、脚本执行
./hello.sh
unix2dos 和dos2unix 讲windows下.sh文件转为linux下,因为系统换行符不同
3、输入输出重定向
date >> abc 2>>&1
date1 >> abc 2>>&1
date &>>abc
date1 &>>abc
把正确和错误信息都追加到文件中
2(不能有空格)>>&1
ls1 >>abc 2>>def
把正确数据输入到abc ,把错误数据输出到def
4、顺序执行和管道符
ls;cd /user;date
cd /user错误不影响date执行
ls && echo yes ||echo no
ls命令正确执行 打印yes 否则打印no
cat /etc/passwd |grep "root"
grep -i 区分大小写
-n 显示行数
--colre=auto 显示颜色
cat /etc/passwd |grep -n --color=auto "root"
5、bash中特殊符号
‘’单引号里的特殊符号不识别
""识别特殊符号
'#'注释
$调用变量值
\ 转义字符
& 放入后台,即最小化
6、变量
aa="aa"
bb=${aa}123
cc="$aa"456
echo "$aa $bb $cc"
unset aa
7、位置参数
#!/bin/bash
sum=$(($1+$2))
echo "sum is $sum"
$0 所有参数 $1第一个参数 $2 第二个参数
1 #!/bin/bash
2 echo $#
3 echo $*
4 echo $@
./param.sh 1 23 4
3
1 23 4
1 23 4
8、预定义变量
echo $?
判断上一条命令是否正确执行,正确为0,否则非0
#当前进程Pid
echo $$
find /root/ -name "test.txt" &
#后台运行最后一个进程pid
echo $!
9、数值运算和运算符
aa=11
bb=22
ff=$(($aa+$bb))
echo $ff
10、cut
分隔符为空格符时不好判断
制表符,或冒号分号等可以
cat /etc/passwd |grep -n -v "root"|cut -d ":" -f 2,6
提取冒号分隔的第2列和第6列
11、awk
awk 条件 输出 文件
#打印第1、5、6列
df -h|awk '{print $1 "\t" $5 "\t" $6}'
#打印第5列并提取数值
df -h|grep "disk" |awk '{print $5 }'|cut -d "%" -f 1
#先分隔,再打印
cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
#再末尾加"aaaa"
cat /etc/passwd|grep ":"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}END{print "aaaa"}'
12、sed
#打印第2行
sed -n "2p" student.txt
#删除第2到4行,没有删除文件
sed '2,4d' student1.txt
#追加,没有更改源文件
sed '2a cheat' student1.txt
#将第4行99替换成55
sed '4s/99/55/g' student.txt
#允许多个条件同时执行
sed -e 's/liming//g;s/gao//g' student.txt
13、流程控制
#判断文件是否存在
test -e student.txt
echo $?
#判断文件是否是普通文件
test -f student.txt && echo yes || echo no
#判断parm.sh是否比sum.sh新修改
test parm.sh -nt sum.sh && echo yes || echo no
#旧修改
est parm.sh -ot sum.sh && echo yes || echo no
#-ef 判断inode号是否一致
#判断23是否大于等于24
test 23 -ge 24 && echo yes || echo no
#-eq 相等 -ne 不相等 -gt 大于 -lt 小于 -ge大于等于 -le 小于等于
#判断$name是不是空 -n不为空判断,== !=
test -z "$name" &&echo yes ||echo no
网友评论