0%

Linux 类终端中的常用特殊符号

摘要:学习 Linux 类终端当中的通配符、管道符号等的使用。

前提:实验环境目录 /hello 构造如下:

1
2
3
4
5
6
7
8
9
10
11
# tree
.
├── binggo.txt
├── hello1.txt
├── hello2.txt
├── hello3.txt
├── mf.txt
└── sub
└── sub_binggo.txt

1 directory, 6 files

使用 ls 命令,可查看当前命中文件结果:

1
2
3
4
5
6
7
8
# ls 命令简介

$ ls # 仅列出当前目录可见文件
$ ls -l # 列出当前目录可见文件详细信息
$ ls -hl # 列出详细信息并以可读大小显示文件大小
$ ls -al # 列出所有文件(包括隐藏)的详细信息
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)
1
2
# ls
binggo.txt hello1.txt hello2.txt hello3.txt mf.txt sub

通配符类:“ * ”、“ ? ”

当我们不知道确切的文件名时,可以用通配符来进行模糊操作。* 可以代表任意长度的任意字符,?代表一个任意字符。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ls *
binggo.txt hello1.txt hello2.txt hello3.txt mf.txt
sub:
sub_binggo.txt

# ls *.txt
binggo.txt hello1.txt hello2.txt hello3.txt mf.txt

# ls hello?.txt
hello1.txt hello2.txt hello3.txt

# ls ??.txt
mf.txt

# ls ??????.txt
binggo.txt hello1.txt hello2.txt hello3.txt

转义字符类:“ \ ”

如果要操作的文件名中包含有“*”、“?”这些特殊符号,我们可以结合“\”来表达。下面是通配符和正则表达式的一个简短列表:

1
2
3
4
5
6
7
8
9
* 匹配所有字符

? 匹配字串中的一个字符

\* 匹配“*”字符

\? 匹配“?”字符

\) 匹配“)”字符

目录类:“ / ”、“ ~ ”、“ . ”、“ .. ”

它们分别代表的意思是:

1
2
3
4
5
6
7
“/”:根目录(在中间使用表示路径)

“~”:用户根目录(用户登录时所在的目录)

“.”:当前目录

“..”:上级目录

测试验证:

1
2
3
4
5
6
7
8
9
10
11
12
# ls .
binggo.txt hello1.txt hello2.txt hello3.txt mf.txt sub

# ls ..
hello

# ls /
AppleInternal System bin etc private usr
Applications Users cores home sbin

# ls ~
Desktop Documents Downloads Library Movies Music Pictures Public opt

后台执行类:“ & ”

用户有时候执行命令要花很长时间,可能会影响做其他事情。最好的方法是将它放在后台执行。后台运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时,在命令的后面加上“&”。

重导向类:“ > ”、“ >> ”、“ < ”

重导向就是使命令改变它所认定的标准输出。

1
2
3
4
5
“>”  可将结果输出到文件中,该文件原有内容会被删除,

“>>” 则将结果附加到文件中,原文件内容不会被删除。

“<” 可以改变标准输入。

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1、将当前目录文件名输出到 list.txt文件中:
# ls . >list.txt

2、验证 list.txt 文件结果:
# cat list.txt
binggo.txt
hello1.txt
hello2.txt
hello3.txt
list.txt
mf.txt
sub

3、把根目录文件名追加到 list.txt 文件中:
# ls / >>list.txt

4、验证 list.txt 文件结果:
# cat list.txt
binggo.txt
hello1.txt
hello2.txt
hello3.txt
list.txt
mf.txt
sub
AppleInternal
Applications
……
usr
var

管道类:“ | ”

管道 | 可将命令的结果输出给另一个命令作为输入之用:

1
2
3
4
5
6
7
8
9
10
11
12
13
找出 list.txt 文件中,包含字符串 “App” 的行,注明行号:

# cat list.txt | grep -n App
8:AppleInternal
9:Applications


找出 list.txt 文件中,包含以字符 “r” 结尾的行,注明行号:
# cat list.txt | grep -n "r$"
23:usr
24:var

*说明:关于 grep 命令的使用,会专门在后续文章详解

连接符号类:“ ; ”

当有几个命令要连续执行时,我们可以把它们放在一行内,中间用 ; 分开。

1
2
3
4
5
6
7
8
9
10
11
12
需求:
1、新建一个子目录 /test
2、并在该目录下建立一个文件 abc.txt,
3、在文件中写入 “hello,legalgeek”
# mkdir test ; cd test ; echo "hello,legalgeek" >abc.txt

验证:
1、查看当前所在文件夹为:/test
2、验证 abc.txt 文件内容:
# cat abc.txt
hello,legalgeek