RHCE的学习(19)

对于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脚本

注意点:

  1.  多使用内置命令  type  time
  2. 用最少的命令
  3. 尽量不要使用交互式命令
  4.  重要部分添加注释

    
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.变量类型

  1. 环境变量
  2. 本地变量 (进程)  
  3. 位置变量

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关键字定义,注意:函数的参数也是局部变量



 

上一篇:数字化那点事:一文读懂物联网


下一篇:正则表达式完全指南,总结全面通俗易懂