通配符

zsh默认是不支持通配符的

vim ~/.zshrc:打开zsh配置文件添加set nanomatch
sudo reboot/ source ~/.zshrc:重启或执行后面这条命令

成功后(或许也不需要执行)即可使用通配符

注意只能在当前目录查找

?:匹配一个字符
ls -d ???a:查找以a结尾前面有三个字符的目录(-d表示目录,不加-d的话直接打出了目录里面的内容)
*:匹配任意多个字符

:匹配[]list中符合条件的任意单一字符
ls a[a-k]z:列出akz目录下的内容(假设存在akz)

[!list]:匹配除去s的东西(只支持bash)

通配符 含义 举例
匹配list中的任意单一字符 a[xyz]b a与b之间有且只有一个字符, 且只能是x或y或z, 如: axb, ayb, azb。
[!list] 匹配除list中的任意单一字符 a[!0-9]b a与b之间有且只有一个字符, 但不能是数字, 如axb, aab, a-b等
[c1-c2] 匹配c1-c2中的任意单一字符 a[0-9]b a与b之间有且只有一个字符,该字符是0-9之间的数字,如a0b, a1b,… ,a9b。
{string1,string2,…} 匹配 sring1 或 string2 (或更多)其一字符串 a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。

可在 man 7 glob中查看

任务管理

&`:

​ 把任务调到后台,比如在 ping baidu.com之后,就会出现退不出来的情况(ctrl+c退出)。如果加上&就会在后台执行,不影响命令的输入。(如果已经主动修改过ctrl+c的快捷方式了的话,需要在shell的中将快捷键修改回默认)

fg

​ 任务前台执行(可以将bg后的任务调到前台),此时terminal被占用,无法使用命令行输入命令。因此无法再调回bg。

ctrl+z

​ 将shell执行的命令暂时挂起,即

​ 1.保存现场(目前执行到哪里了以及各种变量,我猜);

​ 2.切除内存(原本在内存中执行,放在置换区中,让系统执行其他进程。)

​ 此时可以通过bg和fg将进程重新跑起来。(假设我挂起了多个进程呢—>那就先查看进程的顺序,然后在根据名字fg或bg)

杀死命令:

​ 法1:首先把后台的调到前台,然后ctrl+c结束任务。

​ 法2:ps命令:ps -ef:显示所有,再用grep找一下:grep:ping查看pid

ps -ef | grep ping:某某     2799  2739  0 14:47 pts/0    00:00:00 ping baidu.com-ef和-e区别:ps -e | grep ping                                     2813 pts/0    00:00:00 ping2817 pts/0    00:00:00 ping2821 pts/0    00:00:00 pingps -ef | grep ping                                    king      2813  2739  0 15:05 pts/0    00:00:00 ping baidu.comking      2817  2739  0 15:05 pts/0    00:00:00 ping souhu.comking      2821  2739  0 15:06 pts/0    00:00:00 ping tecent.com

​ 其中2799即为ping的pid(process id)

​ 接着直接 kill 2799就完事了

​ 法3:pkill ping:根据名字ping结束进程(易错,因为不但会匹配到ping,可能也会有什么ping1、ping2之类的,尤其如果 sudo就更容易完蛋。。)

;:连接两个命令,次序执行。

&&||:与或操作,和C语言中类似,连接两个命令。(常用在脚本中)

命令替换符:``:

​ 先将``中间的命令执行完了之后,再将返回值放到原位置继续执行命令

ls `echo -al` == ls -al

​ 和$()的结果是一样的。

jobs:查看进程(之后可以用fg %1(或者234之类进程前的数字),也可以直接%1, 将相关进程放到前台。)

nohup:

nohup ping baidu.com &:将会忽略输入,将输出输出到nohup.out文件中优点是不会占用前台程序

之后可以用tail filename (默认输出最后十行,不会多次更新),或者 tail -f filename(每次有什么变化就会强制输出文件末尾)

转义符:

字符 说明
‘’ 硬转义,硬引用,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
“” 软转义,软引用,其内部只允许出现特定的shell元字符(KaTeX parse error: Can't use function '\`' in math mode at position 2: ,\̲`̲,\\):用于变量值替换、`用于命令替换、\用于转义单个字符
\ 反斜杠,转义,去除其后紧跟的元字符或通配符的特殊意义。
echo "$PATH":($PATH会生效)
echo '$PATH':写啥输出啥

下表是部分转义字符对应表:

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符’’’ 092
代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
? 代表一个问号 063
\0 空字符(NULL) 000
\nnn 1到3位八进制数所代表的任意字符 三位八进制
\xnnn 1到3位十六进制所代表的任意字符 三位十六进制

附录1 Shell元字符

字符 说明
= 变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不要有空格
`` 取命令的执行结果,与下文的$有相似之处
$ 变量值替换,变量名替换为shell变量的值;为避免在文本连接时混淆,请使用变量名替换为shell变量的值;为避免在文本连接时混淆,请使用shell;使{变量名};$0…9代表shell文件的参数。∗∗9 代表shell文件的参数。**9shell()同``;∗∗限定变量名的范围;∗∗{}**限定变量名的范围;**[]**整数计算;
> prog > file 将标准输出重定向到文件。
>> prog >> file 将标准输出追加到文件。
< prog < file 从文件file中获取标准输入
<<
| 管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入
& 后台运行命令,最大好处是无需等待命令执行结束,就可以在同一命令行下继续输入命令
() 在子shell中执行命令,在子进程中执行
{} 在当前shell中执行命令,或用在变量替换的界定范围(例如上面的${变量名}用法)。
[] 字符通配,匹配括号内之一
; 命令结束符。例如p1;p2表示先执行p1,再执行p2
&& 前一个命令执行成功后,才继续执行下一个命令。例:p1 && p2 ;若p1执行成功后,才执行p2,反之,不执行p2;
|| 前一个命令执行失败后,才继续执行下一个命令。例:p1 || p2 ;若p1执行成功后,不执行p2,反之,才执行p2;
! 执行历史记录中的命令**!731**;匹配最近的一次命令**!echo**;取非ls /dev/sda[!1];结果取反**! echo ok ;echo $?**
% % 1相当于fg 1
^ 取非,和**!雷同;^string1^string2^**将上一命令的string1替换为string2
~ home目录
# 注释
* 通配符,任意字符
? 通配符,任一字符
. 当前目录;source
减号;上次工作目录
: 真值;空命令
\ 转义
/ 目录分割符
ctrl+r 查钊

附录2 ASCII码 对照表

Bin(二进制) Oct(八进制) Dec(十进制) Hex(十六进制) 缩写/字符 解释
0000 0000 0 0 00 NUL(null) 空字符
0000 0001 1 1 01 SOH(start of headline) 标题开始
0000 0010 2 2 02 STX (start of text) 正文开始
0000 0011 3 3 03 ETX (end of text) 正文结束
0000 0100 4 4 04 EOT (end of transmission) 传输结束
0000 0101 5 5 05 ENQ (enquiry) 请求
0000 0110 6 6 06 ACK (acknowledge) 收到通知
0000 0111 7 7 07 BEL (bell) 响铃
0000 1000 10 8 08 BS (backspace) 退格
0000 1001 11 9 09 HT (horizontal tab) 水平制表符
0000 1010 12 10 0A LF (NL line feed, new line) 换行键
0000 1011 13 11 0B VT (vertical tab) 垂直制表符
0000 1100 14 12 0C FF (NP form feed, new page) 换页键
0000 1101 15 13 0D CR (carriage return) 回车键
0000 1110 16 14 0E SO (shift out) 不用切换
0000 1111 17 15 0F SI (shift in) 启用切换
0001 0000 20 16 10 DLE (data link escape) 数据链路转义
0001 0001 21 17 11 DC1 (device control 1) 设备控制1
0001 0010 22 18 12 DC2 (device control 2) 设备控制2
0001 0011 23 19 13 DC3 (device control 3) 设备控制3
0001 0100 24 20 14 DC4 (device control 4) 设备控制4
0001 0101 25 21 15 NAK (negative acknowledge) 拒绝接收
0001 0110 26 22 16 SYN (synchronous idle) 同步空闲
0001 0111 27 23 17 ETB (end of trans. block) 结束传输块
0001 1000 30 24 18 CAN (cancel) 取消
0001 1001 31 25 19 EM (end of medium) 媒介结束
0001 1010 32 26 1A SUB (substitute) 代替
0001 1011 33 27 1B ESC (escape) 换码(溢出)
0001 1100 34 28 1C FS (file separator) 文件分隔符
0001 1101 35 29 1D GS (group separator) 分组符
0001 1110 36 30 1E RS (record separator) 记录分隔符
0001 1111 37 31 1F US (unit separator) 单元分隔符
0010 0000 40 32 20 (space) 空格
0010 0001 41 33 21 ! 叹号
0010 0010 42 34 22 " 双引号
0010 0011 43 35 23 # 井号
0010 0100 44 36 24 $ 美元符
0010 0101 45 37 25 % 百分号
0010 0110 46 38 26 & 和号
0010 0111 47 39 27 闭单引号
0010 1000 50 40 28 ( 开括号
0010 1001 51 41 29 ) 闭括号
0010 1010 52 42 2A * 星号
0010 1011 53 43 2B + 加号
0010 1100 54 44 2C , 逗号
0010 1101 55 45 2D 减号/破折号
0010 1110 56 46 2E . 句号
00101111 57 47 2F / 斜杠
00110000 60 48 30 0 数字0
00110001 61 49 31 1 数字1
00110010 62 50 32 2 数字2
00110011 63 51 33 3 数字3
00110100 64 52 34 4 数字4
00110101 65 53 35 5 数字5
00110110 66 54 36 6 数字6
00110111 67 55 37 7 数字7
00111000 70 56 38 8 数字8
00111001 71 57 39 9 数字9
00111010 72 58 3A : 冒号
00111011 73 59 3B ; 分号
00111100 74 60 3C < 小于
00111101 75 61 3D = 等号
00111110 76 62 3E > 大于
00111111 77 63 3F ? 问号
01000000 100 64 40 @ 电子邮件符号
01000001 101 65 41 A 大写字母A
01000010 102 66 42 B 大写字母B
01000011 103 67 43 C 大写字母C
01000100 104 68 44 D 大写字母D
01000101 105 69 45 E 大写字母E
01000110 106 70 46 F 大写字母F
01000111 107 71 47 G 大写字母G
01001000 110 72 48 H 大写字母H
01001001 111 73 49 I 大写字母I
01001010 112 74 4A J 大写字母J
01001011 113 75 4B K 大写字母K
01001100 114 76 4C L 大写字母L
01001101 115 77 4D M 大写字母M
01001110 116 78 4E N 大写字母N
01001111 117 79 4F O 大写字母O
01010000 120 80 50 P 大写字母P
01010001 121 81 51 Q 大写字母Q
01010010 122 82 52 R 大写字母R
01010011 123 83 53 S 大写字母S
01010100 124 84 54 T 大写字母T
01010101 125 85 55 U 大写字母U
01010110 126 86 56 V 大写字母V
01010111 127 87 57 W 大写字母W
01011000 130 88 58 X 大写字母X
01011001 131 89 59 Y 大写字母Y
01011010 132 90 5A Z 大写字母Z
01011011 133 91 5B [ 开方括号
01011100 134 92 5C \ 反斜杠
01011101 135 93 5D ] 闭方括号
01011110 136 94 5E ^ 脱字符
01011111 137 95 5F _ 下划线
01100000 140 96 60 ` 开单引号
01100001 141 97 61 a 小写字母a
01100010 142 98 62 b 小写字母b
01100011 143 99 63 c 小写字母c
01100100 144 100 64 d 小写字母d
01100101 145 101 65 e 小写字母e
01100110 146 102 66 f 小写字母f
01100111 147 103 67 g 小写字母g
01101000 150 104 68 h 小写字母h
01101001 151 105 69 i 小写字母i
01101010 152 106 6A j 小写字母j
01101011 153 107 6B k 小写字母k
01101100 154 108 6C l 小写字母l
01101101 155 109 6D m 小写字母m
01101110 156 110 6E n 小写字母n
01101111 157 111 6F o 小写字母o
01110000 160 112 70 p 小写字母p
01110001 161 113 71 q 小写字母q
01110010 162 114 72 r 小写字母r
01110011 163 115 73 s 小写字母s
01110100 164 116 74 t 小写字母t
01110101 165 117 75 u 小写字母u
01110110 166 118 76 v 小写字母v
01110111 167 119 77 w 小写字母w
01111000 170 120 78 x 小写字母x
01111001 171 121 79 y 小写字母y
01111010 172 122 7A z 小写字母z
01111011 173 123 7B { 开花括号
01111100 174 124 7C | 垂线
01111101 175 125 7D } 闭花括号
01111110 176 126 7E ~ 波浪号
01111111 177 127 7F DEL (delete) 删除