Linux基础知识5:通配符、进程管理、命令替换符、转义符、shell元字符、ascii码对照表

本文介绍了Linux中的通配符使用,如?和*,并讲解了进程管理,包括如何在后台运行命令、挂起与恢复进程以及杀死进程的方法。此外,还详细阐述了命令替换符``的功能以及转义符的作用,同时提到了Shell元字符和ASCII码对照表的相关知识。
通配符

zsh默认是不支持通配符的

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

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

注意只能在当前目录查找

?:匹配一个字符
ls -d ???a:查找以a结尾前面有三个字符的目录(-d表示目录,不加-d的话直接打出了目录里面的内容)
*:匹配任意多个字符
[list]:匹配[]list中符合条件的任意单一字符
ls a[a-k]z:列出akz目录下的内容(假设存在akz)

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

通配符含义举例
[list]匹配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 ping
			 2817 pts/0    00:00:00 ping
			 2821 pts/0    00:00:00 ping
		ps -ef | grep ping                                    
			king      2813  2739  0 15:05 pts/0    00:00:00 ping baidu.com
			king      2817  2739  0 15:05 pts/0    00:00:00 ping souhu.com
			king      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
\nnn1到3位八进制数所代表的任意字符三位八进制
\xnnn1到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 00000000NUL(null)空字符
0000 00011101SOH(start of headline)标题开始
0000 00102202STX (start of text)正文开始
0000 00113303ETX (end of text)正文结束
0000 01004404EOT (end of transmission)传输结束
0000 01015505ENQ (enquiry)请求
0000 01106606ACK (acknowledge)收到通知
0000 01117707BEL (bell)响铃
0000 100010808BS (backspace)退格
0000 100111909HT (horizontal tab)水平制表符
0000 101012100ALF (NL line feed, new line)换行键
0000 101113110BVT (vertical tab)垂直制表符
0000 110014120CFF (NP form feed, new page)换页键
0000 110115130DCR (carriage return)回车键
0000 111016140ESO (shift out)不用切换
0000 111117150FSI (shift in)启用切换
0001 0000201610DLE (data link escape)数据链路转义
0001 0001211711DC1 (device control 1)设备控制1
0001 0010221812DC2 (device control 2)设备控制2
0001 0011231913DC3 (device control 3)设备控制3
0001 0100242014DC4 (device control 4)设备控制4
0001 0101252115NAK (negative acknowledge)拒绝接收
0001 0110262216SYN (synchronous idle)同步空闲
0001 0111272317ETB (end of trans. block)结束传输块
0001 1000302418CAN (cancel)取消
0001 1001312519EM (end of medium)媒介结束
0001 101032261ASUB (substitute)代替
0001 101133271BESC (escape)换码(溢出)
0001 110034281CFS (file separator)文件分隔符
0001 110135291DGS (group separator)分组符
0001 111036301ERS (record separator)记录分隔符
0001 111137311FUS (unit separator)单元分隔符
0010 0000403220(space)空格
0010 0001413321!叹号
0010 0010423422"双引号
0010 0011433523#井号
0010 0100443624$美元符
0010 0101453725%百分号
0010 0110463826&和号
0010 0111473927闭单引号
0010 1000504028(开括号
0010 1001514129)闭括号
0010 101052422A*星号
0010 101153432B+加号
0010 110054442C,逗号
0010 110155452D-减号/破折号
0010 111056462E.句号
0010111157472F/斜杠
001100006048300数字0
001100016149311数字1
001100106250322数字2
001100116351333数字3
001101006452344数字4
001101016553355数字5
001101106654366数字6
001101116755377数字7
001110007056388数字8
001110017157399数字9
0011101072583A:冒号
0011101173593B;分号
0011110074603C<小于
0011110175613D=等号
0011111076623E>大于
0011111177633F?问号
010000001006440@电子邮件符号
010000011016541A大写字母A
010000101026642B大写字母B
010000111036743C大写字母C
010001001046844D大写字母D
010001011056945E大写字母E
010001101067046F大写字母F
010001111077147G大写字母G
010010001107248H大写字母H
010010011117349I大写字母I
01001010112744AJ大写字母J
01001011113754BK大写字母K
01001100114764CL大写字母L
01001101115774DM大写字母M
01001110116784EN大写字母N
01001111117794FO大写字母O
010100001208050P大写字母P
010100011218151Q大写字母Q
010100101228252R大写字母R
010100111238353S大写字母S
010101001248454T大写字母T
010101011258555U大写字母U
010101101268656V大写字母V
010101111278757W大写字母W
010110001308858X大写字母X
010110011318959Y大写字母Y
01011010132905AZ大写字母Z
01011011133915B[开方括号
01011100134925C\反斜杠
01011101135935D]闭方括号
01011110136945E^脱字符
01011111137955F_下划线
011000001409660`开单引号
011000011419761a小写字母a
011000101429862b小写字母b
011000111439963c小写字母c
0110010014410064d小写字母d
0110010114510165e小写字母e
0110011014610266f小写字母f
0110011114710367g小写字母g
0110100015010468h小写字母h
0110100115110569i小写字母i
011010101521066Aj小写字母j
011010111531076Bk小写字母k
011011001541086Cl小写字母l
011011011551096Dm小写字母m
011011101561106En小写字母n
011011111571116Fo小写字母o
0111000016011270p小写字母p
0111000116111371q小写字母q
0111001016211472r小写字母r
0111001116311573s小写字母s
0111010016411674t小写字母t
0111010116511775u小写字母u
0111011016611876v小写字母v
0111011116711977w小写字母w
0111100017012078x小写字母x
0111100117112179y小写字母y
011110101721227Az小写字母z
011110111731237B{开花括号
011111001741247C|垂线
011111011751257D}闭花括号
011111101761267E~波浪号
011111111771277FDEL (delete)删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值