Linux Base
hanlray@gmail.comRevision:1.1 Date:2006/09/20
1. info
相比人们熟知的man,info的功能更强大,它用树来组织文档内容,树上的每个node代表一个topic,由此各个topic之间便有了层次关系,类似1 1.1 1.2 2 2.1 2.2这个样子。
- ? 列出info的命令
- 翻页 <SPC>/<BACKSPACE>
- 跳至前/后node n/p
- 回到上一个node l
- 跳到当前node的上一级node u
- 以*开头的行是当前topic的menu,通过它可以跳转到其他topic,方法是用m命令,然后输入*后topic名
2. virtual console
Linux支持多个virtual console,每个console都建立了一个用户和机器间的session,在各个console间切换用Alt+Fn或Ctrl+Alt+Fn,每个console都是一个字符设备/dev/ttyn,其中/dev/tty0和/dev/console代表当前的console;大部分Linux发行版在缺省配置下都打开了几个virtual console,若要打开一个新的console,可以
- 修改inittab,在一个未用的tty设备上开启一个新的/sbin/getty进程,然后telinit q
- 使用open命令
3. sed
简单的说就是一个stream editor,其edit的stream可以来自文件,也可以是通过管道得到另一个命令的输出,对其进行编辑后把结果输出到标准输出上。用它在script中进行文本处理最方便了: echo en_US.utf-8|sed -e 's//..*//' 这个命令的输出结果是en_US,-e表示用其后的sed script来处理输入流,sed script中的s表示执行替换操作,用/号分隔被替换字符串的pattern和新字符串,这里没有新字符串,所以把匹配的.utf-8删掉了
4. xargs
bash的$(command)表达式把一个命令输出到stdout的内容作为其结果,当然可以用来作为另一个命令的参数,但是命令行一般都是由长度限制的,当$()里命令的输出很长时就可能造成命令行运行失败。xargs从标准输入中读取以空格或换行分隔的字符串,将其作为命令行参数执行指定的命令,因此xargs可以控制送到命令行里参数的个数,当标准输入太长就分次执行,使每次构造的命令行长度都在允许的范围内。一次可能的xargs运行过程:
- 读入第一个参数,判断如果以该参数来构造命令行不会溢出
- 接着读取下一个参数,判断如果以上一个参数和当前参数来构造命令行也不会溢出
- 接着读第三个参数,判断如果以这前三个参数来构造命令行就会溢出,于是就以前两个参数来构造命令行来执行,而把第三个参数放置下一次执行。
5. log
- linux使用一个叫做kernel ring buffer的环形缓冲区来保存输出到system console上的消息,可以用dmesg来查看,如果是在系统刚刚启动之后查看,那就是系统启动时输出到屏幕的那些消息(实际上此后系统很少再向system console输出消息,所以即使在系统运行了一段时间后仍然会是这些启动消息)
- /var/log/messages 系统运行时的内核消息,也包括系统的启动消息