shell脚本————bash的特性

bash的特性

在写变量之后需要先记录一些bash的特性

bash 环境变量文件的加载

  • /etc/profile
    全局(公有)配置,不管哪个用户登陆都会读取该文件,用于设置整个系统的环境变量

  • /etc/bashrc
    是用于初始化整个系统 bash 的设置, 比如 bash 的代码补全, bash 的别名, bash 的颜色等.

  • ~/.bashrc
    就是root账户自己的bash设置文件 每个账号家目录下面都会有几个隐藏的配置文件

我的主机启动的时候会显示欢迎画面
在这里插入图片描述
这个就是在~/.bash_profile文件里写入的

[root@maomao shell]# vim ~/.bash_profile 
export PATH
echo "
我是猫猫
│\__╭╭╭╭╭__/│  .
│           │..    .
│           │..    .
│ ●       ● │  .
|  ≡                ≡│  
│    ╰—╯    │..  .
╰——┬O———O┬——╯ 
     ╭—^__^—╮
     │〈=-﹏-=〉│ 
   ╭═O════O═╮ 
   *  *     *   *│ 
   *              *
   │ *    * |
   ╰════════╯

猫猫家族
    ∧_∧    ∧_∧   ∧_ ∧   ∧_ ∧      
  (^ .^)  (^ 、^)  (^ 0^)   (^ Д^)   
 ----∪-∪-------∪-∪-------∪-∪-------∪-∪---
我是喵喵
.◢\▁▁●●●▁▁/◣        
 ◤    ●●●● ◥        
▕       ●● ▕        
——         ——      
—— ●     ● ——      
——    〉    ——      
 ◣         ◢        
☆快乐☆ ∞┼∞ ☆幸福☆      
 ███ ∞┼∞ ███        
 ◥█◤ ∞┼∞ ◥█◤        
   ═══╧═══            
   ███▊███"           
                         

命令和文件自动补齐

很多命令都会提供一个bash-complete 的脚本,在执行该命令时,敲tab能自动补全参数

linux命令自动补全需要安装bash-completion

yum install -y bash-conpletion

历史命令的记忆功能

Bash有自动记录命令的功能,自动记录到.bash_history隐藏文件中。还可以在下此需要时候直接调用历史记录中的命令

查看之前使用的所有命令
	history
	
显示最近的n个命令
	history n

删除相应的第n个命令
	history -d n

指定执行命令历史中的第n条语句
	 !n
	
指定执行命令历史中倒数第n条语句
	!-n
	
执行命令历史中最后一条语句
	 !!

实例:

# 比如配置网卡的时候需要输很长一串路径
[root@maomao shell]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@maomao shell]# history 
# 查到命令编号是1240
1240  vim /etc/sysconfig/network-scripts/ifcfg-ens33
# !加编号就能直接执行之前的命令
[root@maomao shell]# !1240
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 还可以通过!字母查看 但需要先按ctrl + R 输入关键字
# 比如我先执行一条过滤命令
[root@maomao shell]# ifconfig |egrep '([0-9]{1,3}.){3}[0-9]{1,3}' |awk 'NR==2{print $2}'
172.19.0.1

# 然后按ctrl + R
# 命令行变成这样了 (reverse-i-search)`': 

# 我输入ifconfig 则可以直接执行之前的长串命令
(reverse-i-search)`ifconfig': ifconfig |egrep '([0-9]{
    
    1,3}.){
    
    3}[0-9]{
    
    1,3}' |awk 'NR==2{
    
    print $2}'

后台操作的相关命令

  • command(命令) & 直接让作业进入后台运行

  • ctrl+z 将当前作业切换到后台

  • jobs 查看后台作业状态

  • fg %n 让后台运行的作业切换到前台(n是jobs里面显示序号)

  • bg %n 让指定的作业n在后台运行

  • kill %n 移除指定的作业n
    n为jobs命令查看的job编号,不是进程id

[root@maomao ~]# jobs
[1]+  Stopped                 top
[root@maomao ~]# kill -9 %1

[1]+  Stopped                 top
[root@maomao ~]# jobs
[1]+  Killed                  top

常用的通配符

注意与正则表达式稍有不同

符号 作用 补充
* 匹配0个或者多个字符 a*b,a与b之间可以有任意长度的字符,也可以没有。如:ajbb,ab,azxcb…
? 匹配一个任意字符 a?b,a与b之间必须但也只能存在一个字符,该字符可以是任意字符,如:aab,abb,acb…
[list] 匹配list中的任意单个字符 a[xyz]b,a与b之间必须但也只能存在一个字符,该字符只能是x或y或z.如:axb,ayb,azb
[!list] 匹配除list中以外的任意单个字符 a[a-z]b,a与b之间必须但也只能存在一个字符,该字符不能是小写字母.如:aAb,a0b…
[c1-c2] 匹配c1到c2间的任意单个字符 a[0-10]b,a与b之间必须但也只能存在一个字符,该字符只能是数字.如:a0b,a1b…
{string1,string2,…} 匹配string1,string2中的一个字符串 a{abc,xyz,opq}b,a与b之间必须但也只能存在一个字符串,字符串只能是abc xyz opq.如:aabcb axyzb aopqb
\ 表示转义符 让通配符回归本意,只转义其紧接着的后面的字符

实例

rm -rf *.tar

touch file{
    
    1..5}

find /var/log/httpd/*.log -mtime +30 |xargs rm -rf

bash中的引号

  • 双引号"":弱引用,会把引号的内容当成整体来看待,允许通过$符号引用其他变量值
  • 单引号’’:强引用,会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
  • 反撇号``:命令替换,反撇号和 $( ) 一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用

实例

[root@maomao httpd]# a=10;b=20;echo "$a" && echo '$b'
10
$b

# ""包围的a就能引用变量值 而''包围的b就是$b

# ``和$()一样
[root@maomao shell]# echo "运算百分值:`echo "scale=2;2.5*6.1*9.3"|bc`%"
运算百分值:141.82%
[root@maomao shell]# echo "运算百分值:$(echo "scale=2;2.5*6.1*9.3"|bc)%"
运算百分值:141.82%

猜你喜欢

转载自blog.csdn.net/Cantevenl/article/details/115257948