1. shell的定义和功能
1.1 定义
shell是运行在终端中的文本互动程序
bsh是linux中常用的shell
1.2 功能
1. 保护linux内核
2. 命令解释器
2. 文件类型
b 块设备文件
c 字符设备文件
d 目录文件
- 普通文件
l 符号连接文件
s 套接字文件
p 管道文件
3. shell命令
3.1 基本命令
ls ll cd touch rm mkdir rmdir cp cd mv
3.2 文件查找命令
1. whereis
2. find find 路径 -name filename
find /home -name demo_01.sh
3.3 文件查看命令
cat
head
tail
more
less
3.4 用户管理命令
修改文件权限 chmod
chmod +/-r/w/x 文件名
chmod 0777 文件名(打开全部权限)
3.5 压缩解压命令
3.5.1 压缩文件类型
tar.gz .tar.bz2
3.5.2.tar.gz
1.归档
tar -cvf 文件名.tar 目录/*
2.压缩
gzip -c 文件名.tar > 文件名.tar.gz
3.解压
gunzip 文件名.tar.gz
4.解除归档
tar -xvf 文件名.tar
5.归档压缩:
tar -zcvf 文件名.tar.gz 目录/*
6.解除压缩:
tar -zxvf 文件名.tar.gz
3.5.3. tar.bz2
1.归档
tar -cvf 文件名.tar 目录/*
2.压缩
bzip2 -k 文件名.tar
3.解压
bunzip2 文件名.tar.bz2
4.解除归档
tar -xvf 文件名.tar
5.归档压缩
tar -jcvf 文件名.tar.bz2 目录/*
6.解除压缩:
tar -jxvf 文件名.tar.bz2
3.6 补充
1. 重定向和追加重定向
> 覆盖重定向
>> 追加重定向
2. 通配符
*
匹配任意长度,任意字符的文件名
4. shell编程
4.1 步骤
1. 编写程序以.sh结尾
2. 添加执行权限 chmod +x filename.sh
3. ./filename.sh
4.2 shell中引号的使用
"" 将引号中的值,按照变量对应的值完成打印 ——“$a”
'' 将引号内部的内容原封不动打印
`` 将引号中的内容按照命令执行 a=`ls` echo $a
4.3 shell中的变量
1. 环境变量
PATH:存放程序运行目录信息的环境变量
PWD:进程当前所在目录的绝对路径环境变量
HOME:存放登录用户家目录的环境变量
2. 位置变量——$
需要读出变量值时使用——$a
$1 传入的第一个参数
$2 传入的第二个参数
4.4 输入和输出
输入——read
输出——echo
4.5 流程控制
4.5.1 if—else
1. if—else
if 条件
then
语句
else
语句
fi
#!/bin/bash
a=20
b=50
if [ $a -ge $b ]
then
echo "a>=b"
else
echo "a<b"
fi
2. if
#!/bin/bash
a=20
b=50
if [ $a -ge $b ]
then
echo "a>=b"
fi
3. if—else—if
#!/bin/bash
a=20
b=20
if [ $a -gt $b ]
then
echo "a>b"
elif [ $a -lt $b ]
then
echo "a<b"
else
echo "a==b"
fi
4.5.2. case(c语言中的switch)
case $num in
9)语句
;;
8|||)语句
;;
7)语句
;;
*)语句
;;
esac
#!/bin/bash
echo '请输入一个数字'
read num
case $num in
9)
echo "9"
;;
1|2|3)
echo "1-3"
;;
4)
echo "4"
;;
*)
echo "other"
;;
esac
#!/bin/bash
echo '请输入一个数字'
read num
if [ $num -lt 0 -o $num -gt 100 ]
then
echo "输入错误"
exit
fi
num=`expr $num / 10 `
case $num in
9|10)
echo "A"
;;
8)
echo "b"
;;
7)
echo "c"
;;
6)
echo "d"
;;
*)
echo "e"
;;
esac
4.5.3. for
#!/bin/bash
for num in `seq 1 50`//num从1取到50
do
echo "$num"
done
#!/bin/bash
for num in `ls ./` //num依次取到当前目录下的所有文件信息
do
echo "$num"
done
4.5.4 while
while [ 条件 ]
do
语句
...
done
#!/bin/bash
num=0
while [ $num -lt 100 ]
do
echo "$num"
num=`expr $num + 1`
done
4.5.5. until
#!/bin/bash
num=0
until [ $num -eq 30 ]//与while相反,不满足条件时继续循环,满足条件循环终止
do
echo "$num"
num=`expr $num + 1`
done
4.6 逻辑运算符
== -eq
!= -ne
> -gt
>= -ge
< -lt
<= -le
&& -a
|| -o