SHELL
SHELL
SHELL
分区 /boot 200M
/swap 2G
/ 全部
1.关闭防火墙 service iptables stop //服务关闭
2.chkconfig iptables off //关闭开机自启
3.变量 $a 取出a的值。
4.pwd $USER $HOME $PWD
S
H
E
L
L
5.
r
e
a
d
o
n
l
y
i
=
5
;
/
/
定
义
只
读
变
量
。
6.
e
c
h
o
[
[
a
+
b
]
=
=
=
=
=
b
]
=
=
=
=
=
(
(
a
+
a
+
b
)
)
7.
SHELL 5.readonly i=5;//定义只读变量。 6.echo [[a+b] =====b]=====((a+a+b)) 7.
SHELL5.readonlyi=5;//定义只读变量。6.echo[[a+b]=====b]=====((a+a+b))7.N 表示脚本的第几个参数 $3就是脚本传递的第三个参数。
8. $*====所有的参数 每次取一个
9.
@
=
=
=
=
所
有
的
参
数
“
@ ====所有的参数 “
@====所有的参数“@" 单独对待每一个参数。
10. $? 上一条指令的状态 0为正确。
$# 参数个数。
数值比较 -lt 小于(less than) -le小于等于(less equal)
-eq 等于(equal) -gt大于(greater than)
-ge大于等于(greater equal) -ne不等于(no equal)
判断文件属性 -r(read) -w(write) -x(execute)
判断文件 -f -d(文件夹) -e(存在existence)
11.流程控制if else
if[ 条件判断 ];then
程序
fi;
if [ -e b.sh ]
then
cat b.sh
else
echo ccccc
fi
12.case语句
case $变量名 in
“值1” 执行语句
“值2”执行语句
esac
#!/bin/bash
case $1 in
“1”)
echo 11111
;;
“2”)
echo 11111
;;
*)
echo KaTeX parse error: Expected 'EOF', got '#' at position 76: … 程序 done #̲!/bin/bash s=0…[
s
+
s+
s+i]
done
echo $s
for 变量 in 值1 值2 值3 …
do
程序
done
for i in aaa bbb ccc
do
echo $i
done
14.while循环
while [ 判断式 ]
do
程序
done
#!/bin/bash
s=0;
i=0;
while [
i
−
l
e
100
]
d
o
s
=
i -le 100 ] do s=
i−le100]dos=[
s
+
s+
s+i]
i=
[
[
[i+1]
done
echo $s
15.控制台输入
read -p “提示” -t(time) i //将控制台输入的值给变量i
16.函数(必须先定义再执行) 函数末尾的return 是返回的函数执行状态码
#!/bin/bash
function aaa()
{
echo abcd
}
aaa
11.流处理cut 注意空格
cut -f 取第几列
-d 指定分隔符
-c 指定具体的第几个字符
ifconfig | grep inet | cut -d “t” -f 2 | cut -d “n” -f 1 | cut -d " " -f 2
12.sed a 新增一行 d 删除 s 查找替换
ifconfig | sed ‘2a123’ //在第二行后追加一行123
sed ‘1,3d’ //删除第1,2,3行
13.正则表达式
\ 转义
^ 匹配行首
$ 匹配行尾
* 表示上一个子式匹配0次或多次 。贪心匹配
. 匹配任意字符串
[] 匹配某个范围
sed ‘/reg/’ 指定范围 指定操作 -e 指令操作 -i 直接编辑文件
ifconfig | sed ‘/inet/aXXXX’
ifconfig | sed ‘1,3s/inet/XXXX/g’
sed ‘4,$d’ if.conf
sed -i ‘1,3d’ if.conf 直接删除文件前三行。
先写范围 (用正则表达式)再写操作(增删改)
-e 指令模式上操作 -i 直接编辑更改源文件
a 增 d 删 s 查找替换
14.awk
将文件逐行读入,并以空格默认分隔符号进行切片再进行分析处理
awk[选项参数] pattern1{action1} parrern2{action2}
cat /etc/passwd | awk ‘/^atguigu/{print}’
cat /etc/passwd | awk ‘/^atguigu/{print} /’^ssh’/{print}’
-F 指定输入文件分隔符 -v 定义一个变量
cat /etc/passwd | awk -F : ‘/^atguigu/{print $1}’ //将匹配到的行按照:拆成数组 打印第一个
cat /etc/passwd | awk -F : ‘BEGIN{print “BEGIN”}{print}END{print “end”}’
FILENAME 文件名
NR 已读取的额记录数
NF 浏览记录的域的个数。(切割后列的个数)
cat /etc/passwd | awk -F : ‘{print "Filename=“FILENAME”,NF=“NF”,NR="NR}’
cat /etc/passwd | awk -F : -v sum=0 '{sum=sum+1}END{print sum}'
cat /etc/passwd | awk -F : 'BEGIN{sum=0} {sum+=$3} END{print sum}'
cat /etc/passwd | awk -F : 'BEGIN{sum=0} {sum+=$3;print $3" " sum} END{print sum}'
cat /etc/passwd | awk -F : 'BEGIN{sum=0} /^a/{print;sum+=$3} END{print sum}'
15.sort
-n 依照数值大小排序 -r 相反顺序 -t 设置排序时分隔符 -k 指定排序的列
cat /etc/passwd | grep ^a | sort -t : -k 3 -n
习题
1.打印空行行号 cat file | awk ‘/^$/{print NR}’
2.计算总成绩 cat file | awk -F " " ‘BEGIN{sum=0}{sum+=$2}END{print sum}’
3.排序 cat file | sort -nr
4. grep -r ‘bash’ ./