- 一、Shell 脚本的执行方式
1、echo 命令 : echo 的内容就会打印到屏幕上
[root@localhost ~]# echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换(具体参见表 11-2)
-n: 取消输出后行末的换行符号(就是内容输出后不换行)
在 echo 命令中如果使用了“-e”选项,则可以支持控制字符,如图 所示:
- 二、 Bash 的基本功能
2、history :历史命令的查看
[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文 件,则放入默认历史命令保存文件~/.bash_history 中
如果想要使用原先的历史命令有这样几种方法:
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第 n 条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
使用“!$”重复上一条命令的最后一个参数
3、alias:命令别名
命令格式: [root@localhost ~]# alias
#查询命令别名
[root@localhost ~]# alias 别名=‘原命令’
#设定命令别名
例如: [root@localhost ~]# alias
#查询系统中已经定义好的别名
alias cp=‘cp -i’
alias l.=‘ls -d .* --color=auto’
alias ll=‘ls -l --color=auto’
alias ls=‘ls --color=auto’
alias mv=‘mv -i’
alias rm=‘rm -i’
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde’
命令执行时的顺序是
这样的:
1、 第一顺位执行用绝对路径或相对路径执行的命令。
2、 第二顺位执行别名。
3、 第三顺位执行 Bash 的内部命令。
4 第四顺位执行按照$PATH 环境变量定义的目录查找顺序找到的第一个命令。
为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc”。命令如下:
[root@localhost ~]# vi /root/.bashrc
4、 grep:行提取命令
grep 命令是在文件当中搜索符合条件的字符串,如果需要模糊查询,使用正则表达式进行匹配,
搜索时字符串是包含匹配
> [root@localhost ~]# grep [选项] “搜索内容” 文件名
选项:
-A 数字: 列出符合条件的行,并列出后续的 n 行
-B 数字: 列出符合条件的行,并列出前面的 n 行
-c: 统计找到的符合条件的字符串的次数
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
–color=auto 搜索出的关键字用颜色显示
例子:
[root@localhost ~]# grep “/bin/bash” /etc/passwd
#查找用户信息文件/etc/passwd 中,有多少可以登录的用户
5、find:搜索符合条件的文件名
find 命令是在系统当中搜索符合条件的文件名,如果需要模糊查询,使用通配符进行匹配,搜索时文件名是完全匹配
6、小括号、中括号和大括号
如果是用于一串命令的执行,
那么小括号和大括号的主要区别在于:
()执行一串命令时,需要重新开一个子 shell 进行执行
{}执行一串命令时,是在当前 shell 执行;
()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开;
()最后一个命令可以不用分号;
{}最后一个命令要用分号;
{}的第一个命令和左括号之间必须要有一个空格;
()里的各命令不必和括号有空格;
()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的
所有命令。
三、Bash 的变量和运算符
1、在定义变量时,有一些规则需要遵守:
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或双引号包括。如:“test=“hello world!””。其中双引号括起来的内容“KaTeX parse error: Undefined control sequence: \” at position 4: ”、“\̲”̲和反引号都拥有特殊含义,而单引…变量名"或用${变量名}包含变量名。
2、用户自定义变量
1)、变量定义
[root@localhost ~]# 2name="shen chao"
2)、 变量调用
[root@localhost ~]# name="shen chao"
#定义变量 nam
3)、 变量查看
[root@localhost ~]# set [选项]
选项:
-u: 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
-x: 如果设定此选项,在命令执行之前,会把命令先输出一次
4)、 变量删除
[root@localhost ~]# unset 变量名
3、环境变量
1)、环境变量设置
[root@localhost ~]# export age="18"
2)、环境变量查询和删除
env 命令和 set 命令的区别是,set 命令可以查看所有变量,而 env 命令只能查看环境变量。
[root@localhost ~]# unset gender
#查看环境变量
[root@localhost ~]# env | grep gender
#删除环境变量 gender
3)、系统默认环境变量
[root@localhost ~]# env
env 命令可以查询到所有的环境变量,可是还有一些变量虽然不是环境变量,却是和 Bash 操作接
口相关的变量,这些变量也对我们的 Bash 操作终端起到了重要的作用。这些变量就只能用 set 命令来查看了,
[root@localhost ~]# set
- PATH 变量:系统查找命令的路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin