@

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 1月  21 21:10 data
drwxr-xr-x 2 root root   22 1月  21 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 1月  21 21:10 data
drwxr-xr-x 2 root root    6 1月  21 21:26 old
drwxr-xr-x 2 root root   22 1月  21 21:17 oldboy

: 和&结合使用

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

||

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

[root@backup ~]# ll qwe || mkdir du
ls: 无法访问qwe: 没有那个文件或目录
[root@backup ~]# ll
总用量 4
drwxr-xr-x 2 root root 4096 1月  21 21:10 data
drwxr-xr-x 2 root root    6 1月  21 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 1月  21 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 1月  21 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 1月  21 21:28 du.txt

data:
总用量 2536
-rw------- 1 root root   34270 1月  21 20:33 anaconda.log
-rw------- 1 root root  427157 1月  21 20:33 audit.log
-rw------- 1 root root   37274 1月  21 20:33 boot.log
-rw------- 1 root root    5465 1月  21 20:33 ifcfg.log
-rw------- 1 root root 1607656 1月  21 20:33 journal.log
-rw------- 1 root root       0 1月  21 20:33 ks-script-AShK6w.log
-rw------- 1 root root       0 1月  21 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 : 建议使用第三种

版权声明:本文为ruirui-com原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ruirui-com/p/14317811.html