Linux系统Shell

Linux脚本编程

2018-07-22  本文已影响41人  让梦想腾飞

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
上一篇 下一篇

猜你喜欢

热点阅读