博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
元字符
阅读量:4563 次
发布时间:2019-06-08

本文共 3533 字,大约阅读时间需要 11 分钟。

bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的

`` 取命令的执行结果

[root@MiWiFi-R3-srv ~]# ls

4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
[root@MiWiFi-R3-srv ~]# res=`ls` #取命令的运行结果,赋值给变量res
[root@MiWiFi-R3-srv ~]# echo $res #查看变量res的值
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz

$()同上,但它弥补了``的嵌套缺陷

[root@MiWiFi-R3-srv ~]# res=`echo `ls`` #嵌套使用后无法达到预想的效果:取echo 一堆文件名的效果。

[root@MiWiFi-R3-srv ~]# echo $res

ls

[root@MiWiFi-R3-srv ~]# res=$(echo $(ls)) #替代方案

[root@MiWiFi-R3-srv ~]# echo $res
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz

~ 家目录

[root@MiWiFi-R3-srv tmp]# cd ~

[root@MiWiFi-R3-srv ~]# pwd
/root

! 取非

[root@MiWiFi-R3-srv ~]# ls /dev/sda

sda sda1 sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[0123]
/dev/sda1 /dev/sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[!01]
/dev/sda2

! 历史命令调用

[root@MiWiFi-R3-srv ~]# !343

hostname
MiWiFi-R3-srv

! 匹配最近一次历史命令

[root@MiWiFi-R3-srv ~]# !ls

ls /dev/sda[!01]
/dev/sda2

! ls 带空格 将命令的返回值取反

[root@MiWiFi-R3-srv ~]# echo ok

ok
[root@MiWiFi-R3-srv ~]# echo $? #上一条命令执行的结果,0代表执行成功,非0代表执行失败
0
[root@MiWiFi-R3-srv ~]# ! echo ok #将结果取反
ok
[root@MiWiFi-R3-srv ~]# echo $?
1

@ 无特殊含义

# 注释

$ 变量取值

$() 同``
${} 变量名的范围

[root@MiWiFi-R3-srv ~]# money=10

[root@MiWiFi-R3-srv ~]# echo $money
10
[root@MiWiFi-R3-srv ~]# echo 00000$money
0000010
[root@MiWiFi-R3-srv ~]# echo $money0000

[root@MiWiFi-R3-srv ~]# echo ${money}0000

100000

t@myworld tmp]# money=5

[root@myworld tmp]# echo ${money}0000
50000

$[] 整数计算 echo $[2+3] - * / %

[root@myworld tmp]# x=10

[root@myworld tmp]# echo $x
10
[root@myworld tmp]# echo $x+1
10+1
[root@myworld tmp]# echo $[$x+1]
11

浮点数用 echo "scale=3; 10/3" | bc -l

[root@myworld tmp]# echo "scale=3;10/3"|bc -l

3.333
[root@myworld tmp]# echo "scale=2;10/3"|bc -l
3.33

% 杀后台进程 jobs号; 取模

^ 取非 和 ! 雷同

[root@MiWiFi-R3-srv ~]# ls /dev/sda[^01]

/dev/sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[!01]
/dev/sda2

^ 替换

[root@MiWiFi-R3-srv ~]# systemctl restart network

[root@MiWiFi-R3-srv ~]# ^network^sshd^
systemctl restart sshd

& 后台执行;&& 逻辑与

* 匹配任意长度字符串;计算乘法

() 在子进程中执行

[root@MiWiFi-R3-srv ~]# x=1

[root@MiWiFi-R3-srv ~]# (x=666)
[root@MiWiFi-R3-srv ~]# echo $x
1
[root@MiWiFi-R3-srv ~]#
[root@MiWiFi-R3-srv ~]# (x=666;echo $x)
666

- 减号;区间;cd -;

_ 无特殊含义

+ 加号 ;

= 赋值

| 管道; || 逻辑或

\ 转义;

{} 命令列表 ,注意括号内的开头和结尾必须是空格{    ls; cd /;   }

[] 字符通配,匹配括号内之一;

[   ]:比较变量数值大小,同test,注意括号内的开头和结尾必须是空格[ $x == $y ]:

[root@myworld /]# x=1

[root@myworld /]# y=2
[root@myworld /]# test $x == $y
[root@myworld /]# echo $?
1
[root@myworld /]# [ $x == $y ]
[root@myworld /]# echo $?
1
[root@myworld /]# [ $x < $y ]
[root@myworld /]# echo $?
0

: 空命令 真值

[root@MiWiFi-R3-srv ~]# :

[root@MiWiFi-R3-srv ~]# echo $?
0

; 可以接多个命令:ls;pwd;echo 123;无论对错,会一直执行到最后一条命令

* 通配符:任意字符

? 通配符:任一字符

[root@myworld tmp]# ls *.txt

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
[root@myworld tmp]# ls ?.txt
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
[abc] 列表项之一
[^abc] 对列表取非 也可以使用范围 [a-z] 代表aAbBcC...z,[0-9]代表01234...9
{} 循环列表

[root@MiWiFi-R3-srv test]# touch {1..3}{a..d}.txt

[root@MiWiFi-R3-srv test]# ls
1a.txt 1b.txt 1c.txt 1d.txt 2a.txt 2b.txt 2c.txt 2d.txt 3a.txt 3b.txt 3c.txt 3d

硬引用与软引用

[root@MiWiFi-R3-srv test]# x=1

[root@MiWiFi-R3-srv test]# echo "$x" #双引号的代表软引用,引号内特殊字符有特殊意义,比如$,``等
1
[root@MiWiFi-R3-srv test]# echo '$x' #单引号代表硬引用,引号内所有字符都无特殊意义
$x

\转意

'[root@myworld /]# x=1

[root@myworld /]# echo $x
1
[root@myworld /]# echo \$x
$x
[root@MiWiFi-R3-srv test]# echo "'"
'

转载于:https://www.cnblogs.com/Icarus1900/p/7678996.html

你可能感兴趣的文章
pgsql查询优化之模糊查询
查看>>
不变模式
查看>>
20181227 新的目标
查看>>
androidtab
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>
浏览器全屏之requestFullScreen全屏与F11全屏
查看>>
软件包管理:rpm命令管理-安装升级与卸载
查看>>
旋转图像
查看>>
每日一小练——数值自乘递归解
查看>>
qq登陆错误提示
查看>>
bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维 + 二进制
查看>>
没写完,没调完,咕咕咕的代码
查看>>
Android Studio使用技巧:导出jar包
查看>>
Problem E. TeaTree - HDU - 6430 (树的启发式合并)
查看>>
Kafka序列化和反序列化与示例
查看>>