Linux学习笔记整理:进阶篇-BASH和正规表示法

  • 2019-05-14
  • 300
  • 0

一、认识与学习BASH

1、认识BASH这个Shell

–alias     //命令别名配置
|–alias lm=’ls -al’

2、Shell的变量功能

–echo     //变量的取用
|–echo $variable
|–echo $PATH
–unset    //取消变量
|–unset name
–version=$(uname -r)    //使用反单引号『`命令`』或 『$(命令)』
–env    //观察环境变量与常见环境变量说明
–set    //观察所有变量 (含环境变量与自定义变量)
–export    //自定义变量转成环境变量
–locale    //影响显示结果的语系变量
–read    //变量键盘读取
|–read atest    //让用户由键盘输入一内容,将该内容变成名为 atest 的变量
|–read -p “Please keyin your name: ” -t 30 named    //提示使用者 30 秒内输入自己的大名,将该输入字符串作为名为 named 的变量内容
–declare / typeset    //declare 或 typeset 是一样的功能,就是在『宣告变量的类型』
|–declare -i sum=100+300+50    //让变量 sum 进行 100+300+50 的加总结果
–var[1]=”small min”    //配置上面提到的 var[1] ~ var[3] 的变量
|–var[2]=”big min”
|–var[3]=”nice min”

3、命令别名与历史命令

–alias    //命令别名配置
|–alias lm=’ls -al | more’
|–alias rm=’rm -i’
–unalias    //取消命令别名配置
|–unalias lm
–history    //列出目前内存内的所有 history 记忆
|–history 3    //列出目前最近的 3 笔数据
|–history -w    //立刻将目前的数据写入 histfile 当中
–$HISTSIZE    //记录的笔数

4、通配符与特殊符号

–*    //代表『 0 个到无穷多个』任意字符
–?    //代表『一定有一个』任意字符
–[ ]    //同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
–[ – ]    //若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!
–[^ ]    //若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
–#     //批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行
–\    //跳脱符号:将『特殊字符或通配符』还原成一般字符
–|    //管线:分隔两个管线命令的界定(后两节介绍)
–;    //连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
–~    //用户的家目录
–$    //取用变量前导符:亦即是变量之前需要加的变量取代值
–&    //工作控制:将命令变成背景下工作
–!    //逻辑运算意义上的『非』 not 的意思!
–/    //目录符号:路径分隔的符号
–>, >>    //数据流重导向:输出导向,分别是『取代』与『累加』
–<, <<    //数据流重导向:输入导向
–‘ ‘    //单引号,不具有变量置换的功能
–” ”    //具有变量置换的功能
–` `    //两个『 ` 』中间为可以先运行的命令,亦可使用 $( )
–( )    //在中间为子 shell 的起始与结束
–{ }    //在中间为命令区块的组合

二、正规表示法与文件格式化处理

(一)基础正规表示法
1、语系对正规表示法的影响

[:alnum:]     //代表英文大小写字节及数字,亦即 0-9, A-Z, a-z
[:alpha:]     //代表任何英文大小写字节,亦即 A-Z, a-z
[:blank:]     //代表空白键与 [Tab] 按键两者
[:cntrl:]      //代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:]      //代表数字而已,亦即 0-9
[:graph:]     //除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:]     //代表小写字节,亦即 a-z
[:print:]     //代表任何可以被列印出来的字节
[:punct:]     //代表标点符号 (punctuation symbol),亦即:” ‘ ? ! ; : # $…
[:upper:]     //代表大写字节,亦即 A-Z
[:space:]     //任何会产包生空白的字节,括空白键, [Tab], CR 等等
[:xdigit:]     //代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节

2、grep 的一些进阶选项

–grep [-A] [-B] [–color=auto] ‘搜寻字串’ filename 
选项与参数:
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
–color=auto 可将正确的那个撷取数据列出颜色
–dmesg | grep ‘eth’    //用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行
–dmesg | grep -n –color=auto ‘eth’    //要将捉到的关键字显色,且加上行号来表示
–dmesg | grep -n -A3 -B2 –color=auto ‘eth’    //在关键字所在行的前两行与后三行也一起捉出来显示
注:在关键字的显示方面,grep 可以使用 –color=auto 来将关键字部分使用颜色显示。 这可是个很不错的功能啊!但是如果每次使用 grep 都得要自行加上 –color=auto 又显的很麻烦~ 此时那个好用的 alias 就得来处理一下啦!你可以在 ~/.bashrc 内加上这行:『alias grep=’grep –color=auto’』再以『 source ~/.bashrc 』来立即生效即可喔! 这样每次运行 grep 他都会自动帮你加上颜色显示啦!

3、基础正规表示法字符汇整

–^word     //待搜寻的字串(word)在行首!
|–grep -n ‘^#’ regular_express.txt    //搜寻行首为 # 开始的那一行,并列出行号
–word$    //待搜寻的字串(word)在行尾!
|–grep -n ‘!$’ regular_express.txt    //将行尾为 ! 的那一行列印出来,并列出行号
–.     //代表『一定有一个任意字节』的字符!
|–grep -n ‘e.e’ regular_express.txt    //搜寻的字串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e 与 e 中间『一定』仅有一个字节,而空白字节也是字节!
–\    //跳脱字符,将特殊符号的特殊意义去除!
|–grep -n \’ regular_express.txt    //搜寻含有单引号 ‘ 的那一行!
–*    //

4、文件的格式化与相关处理

–printf     //格式化列印
|–printf ‘列印格式’ 实际内容   
选项与参数:
关于格式方面的几个特殊样式:
    \a       警告声音输出
    \b       倒退键(backspace)
    \f        清除屏幕 (form feed)
    \n       输出新的一行
    \r        亦即 Enter 按键
    \t        水平的 [tab] 按键
    \v       垂直的 [tab] 按键
    \xNN  NN 为两位数的数字,可以转换数字成为字节。
关于 C 程序语言内,常见的变量格式
    %ns 那个 n 是数字, s 代表 string ,亦即多少个字节;
    %ni 那个 n 是数字, i 代表 integer ,亦即多少整数码数;
    %N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点),如果有小数码数,假设我共要十个位数,但小数点有两位,即为 %10.2f 。
|–printf ‘\x45\n’     //列出 16 进位数值 45 代表的字节

评论

还没有任何评论,你来说两句吧