(1)、Bash的基本功能

写在前面的话:

此随笔需要一定的Linux基础

shell是一门很简单的语言,它完成不了复杂的编程如写网站,写linux基本流程等等,它有些东西甚至不符合编程思想,但它对于我们运维人员来说,却是最简单且最实用的工具,它能减少我们的误判率,减轻我们的工作量。

人生最可悲的事莫过于,胸怀大志却碌碌无为。

莫等闲,白了少年头,空悲切。

 

Bash标准输入输出:

设备

设备文件名 文件描述 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

 

 

 

 

 

 

标准错误输出重定向:

错误命令 2>>file 

#捕捉错误命令输出,并追加到文件,不在显示器上打印

[root@CAT ~]# lss 2>>file
[root@CAT ~]# cat file
-bash: lss: 未找到命令

实际使用:

命令 >> file1  2>>file2

#把正确命令输出信息放到file1,把错误输出信息放到file2

[root@CAT ~]# ls >> file1 2>>file2
[root@CAT ~]# lss >> file1 2>>file2
[root@CAT ~]# cat file1 file2
anaconda-ks.cfg
file
file1
file2
-bash: lss: 未找到命令

多命令执行符:

执行符 语法 作用
; 命令1;命令2 多个命令顺序执行,之间无任何逻辑关系
&& 命令1&&命令2 逻辑与,命令1正确执行($?=0),命令2才执行
|| 命令1||命令2 逻辑非,命令1错误执行($?≠0),命令2才执行

 

 

 

 

 

[root@CAT ~]# ls && echo "yes"
anaconda-ks.cfg  file  file1  file2
yes
[root@CAT ~]# lss && echo "yes"
-bash: lss: 未找到命令
[root@CAT ~]# ls || echo "no"
anaconda-ks.cfg  file  file1  file2
[root@CAT ~]# lss || echo "no"
-bash: lss: 未找到命令
no

用 && 和 ||  可以进行简单的判断:

[root@CAT ~]# lss >/dev/null 2>/dev/null && echo "yes" || echo no 
no
[root@CAT ~]# ls >/dev/null 2>/dev/null && echo "yes" || echo no
yes

注意:这样判断时 && 一定在前,否则判断不符合逻辑,将无意义。

特殊字符:

特殊字符 名称 意义
' ' 单引号 单引号中的所有特殊字符都不再有特殊含义
" " 双引号 双引号中特殊字符无意义,但 "$"、"`"、"\"仍有特殊含义
` ` 反引号 反引号中的内容为系统命令,在Bash中优先执行,但我们一般使用$()代替它,因为它是在太容易看错了
$() $小括号

和反引号作用一致

# 井号 注释
$  dollar号 调用变量的值
\ 转义符 跟在 \ 后的特殊字符将失去特殊意义,被转义为普通字符

 

 

 

 

 

 

 

 

 

 

 

通配符:

通配符 意义
? 匹配任意一个字符
* 匹配0个或多个字符,全匹配
[] 匹配[]内的任意一个字符 eg:[abc]  #匹配a或b或c
[-] 匹配[]内任意一个字符,- 是范围  eg:[0-9]  #匹配一个是数字的字符
[^] 逻辑非,反匹配,匹配一个不是[]内的字符    eg:[^0-9]  #匹配一个不是数字的字符

 

posted @ 2021-04-26 10:09  Brother_Cat  阅读(90)  评论(0编辑  收藏  举报