文件的操作主要考虑Linux系统中一些与文件相关的常用命令,这些命令是日常系统管理不可或缺的工具,如果你能达到信手拈来的境界,那才证明你确实具备了RHCE的能力。下面分类作一些简要介绍。
★文件浏览
1)~
这个符号在Linux中表示当前用户的主目录,例如,你的用户名为dz,主目录为/home/dz,那么~就等价于/home/dz,显然这省事多了。常用命令搭配:cd ~和ls ~。
2) 路径(path)
操作系统中的路径无外乎两种:绝对路径和相对路径。在Linux中注意这两者的差别,特别是当运行脚本程序时,绝对路径往往是必须的。
3) pwd
它是“打印工作目录”的缩写,显然,它的作用就是显示当前所处位置的绝对路径。当你在浩如烟海的文件中迷失方向时,试试这个就好。
4) cd
cd的意思是改变目录,你想跳转到哪个目录就可用它,后面既可接绝对地址也可接相对地址。常用的有:cd ..和cd ~。
5) ls
这个命令实在用得太多了,不夸张地说,在Linux庞大的文件系统中,没有它你简直寸步难行。它的用法也不少,最基本的作用是显示当前目录下的文件,搭配不同的选项,它可以显示各类文件信息。常用的选项有:-a —— 显示隐藏文件;-l —— 显示文件完整信息;-t —— 将文件按时间排序显示;-i —— 显示i节点号等。各选项可以组合使用,这样ls可以展示出更强大的功能来。
★查找文件
1)find
find也是个十分强大的命令,它与正则表达式配合,可以实现各种各样的查找。不过,这里只介绍其最简单最常用的用法。例如,你希望查找passwd这个文件,可以使用如下命令:
#find / -name passwd
这会从根目录起搜索整个文件系统,当然,也可以直接指定某个子目录作为搜索范围。
2)locate
find的查找可能会比较费时间,特别是当系统中文件很多时。locate则不同,它可以利用已有的文件信息库,实现文件的快速定位,而且,它查找时并不需要完整的文件名。当然,文件信息库的更新一般每天一次,所以会有一些不同步的情况发生。如果你想立即更新文件信息库,可以运行一次updatedb命令。
★文件内容操作
1)cat
这只“猫”是操作文本文件内容的最基本工具。最简单的用法是cat filename,这样会显示指定文件的文本内容,当然,如果文件内容很多,你的眼睛可能来不及浏览,这时可以写成cat filename | more来一页页浏览。cat后也可接多个文件,这样你可以一次浏览多个文件。
2)more和less
more和less实际是比较近似的,都是为了阅读大文件的方便,其中more filename可以从头至尾一页页浏览(只能向后翻页);而less filename则不仅可以一页页浏览,而且可以向前和向后翻页。
3)head和tail
又是一对反义词,不过这次它们的作用也确实是相对的。head filename显示一个文件的前10行;而tail filename显示一个文件的最后10行。你还可以通过控制-nx选项来设定显示的行数(注意这中间没有空格),例如tail -n20 /etc/passwd将显示/etc/passwd文件的最后20行。
★文件的创建
1)cp
cp是个文件复制命令,它最基本的用法是cp file1 file2,表示将file1的内容复制到file2,这样实际新创建了一个file2文件(如果file2文件已存在,会提示你是否覆盖)。其实cp的作用不仅如此,它还可以复制目录(如果复制的目录包括子目录,最好采用-r选项)。
2)mv
mv是移动文件命令,相当于给文件改名,它最基本的用法是mv file1 file2,如果是跨分区移动文件,文件的i节点号可能改变。
3)ln
ln用来创建链接文件。链接文件可用来设置文件别名或共享文件,Linux系统通常包含两类链接文件:硬链接是原文件的副本,如果硬链接文件在同一分区,其i节点号是相同的,当删除了原始文件之后,链接文件仍然可用。软链接(符号链接)是原文件的重定向,实际指向的是同一个文件(类似于Windows下的快捷方式),如果删除了原始文件,软链接文件虽然存在,但失去了指向,成为垃圾文件。
4)touch
touch可用来创建一个空文件(touch filename),不过这并非touch的主要作用。
★文件过滤器
Linux系统中有丰富的命令用于过滤文件内容,简单的如sort、grep,复杂的如sed、awk等。下面分类进行简要介绍:
1) sort
sort主要用于文件内容的排序。默认情况下,sort按每行第一个字母进行排序,常用的有sort /etc/passwd,这将使其输出按用户名排序。
2) grep和egrep
grep命令用来在文件中查找某个条目,它返回含有该条目的整行,例如:grep ‘Zhang Ming’ /etc/passwd可用来查找指定的用户信息。而egrep功能更为强大,它可以采用正则表达式来实现更灵活的查找。
3) wc
wc是个小巧的工具,它的功能就是单词计数,它可返回一个文件的行数、单词数和字符数(注意其顺序),其用法为:wc filename。也可搭配选项来返回指定项目计数(-c返回字符数;-l返回行数;-w返回单词数)。
4) sed
sed是个十分强大的命令,不仅可以在文件中查找,还可以替换,它与正则表达式的搭配也使其显得更为简单灵活。要仔细研究它的用法,可以专门写上一本书,下面只举个简单的例子:如果希望将exp文件中的Windows单词替换为Linux,并将其保存为newexp文件,可以输入如下命令:
#sed ‘s/Windows/Linux/’ exp > newexp
当然,这样只是替换了文件中第一个匹配的Windows单词,如果要替换文件中所有匹配项,可以将命令修改为:
#sed ‘s/Windows/Linux/g’ exp > newexp
5) awk
awk是一个更为专业化的工具,它拥有一些数据库操作的工具。它可以按关键字查找某行并指定输出该行的某个部分,举个实用的例子,下面这条命令:
#awk ‘/Zhang/ {print $1’ /etc/passwd
可以输出/etc/passwd中每个姓Zhang的用户的用户名。
★管理命令
Linux系统管理员应该很熟悉下面两个基本管理命令:
1) ps
ps命令用处不小,它可以用来查看进程的各项信息,而且凭借其搭配的选项,可为系统运行故障提供很好的诊断工具。常见的一种用法是:当管理员希望kill掉某个进程时,却不知道它的进程号,此时可以运行ps aux | grep processname。
2) who和w
这两个命令基本类似(w显示信息更详细,而who则更为直观),都是用来查看当前登录系统的用户,这在对系统作安全性分析时很有用。
★通配符
了解通配符对文件的模糊查找大有帮助,基本的有:
通配符 |
描述 |
* |
匹配任意字符(甚至是空字符) |
? |
匹配单个字符 |
[] |
匹配某个范围,例如ls x[123]表示与x1,x2,x3匹配 |