@php
符号 | 做用 |
---|---|
“*” | 匹配任意多个,单个字符。 (经常使用) |
? | 匹配一个字符。 (几乎不用) |
[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 &> | 错误正确一块儿追加的符号 |
做用 命令的分隔符 分隔多条命令linux
无论前面的命令是否执行成功都会继续日后执行shell
案例 如何在shell中用一行来执行 mkdir oldboy touch oldboy/test.txt rm oldboy/test.txtvim
[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
&&bash
做用 前面命令必须执行成功 在执行后面的命令 不然不会执行后面的命令code
错误进程
[root@backup ~]# ll 123 && mkdir old ls: 没法访问123: 没有那个文件或目录
正确ip
[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
做用 前面的命令必须执行失败 在执行后面的命令it
[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 标准正确输出重定向,先清空后写入
[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 : 建议使用第三种