对于RHCE的学习(15-18)重点总结
详细的操作还是要看之前的笔记(甚至是RHCSA的笔记)
1.什么是shell
一种命令解释器,既是用户交互的界面,也是控制系统的脚本语言
2.shell解释器的类型 (bash--sh)
- Bourne Shell:标识为sh
- Bourne-Again Shell:标识为bash
- Korn Shell:标识为ksh
- C Shell:标识为csh
3.查看主机默认的shell和支持的shell有哪些?
默认:
[root@server ~]# echo $SHELL
支持:
[root@server ~]# cat /etc/shells
4.什么是shell脚本
存储在一个文件里,shell可以读取这个文件并顺序执行其中的命令(shell脚本按行解释)
5.如何创建一个shell脚本
注意点:
- 多使用内置命令 type time
- 用最少的命令
- 尽量不要使用交互式命令
- 重要部分添加注释
6.shell脚本执行方式:4种
- sh或bash命令执行脚本 (不需要执行权限)(推荐)例:bash test.sh
- 切换到脚本所在目录使用./执行脚本(需要执行权限)
- 绝对路径执行脚本(需要执行权限)
- 使用点(.)或者source 执行脚本(不需要执行权限)
7.脚本检测
bash -n FILE.sh #脚本语法检测,不执行脚本文件
bash -x FILE.sh #跟踪脚本执行
8.shell注释符
- # 单行注释
- :<<EOF EOF 多行注释
9.打印
echo
-n 取消输出后行末的换行符号
-e 支持反斜线控制的字符转换
\a 输出警告音
\t 制表符,也就是Tab键
\n 换行符
\e[控制符;字体颜色;背景颜色m 内容 \e[0m 代表颜色输出结束 1高亮 4下划线 5颜色闪烁
printf
printf '格式化%s%d-5%f\n' 参数
%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出
%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐)
%-4.2f 指格式化为小数,其中 .2 指保留2位小数,4是总长度
10.通配符(匹配文件名)
* 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容
? 匹配一个任意字符
~ 代表当前用户的主目录
. 代表当前目录
.. 代表当前目录的父目录
- 部分用法代表一个范围
[a1b2] 匹配中括号中任意一个字符。
[a-z] 匹配中括号中任意一个字符, -代表一个范围。
[^a-z] 逻辑非,表示匹配不是中括号内的一个字符。
{a,b,c} 以逗号分隔的字符串列表,在命令中可以展开为多个参数(会依次实行)
[:alnum:] :匹配任意一个字母或者数字 ,传统UNIX写法: a-zA-Z0-9
[:alpha:] :匹配任意一个字母,传统UNIX写法: a-zA-Z [:alpha:]
[:digit:] :匹配任意一个数字,传统UNIX写法: 0-9
[:lower:] : 匹配任意一个小写字母,传统UNIX写法: a-z
[:upper:] : 匹配任意一个大写字母,传统UNIX写法:A-Z
[:space:] :空白字符
[:punct:] : 标点符号
补充:(有关联)
man 用于查看各种命令、函数、文件格式等的手册页(帮助文档)
tr 从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出
11.命令执行顺序符
; 顺序执行
&& 前面命令执行不成功,后面的命令不执行
|| 前面命令成功,后面就不执行,如果前面不成功后面就执行
! 非
& 后台运行
12.文本文件管理命令
cat
查看文件内容,适合数据量较少
-n:显示行号
-b:文件中所有非空行增加行号,编号从1开始
tac
倒叙访问文件内容
more
翻页查看文件内容,适合内容较多的文件查看
-sp 减少空白行,先清屏后输出
less
- 同more命令
- 可以使用上下键进行浏览,点击q退出浏览
tail
默认查看文档前10行内容
-n 查看文档前n行的内容
head
默认查看文档后10行内容
-n 查看文档后n行内容
-f 动态刷新, 实时显示日志文件并且能动态更新
vim/nano/gedit(图形化编辑器,终端)
grep
文件内容过滤显示
创建: touch (vim > >>)
删除: rm -i == rm -f
13.目录文件的管理命令
创建
mkdir -p -v
查看指定目录
ll -d
删除
rm -r 删除目录文件
-f 强制
mv
用于剪切或重命名文件
mv [选项] 源文件名称 目标文件名称
cp
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。
此时目标文件必须为一个目录名
-a==-rp 通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录
tar
压缩
wget
下载
curl
-o 指定输出文件名
-O 以原始文件名保存下载文件
14.文本内容处理命令
grep
-o 只把查找的关键字显示出来
-n 显示行号
-i 忽略大小写
-c 仅显示找到的行数
-v 反向选择——仅列出没有“关键词”的行
-w 以单词模式查找,只会将完整且单独作为一个单词存在的字符串视为匹配对象
-q 以安静模式执行查找,找到匹配字符串时仅返回表示找到的退出状态码(找到0,未找到1),
不输出匹配行内容
cut
-c 字符 cut -c 1-4 剪切每一行第1-4个字符
-d 分割字符
-f 分割字段 第几个分隔字段,例:4-5个字段,包含分隔符
sort
-n 以数值型排序
-r 反向排序
-b 忽略缩进与空格
-f 忽略大小写
-u 去除重复行
-t 指定间隔符
-k 设置字段范围
uniq
-c 显示重复次数
wc
-l 只显示行数
tr
-c 反选设定字符,符合 “替换内容” 的部份不做处理,不符合的剩余部份才进行转换
-d 删除指令字符
-s 缩减连续重复的字符成指定的单个字符
常用:
df -h | tr -s " " " " #将多个空格替换成单个空格
df -h | tr -s " " " " | cut -d " " -f 4 | tr -d MKG #将单位去掉
df -h | tr -s " " " " | cut -d " " -f 4 | tr -d MKG | tail -n +2
#从第二行开始显示(不显示第一行)
1.什么是变量
变量是在程序中保存用户数据的一段内存存储空间,变量名是内存空间的首地址
2.命名规则
规则:
- 首字符必须为字母或者下划线:a-z,A-Z
- 中间不能由空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用bash中关键字,输入help查看bash的保留字
3. SHELL是动 (弱) 态类型脚本语言
4.变量的定义方式
自定义变量
直接定义:
变量名=变量的值 (注意=前后不能有空格)
read
-p “提示语句:” 屏幕打印出一行提示语句。
-n 当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量,如:-n1 ,
只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其
传给变量。无需按回车键
-t 等待时间,计时输入,使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。
如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。
-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态
-s 关闭回显,使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是read
命令将文本颜色设置成与背景相同的颜色)
环境变量
# 法1
export 环境变量=值
# 法2
变量名=值
export 变量名
# 法3
declare -x 变量名=值
位置变量
sh test1.sh hello world 123 456
5.查看变量 echo ${PATH}
env 显示当前用户的环境变量
printenv 同上
set (所有变量:包括自定义变量和环境变量)
readonly 所有只读变量
declare - r 所有只读变量
6.变量重新赋值(只读变量不能)
PATH=$PATH:
test
7.取消变量
unset NAME (只读变量不能)
- v 用于明确指定要删除的是一个变量
- f 用于删除函数定义
8.变量类型
- 环境变量
- 本地变量 (进程)
- 位置变量
9.shell 环境变量存储的文件
执行顺序:/etc/profile-->/etc/profile.d/*.sh--> ~/.bash_profile -->/etc/bashrc-->~./.bashrc
系统级别:
- /etc/ bashrc
- /etc/ profile. d/*
- ~/. bashrc
10.位置变量
set - - 1 2 3 4 5 $1 ${11}
11.预定义变量
$0 : 脚本名
$1-$9 : 1-9个参数
${10} :10以上的参数需要大花括号括起
$* : 所有参数
$@ : 所有参数
$# : 参数个数
$$ : 当前进程的PID
$! : 上一个后台进程的PID
$? : 上一个命令的返回值状态码,0为成功
$_ 匹配上一个命令的最后一参数
12.局部变量 全局变量
全局变量:
全局变量定义在脚本中,也可以定义在函数中,作用范围:从定义的开始处到shell脚本结束或者被显示的去除
局部变量:范围更小,仅限于某个程序段中,如:函数、shell等,通过local关键字定义,注意:函数的参数也是局部变量