通配符

Linux 通配符

符号作用
“*”匹配任意多个,单个字符。 (常用)
匹配一个字符。 (几乎不用)
[abcd]匹配其中的单个字符
[a-z]匹配其中的单个字符
[!abcd]匹配其中的单个字符 (取反)
Linux特殊符号:路径和位置相关
~用户家目录
.代表当前目录
“-”代表上一次(相当于当前路径)用户所在的路径
代表上级目录
Linux特殊符号:引用字符串命令相关
单引号(’’)所见即所得,被 ’’的内容不会发生变化
双引号(“”)会解析变量或命令,在输出,和不加引号相同“”表示一个整体
反引号(``)引用命令可以解析命令,相当与$()
空格赋值时,如果变量内容又空格会赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体输出,如果内容中有命令(要反引下)、变量等,会先把变量、命令解析出结果,然后输出最终内容,如果字符串中带有空格等特殊字符,则有可能无法完整的输出,因此需要改加双引号,一般连续的字符串、数字、路径等可以不加任何引号赋值和输出,不过无引号的情况最好用双引号替代之,特别是变量赋值时
**Linux特殊符号:其他 **
表示一个命令的结束,分隔命令
“#”注释
$1. 字符串前加$,代表字符串变量内容 2. 普通用户提示符
\逃脱符,转译符
{}1. 生成序列 2. 变量中表示分割作用
1)在Bash中表示非,取反的意思 同^ 2)在vi/vim中表示强制 3)“!ls” 表示找出最近一次以ls开头的命令并运行
|将管道前边的命令通过管道交给后边的命令进一步处理
&将程序放入后台运行符
&&前一个命令执行成功,在执行后面一个命令
Linux特殊符号:重定向系列特殊字符
0表示标准输入(stdin),配合<或<<使用,数据流从右向左
1表示标准输出(stdou),配合>或>>使用,数据流从左向右
2标准错误(stderr),配合>或>>使用,数据流从左向右
0<或<标准输入重定向,清空已有内容,数据从文件流向处理的命令
0<<或<<追加输入重定向,追加内容到底部,数据从文件流向处理命令
1>或>标准输出重定向,正常输出重定向到文件,会清空已有内容
1>>或>>标准输出追加重定向,将内容追加到文件底部,不清空已有内容
2>错误输出重定向,将标准错误内容重定向到文件,如文件存在内容则清空
2>>错误输出追加重定向,将标准错误内容追加到文件底部,不会清空已有内容
“>/dev/null"黑洞
2>&1 &>即标准错误和标准输出一样重定向到文件中

;分号

作用 命令的分隔符 分隔多条命令

不管前面的命令是否执行成功都会继续往后执行

案例 如何在shell中用一行来执行 mkdir oldboy touch oldboy/test.txt rm oldboy/test.txt

[root@backup data]# mkdir -p /root/oldboy;touch /root/oldboy/test.txt;rm /root/oldboy/test.txt
rm:是否删除普通空文件 "/root/oldboy/test.txt"[root@backup ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 121 21:10 data
drwxr-xr-x 2 root root   22 121 21:17 oldboy

&&

作用 前面命令必须执行成功 在执行后面的命令 否则不会执行后面的命令

错误

[root@backup ~]# ll 123 && mkdir old
ls: 无法访问123: 没有那个文件或目录

正确

[root@backup ~]# ls data/ && mkdir old            vmware-vmsvc.log
ks-script-AShK6w.log  vmware-network.1.log  X.log
ks-script-nf4aZ1.log  vmware-network.2.log  yum.log
[root@backup ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 121 21:10 data
drwxr-xr-x 2 root root    6 121 21:26 old
drwxr-xr-x 2 root root   22 121 21:17 oldboy

: 和&结合使用

[root@backup ~]# touch oldboy.txt ; ll -d data/ && touch du.txt
drwxr-xr-x 2 root root 4096 121 21:10 data/
[root@backup ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 121 21:10 data
-rw-r--r-- 1 root root    0 121 21:28 du.txt
drwxr-xr-x 2 root root    6 121 21:26 old
drwxr-xr-x 2 root root   22 121 21:17 oldboy
-rw-r--r-- 1 root root    0 121 21:28 oldboy.txt

||

作用 前面的命令必须执行失败 在执行后面的命令

[root@backup ~]# ll qwe || mkdir du
ls: 无法访问qwe: 没有那个文件或目录
[root@backup ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 121 21:10 data
drwxr-xr-x 2 root root    6 121 21:31 du

& Linux系统中 把当前的进程放入后台使用

引号的区别:

不加引号可以解析变量同加引号相同
双引号可以解析变量把不连续的内容作为一个字符串
单引号不可以解析变量所见即所得

引号

案例

不加引号

[root@backup ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

双引号

案例

[root@backup ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

单引号

案例

[root@backup ~]# echo '$PATH'
$PATH

"*"表示所有

案例
查找所有的任意字符开头以.txt结尾的文件

[root@backup ~]# ls *.txt
du.txt  oldboy.txt

查找所有的old开头的文件

[root@backup ~]# ls old*
oldboy.txt
old:
oldboy:
test.txt

查找所有以old开头并且.txt结尾的

[root@backup ~]# ll old*.txt
-rw-r--r-- 1 root root 0 121 21:28 oldboy.txt

[root@backup ~]# find ./ -type f -name 'old*.txt'
./oldboy.txt

? 表示任意字符

  [root@backup ~]# ll d?.txt
    -rw-r--r-- 1 root root 0 121 21:28 du.txt

中括号[]

作用 匹配期中单个字符

[root@oldboy-lnb ~/20210118]#ll [a-z][a-z][a-z][0-9][0-9].txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu00.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu01.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu02.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu03.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu04.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu05.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu06.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu07.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu08.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu09.txt
-rw-r--r-- 1 root root 0 Jan 21 11:55 stu10.txt

{}大括号

作用 : 可以生成系列 变量中表示分隔作用

[root@oldboy-lnb ~/20210118]#echo oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[root@oldboy-lnb ~/20210118]#cp oldboy.txt{,.bak}
[root@oldboy-lnb ~/20210118]#ll oldboy.txt{,.bak}
-rw-r--r-- 1 root root 0 Jan 21 12:06 oldboy.txt
-rw-r--r-- 1 root root 0 Jan 21 12:21 oldboy.txt.bak

! 对括号中内容取反

[root@backup ~]# ll [!ol]*
-rw-r--r-- 1 root root    0 121 21:28 du.txt

data:
总用量 2536
-rw------- 1 root root   34270 121 20:33 anaconda.log
-rw------- 1 root root  427157 121 20:33 audit.log
-rw------- 1 root root   37274 121 20:33 boot.log
-rw------- 1 root root    5465 121 20:33 ifcfg.log
-rw------- 1 root root 1607656 121 20:33 journal.log
-rw------- 1 root root       0 121 20:33 ks-script-AShK6w.log
-rw------- 1 root root       0 121 20:33 ks-script-nf4aZ1.lo

	[root@oldboy-lnb ~/20210118]#ll [!!so]*
	-bash: !so]*: event not found

\ 转义

[root@oldboy-lnb ~/20210118]#ll [!\!so]*
	-rw-r--r-- 1 root root  0 Jan 21 12:11 1
	-rw-r--r-- 1 root root  0 Jan 21 12:11 123
	-rw-r--r-- 1 root root 41 Jan 21 12:06 1.txt
	-rw-r--r-- 1 root root  0 Jan 21 12:06 awk-oldboy
	-rw-r--r-- 1 root root  0 Jan 21 12:06 lidao-oldboy.txt

通配符 匹配查找文件名称 所有命令都支持

正则在普通命令中不支持  但是通配符在正则中有特殊含义

重定向符号

作用:对文件的内容进行处理操作

“>”标准正确输出重定向,先清空后写入
2>标准错误输出重定向
“>>”标准错误追加输出重定向
2>>标准错误追加输出重定向
0表示标准输入(stdin),配合<或<<使用,数据流从右向左
1表示标准输出(stdou),配合>或>>使用,数据流从左向右
2标准错误(stderr),配合>或>>使用,数据流从左向右
0<或<标准输入重定向,清空已有内容,数据从文件流向处理的命令
0<<或<<追加输入重定向,追加内容到底部,数据从文件流向处理命令
1>或>标准输出重定向,正常输出重定向到文件,会清空已有内容
1>>或>>标准输出追加重定向,将内容追加到文件底部,不清空已有内容
2>错误输出重定向,将标准错误内容重定向到文件,如文件存在内容则清空
2>>错误输出追加重定向,将标准错误内容追加到文件底部,不会清空已有内容
" >/dev/null"黑洞
2>&1 &>即标准错误和标准输出一样重定向到文件中

echo练习

echo 标准正确输出重定向,先清空后写入

   [root@cs /]# echo oldboy > oldboy.txt   输入内容到文件中
    [root@cs /]# cat oldboy.txt 
    oldboy
    [root@cs /]# echo test > oldboy.txt  
    [root@cs /]# cat oldboy.txt 
    test			覆盖了oldboy

echo 错误输出重定向

[root@cs /]# ll hahha.txt > oldboy.txt
ls: 无法访问hahha.txt: 没有那个文件或目录
[root@cs /]# ll 3.txt 2> oldboy.txt   错误输出重定向
[root@cs /]# cat oldboy.txt 
ls: 无法访问3.txt: 没有那个文件或目录

echo 正确追加重定向

[root@cs /]# echo oldboyjj >> oldboy.txt   追加内容到 oldboy.txt 
[root@cs /]# cat oldboy.txt 
ls: 无法访问3.txt: 没有那个文件或目录
oldboyjj

echo 错误追加重定向

[root@cs /]# llll 1.txt 2>> oldboy.txt  把报错内容追加到oldboy.txt
[root@cs /]# cat oldboy.txt 
ls: 无法访问3.txt: 没有那个文件或目录
oldboyjj
-bash: llll: 未找到命令

echo 同时接收正确和错误信息

[root@cs /]# echo hahch > oldboy.txt 2>oldboy.txt 
[root@cs /]# 
[root@cs /]# cat oldboy.txt 
hahch
[root@cs /]# echo hahh >> oldboy.txt  2>> oldboy.txt lll
[root@cs /]# cat oldboy.txt 
hahch
hahh lll
root@cs /]# ech gagag >> oldboy.txt  2>>oldboy.txt 
[root@cs /]# cat oldboy.txt 
hahch
hahh lll
-bash: ech: 未找到命令

第二种方式:

[root@cs /]# ech	 heheh >> oldboy.txt 2>&1
[root@cs /]# cat oldboy.txt 
hahch
hahh lll
-bash: ech: 未找到命令
-bash: ech: 未找到命令

第三种方法

  [root@cs /]# echo hahah &>> oldboy.txt 
    [root@cs /]# cat oldboy.txt 
    hahch
    hahh lll
    -bash: ech: 未找到命令
    -bash: ech: 未找到命令
    hahah

Ps : 建议使用第三种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值