1 ;分号
格式:命令1;命令2;命令3
说明:命令之间用分号隔开是顺序执行,命令之间没有任何逻辑关系
2 && 逻辑与
格式:命令1 && 命令2
说明:命令1正确执行,命令2才会执行;命令1执行失败,则命令2不会执行
3 || 逻辑或
格式:命令1 || 命令2
说明:命令1执行错误,则命令2才会执行;命令1执行正确,则命令2不会执行
4 复制磁盘
dd if=输入文件 of=输出文件 bs=字节数 count=个数
说明:if->输入文件 指定源文件或源设备
of-> 输出文件,指定目标文件或目标设备
bs->字节数 指定一次输入/输出多少字节,即这些字节看做一个数据块
5 判断命令是否执行正确
命令 && echo yes || echo no
说明:命令执行正确无误,输出yes,执行有错误输出no
6 | 管道符
格式:命令1 | 命令2
作用:命令1的正确输出作为命令2的操作对象,要求命令1必须有正确输出
7 grep [选项] '搜索内容' 文件名
作用:搜索
参数:
-i 忽略大小写
-n 输出行号
-v 反向查找
--color=auto 颜色显示
通配符及其他特殊符号
?->匹配一个任意字符
*->匹配0个或多个任意字符
[]->匹配中括号中任意一个字符 例如:[abc] 表示匹配a或者b或者c
[-]->代表一个范围匹配范围中的任意一个 例如:[1-9] 匹配1-9中的任意一个数字
[^]->匹配不是中括号中的一个字符 例如:[^0-9] 匹配一个不是数字的字符
8 bash中其他的特殊字符
'' 单引号 单引号中的任何特殊字符均没有意义
"" 双引号 双引号中除 $ ` \ 外其他的特殊字符都没有特殊意义 ,$ 调用变量 `引用系统命令 \转移字符
`` 反引号 反引号括起来的内容是系统命令,会先执行系统命令
$() 和反引号一样,用来引用系统命令
$ 取变量的值,不带$是变量 带上$是去变量的值
9 变量
变量的默认类型都是字符串类型
变量用=连接,=两侧不能有空格,如果变量值中有空格需要用引号引起来
name=$(date) 将当前时间赋值给变量name
环境变量名建议大写,便于区分
10 变量分类
用户自定义变量
环境变量 ->是和系统操作环境相关的数据
位置参数变量 ->这种变量主要用来向脚本中传递参数和数据的,变量名不能自定义,变量作用是固定的
预定义变量 ->是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
其中位置参数变量也属于预定义变量
11 set
作用:查看系统中的所有变量
12 unset 变量名
作用:删除变量,删除环境变量也用这个命令
13 pstree
作用:查看系统中使用的shell的层级树
14 设置环境变量
export 变量名=变量值 设定环境变量 例如:export age=18 添加一个环境变量age 并赋值为18
name='zhaolili' 添加本地变量并赋值为 zhaolili
export name 这样就把本地变量name变成了环境变量
15 env
作用:查询环境变量
16 环境变量PS1
作用:定义系统提示符的变量
参数:
\d 显示日期,格式为"星期 月 日"
\h 显示简写主机名,默认为localhost
\t 显示24小时时间制,格式为 "HH:MM:SS"
\T 显示12小时时间制,格式为"HH:MM:SS"
\A 显示24小时时间制,格式为"HH:MM"
\u 显示当前用户名
\w 显示当前工作目录的完整路径
\W 显示当前工作目录的最后一层目录
\# 执行的第n个命令
\$ 提示符 root用户是# 其他用户是$
17 位置参数变量
$n ->n为数字 $0代表命令本身 $1-$9代表第一都第9个参数 10以上的参数用大括号 ${10} ${11}
$* -> 代表命令中的所有参数,$*把所有参数看做一个整体
$@ ->代表命令中所有参数,$@把所有参数区分对待
$# -> 代表命令中所有参数的个数
这个循环一次
for in "$*"
do
echo $i
done
这个循环多次
for y in "$@"
do
echo $y
done
18 预定义变量
$? 最后一次执行命令的返回状态 如果这个命令执行的结果为0 则证明上一个命令执行正确 否则 执行失败
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)
19 接收键盘的输入
read [选项] [变量名]
-p "提示信息" 在等待read时给出的提示信息
-t 秒数 read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数 read命令只接收指定的字符数,就会执行
-S 隐藏输入的数据,使用于机密性的信息 比如密码
例子:read -t 30 -p "Please input your name:" name ->表示把输入的信息放入变量name中