一、Bash基本
1、echo 命令 [root@localhost ~]# echo [选项] [输出内容]
选项: -e: 支持反斜线控制的字符转换(具体参见表 11-2)
-n: 取消输出后行末的换行符号(就是内容输出后不换行)
例子 1: [root@localhost ~]# echo "Mr. Shen Chao is the most honest man!" #echo 的内容就会打印到屏幕上。
Mr. Shen Chao is the most honest man!
[root@localhost ~]#
例子 2: [root@localhost ~]# echo -n "Mr. Shen Chao is the most honest man!"
Mr. Shen Chao is the most honest man![root@localhost ~]#
#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符。
echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 11-2 所示:
控制字符 | 作 用 |
\\ | 输出\本身 |
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\c | 取消输出行末的换行符。 和“-n”选项一致 |
\e | ESCAPE 键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是 Tab 键 |
\v | 垂直制表符 |
\0nnn | 按照八进制 ASCII 码表输出字符。其中 0 为数字零,nnn 是三位八进制数 |
\xhh | 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数 |
2、Shell 开头都是 #!/bin/bash
3 、[root@localhost ~]# history [选项] [历史命令保存文件]
选项: -c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文 件,则放入默认历史命令保存文件~/.bash_history 中
4、既然我们说别名的优先级比命令高,那么命令执行时具体的顺序是什么呢?命令执行时的顺序是 这样的:
1、 第一顺位执行用绝对路径或相对路径执行的命令。
2、 第二顺位执行别名。
3、 第三顺位执行 Bash 的内部命令。
4 第四顺位执行按照$PATH 环境变量定义的目录查找顺序找到的第一个命令。
为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc”。
命令如下: [root@localhost ~]# vi /root/.bashrc
5、Bash 常用快捷键
快捷键 | 作 用 |
ctrl+A | 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移 动到命令行开头时使用。 |
ctrl+E | 把光标移动到命令行结尾 |
ctrl+C | 强制终止当前的命令 |
ctrl+L | 清屏,相当于 clear 命令 |
ctrl+U | 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退 格键一个一个字符的删除,使用这个快捷键会更加方便 |
ctrl+K | 删除或剪切光标之后的内容 |
ctrl+Y | 粘贴 ctrl+U 或 ctrl+K 剪切的内容。 |
ctrl+R | 在历史命令中搜索,按下 ctrl+R 之后,就会出现搜索界面,只要输入 搜索内容,就会从历史命令中搜索。 |
ctrl+D | 退出当前终端 |
ctrl+Z | 暂停,并放入后台。 |
ctrl+Q | 恢复屏幕输出。 |
ctrl+S | 暂停屏幕输出。 |
6、多命令顺序执行
多命令执行符 | 格式 | 作 用 |
; | 命令 1 ;命令 2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
|| | 命令 1 || 命令 2 | 当命令 1 执行不正确($? ≠ 0),则命令 2 才会执行 当命令 1 正确执行($?=0),则命令 2 不会执行 |
&& | 命令 1 && 命令 2 | 当命令 1 正确执行($?=0),则命令 2 才会执行 当命令 1 执行不正确($? ≠ 0),则命令 2 不会执行 |
7、Bash 中其他特殊符号
符 号 | 作 用 |
'' | 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特 殊含义。 |
"" | 双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\” 是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 |
`` | 反引号。反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$() 作用一样,不过推荐使用$(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令。 |
() | 用于一串命令执行时,()中的命令会在子 Shell 中运行 |
{} | 用于一串命令执行时,{}中的命令会在当前 Shell 中执行。也可以用于变 量变形与替换。 |
[] | 用于变量的测试。 # 在 Shell 脚本中,#开头的行代表注释。 |
$ | 用于调用变量的值,如需要调用变量 name 的值时,需要用$name 的方式 得到变量的值。 |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将 输出“$”符号,而不当做是变量引用。 |
二、Bash 的变量和运算符
1、什么是变量 在定义变量时,有一些规则需要遵守:
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name” 则是错误的。
- 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为 数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或双引号包括。如:“test="hello world!"”。其 中双引号括起来的内容“$”、“\”和反引号都拥有特殊含义,而单引号括起来的内容都是 普通字符。
- 在变量的值中,可以使用“\”转义符。
- 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含"$变量名 "或用${变量名}包含变量名。
2、变量的分类
- 用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户 的家目录,命令的提示符等。不是太好理解吧,那么大家还记得在 Windows 中,同一台电脑 可以有多个用户登录,而且每个用户都可以定义自己的桌面样式和分辨率,这些其实就是 Windows 的操作环境,可以当做是 Windows 的环境变量来理解。环境变量的变量名可以自由 定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变 量作用是固定的。
- 预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
用户自定义变量 : 名称:自定义 作用:自定义 内容:自定义
环境变量:
用户自定义环境变量: 名称:自定义 作用:自定义 内容:自定义
系统自带环境变量: 名称:确定 作用:确定 内容:自定义
位置参数变量: 名称:确定 作用:确定 内容:自定义
位置参数变量 | 作 用 |
$n | n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上 的参数需要用大括号包含,如${10} |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量: 名称:确定 作用:确定 内容:自定义
预定义变量 | 作 用 |
$? | 最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令 自己来决定),则证明上一个命令执行不正确了 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
[root@localhost sh]# ./test.sh 11 22 44 55
11 22 44 55
====================================
11
22
44
55
[root@localhost sh]# cat test.sh
#!/bin/bash
for i in "$*"
do
echo $i
done
echo "===================================="
for y in "$@"
do
echo $y
done
3、接收键盘输入
[root@localhost ~]# read [选项] [变量名] 选项:
- -p “提示信息”: 在等待 read 输入时,输出提示信息
- -t 秒数: read 命令会一直等待用户输入,使用此选项可以指定等待时间
- -n 字符数: read 命令只接受指定的字符数,就会执行
- -s: 隐藏输入的数据,适用于机密信息的输入
变量名:
变量名可以自定义,如果不指定变量名,会把输入保存入默认变量 REPLY
如果只提供了一个变量名,则整个输入行赋予该变量
如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字.
三、环境变量配置文件
1 source 命令
[root@localhost ~]# source 配置文件
或
[root@localhost ~]# . 配置文件
2 环境变量配置文件
1)、 登录时生效的环境变量配置文件 在 Linux 系统登录时主要生效的环境变量配置文件有以下五个:
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
2)、 注销时生效的环境变量配置文件
在用户退出登录时,只会调用一个环境变量配置文件,就是~/.bash_logout。这个文件默认没有 写入任何内容,可是如果我们希望再退出登录时执行一些操作,比如清除历史命令,备份某些
数据, 就可以把命令写入这个文件。
3)、 其他配置文件
还有一些环节变量配置文件,最常见的就是~/bash_history 文件,也就是历史命令保存文件。