0. 用户
实际用户:当前系统的登录用户,用$ whoami
查看
有效用户:文件的实际执行者。
联系:若某命令(命令本质上是一个脚本文件)没有设置粘滞位(sticky bits),那么有效用户=实际用户;如果设置了粘滞位,则有效用户=文件所有者。
修改方式:chmod u[g,o] +S FILE/Directory
1. 关于inittab
我们知道Linux系统加载完BIOS后,会创建第一个进程init, 该进程的一项重要工作就是读取inittab文件,该文件记录了应当以哪种方式登录系统,叫做登录代码。通过修改inittab可以改变系统的工作模式。
登录代码 | 模式 |
---|---|
0 | halt 关机, 这导致永远无法开启系统, 勿试 |
1 | single-user 单用户模式 |
2 | multi-users 多用户,不带NFS功能,脱机版 |
3 | multi-users 多用户,带NFS,通常命令行界面就是这种 |
4 | 保留未用 |
5 | graphics 图形界面 |
6 | reboot 导致系统不断重启, 勿试 |
2. 解压缩命令
压缩 : tar -czvf tar_filename.tar.gz files/directory
解压缩: tar -xzvf tar_filename.tar.gz destination
3. sed和awk
3.1 sed sed是一种流式文本处理器,以行为单位。结合正则表达式,完成诸如文本替换等工作
a. 替换指定文本
sed 's/pattern/repace_string/' file
默认把替换后的文本打印到标准输出,不会修改源文件,若想就地修改,请使用-i
选项。
b. 上一条命令只会替换第一次匹配到的文本,全部替换请在后面加上g
sed s/pattern/replace_string/g file
注 如果欲匹配的文本本身包含'/', 那么可以:模式中进行转义s\/\repalace_string/g
或者使用其他的分隔符,如's|pattern|replace_string|g'
c. 移除空白行
^$ 匹配空白行,sed /^$/d file
d. 已匹配字符串标记(&)
这有点类似于正则表达式的前向引用,&
代表前面匹配的字符样式,这样我们可以在后面引用它。
比如,sed s/\w\+/[&]/g
把每个单词word, 替换为[word]
4.awk
awk也是顺行读取,但是它以列为处理单位。每行视为一条记录,每行以指定分隔符(默认是空白:空格、Tab)划分为若干域。
$0全部域,即整行。$1第一个字段,$2第二个字段...$NF最后一个字段,$NF是一个全局变量,表示该行的所有字段数。还有一个全局变量是$NR,记录总行数(不忽略空行)。
5. 排序和去重
sort
:把重复的内容显示在连续的几行上
-k: 要排序的列
-t: 自定义列分隔符
-n: 按数字比较
-d: 按字典顺序比较
-r: 逆序
uniq
删除连续的重复行
-u: 只显示没有重复的行
-d:显示重复行
-c: 统计行出现次数
6.分割与转换
cut
: 分割行
-d: 指定分隔符
-f: 提取指定列
-c:没有分隔符的文件,指定列的字符
tr
: 映射转换
tr -options [set1] [set2]
将匹配set1中的字符转换成set2。两个字符集的长度应相等,来保证一一映射。如果set2长度比set1小,那么将自动重复set2的最后一个字符,直到跟set1一样; 如果set2比set1长,那么超出部分被省略。
7.其他
paste
: 连接两个文件,以指定连接符
-d: 指定连接符
paste a.txt b.txt -d ';'
kill
: 不多说了,杀死进程 默认使用-15,不建议使用-9lsof
: 列举进程打开的文件
nice
:指定优先级
进程优先级 = 优先级 + nice优先级
renice
: 修改已制定的优先级