特殊符号

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
~  ⽤户家⽬录

- 标准输⼊(/dev/stdin)

. 当前⽬录

.. 上层⽬录

.file 隐藏⽂件,需要通过ls -a查看

| 管道符,⽤于联通两个命令,前⼀个的输出作为后⼀个的输⼊

& 出现在命令末尾,代表该命令后台运⾏

$ $VAR是取变量VAR的值,不存在则为空

; 标识⼀条命令的结束(默认是换⾏符标识命令结束)

< > 输⼊/输出重定向

反引号(`): 命令替换,执⾏命令并取出其输出内容

单引号('): 将字符串标记为⼀个词,可包含特殊字符

双引号("): 将字符串标记为⼀个词,可包含特殊字符,但其中的变量替换$VAR和命令替换`cmd`会先⽣效

cat命令

1
2
3
4
5
• -n: 为输出内容添加⾏号
• -v: 显示不可打印字符
• -E: 显示⼀⾏的末尾
• -T: 显示TAB
• -A: 等同于-vET

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
find [OPTION] [PATH] [-exec cmd]
• 查找指定路径下的⽂件,并调⽤命令进⾏处理
• 提供了极其丰富的过滤条件

• -size: 基于⽂件⼤⼩的过滤
• -perm: 基于⽂件权限的过滤
• -name/-regex: 基于⽂件名的过滤,⽀持通配符/正则
• -user/-group: 基于⽂件所属者的过滤
• -ctime/-atime: 基于⽂件访问/修改时间的过滤

• 默认执⾏的是将⽂件名输出到stdout
• 可通过"-exec <cmd> [OPTION] [{}] ;",为每个找到的⽂件执⾏命令
• {} ⽤来指代find找到的⽂件名
• ; ⽤于标识⼀条命令的结束,实际使⽤时需要转义(思考题:如果不转义,会发⽣什么?)

grep

1
2
3
4
5
• -n: 打印⾏号
• -i: 忽略⼤⼩写
• -o: 只打印匹配的内容(默认是打印整⾏)
• -r: 递归查找全部⼦⽬录中的⽂件
• --exclude/--include: 递归⼦⽬录时,跳过/只查找这些⽂件,⽀持通配符

sort

1
2
3
4
5
• 对给定字段排序:字符串,数字,⽉份
• 经常与uniq组合使⽤
• 先⽤sort对内容排序
• 再⽤uniq提取重复的/唯⼀的内容
• man sort; man uniq

连接符

1
2
3
4
5
6
7
命令执行就用命令拼接符执行漏洞命令
|、||、&、&&的区别:

&:无论左边是false还是true,右边都执行
&&:具有短路效果,左边是false,右边不执行。
|:无论左边是false还是true,右边都会执行
||:具有短路效果,左边是true,右边不执行。
2025-03-20

⬆︎TOP