3.1.2 文件的相关操作

Linux遵循一切皆文件的规则,对Linux进行配置时,在很大程度上就是处理文件的过程,所以掌握文件的相关操作是非常有必要的。本节将介绍如何创建、删除、移动、重命名、查看文件,以及不同系统之间进行格式转换。后面的章节在具体介绍Linux编辑器的时候将会讲到如何编辑文件。

1.创建文件:touch

在Linux中创建一个文件,只需要进入相关目录,然后使用touch命令即可,参数为想要创建文件的文件名。比如说,在/tmp目录中创建一个test.txt文件:


  1. [root@localhost ~]# cd /tmp
  2. [root@localhost tmp]# touch test.txt #
  3. 创建test.txt
  4. [root@localhost tmp]# ls
  5. l #
  6. 当前目录确实有了test.txt
  7. total 0
  8. -rw-r--r-- 1 root root 0 Jan 2 05:54 test.txt

事实上,如果在使用touch命令创建文件的时候,当前目录中已经存在了这个文件,那么这个命令不会对当前的同名文件造成影响,因为它并不会修改文件的内容,虽然实际上touch确实对该文件做了“修改”——它会更新文件的创建时间属性。比如说,在当前目录下我们继续使用touch test.txt命令,然后观察该文件时间属性部分的变化:


  1. [root@localhost tmp]# touch test.txt #
  2. 再次执行touch
  3. 命令
  4. [root@localhost tmp]# ls -l
  5. total 0
  6. -rw-r--r-- 1 root root 0 Jan 2 06:03 test.txt #
  7. 注意时间变化了

就会发现创建时间已经被修改了。

2.删除文件:rm

该命令是remove的简写,意思是“移除”。后面的参数是想要删除的文件的文件名,按回车键后系统会询问是否确认删除,这时候输入“y”然后按回车键即可。这里“y”的含义是yes,如果你现在反悔了,输入“n”后按回车键,将不会删除这个文件。


  1. [root@localhost tmp]# rm test.txt
  2. rm: remove regular empty file `test.txt'? y

3.移动或重命名文件:mv

该命令是move的简写,意思是“移动”。后面需要跟两个参数,第一个参数是要被移动的文件,第二个参数是移动到的目录。以下用一个示例来演示该命令的用法:


  1. [root@localhost ~]# cd tmp #
  2. 进入/tmp
  3. 目录
  4. [root@localhost tmp]# ls #
  5. 看一下目录中有什么
  6. [root@localhost tmp]# #
  7. 确认什么都没有
  8. [root@localhost tmp]# touch test.txt #
  9. 创建一个文件
  10. [root@localhost tmp]# ls #
  11. 再看一下目录内容
  12. test.txt #
  13. 确认文件已经创建成功了
  14. [root@localhost tmp]# ls mnt #
  15. 看一下mnt
  16. 目录中有什么
  17. [root@localhost tmp]# #
  18. 什么都没有
  19. [root@localhost tmp]# mv test.txt mnt #
  20. 移动文件到/mnt
  21. [root@localhost tmp]# ls mnt #
  22. 再看一下mnt
  23. 中有什么
  24. test.txt #
  25. 文件移动到/mnt
  26. 中了
  27. [root@localhost tmp]# ls #
  28. 看一下当前目录中的内容
  29. [root@localhost tmp]# #
  30. 文件已经被移走了

除了能移动文件,该命令还能重命名文件。接上例继续演示重命名文件的用法:


  1. [root@localhost ~]# cd mnt #
  2. 进入/mnt
  3. 目录
  4. [root@localhost tmp]# ls #
  5. 看一下当前目录中有什么
  6. test.txt #
  7. 这是刚刚移动过来的文件
  8. [root@localhost mnt]# mv test.txt test.doc #
  9. 修改了文件名
  10. [root@localhost mnt]# ls
  11. test.doc #
  12. 确认文件名修改成功

上面两个例子分别演示了如何移动文件和重命名文件。其实mv还可以在移动文件的同时重命名文件。接着上例继续演示,如下所示:


  1. [root@localhost mnt]# mv test.doc tmptest.txt
  2. #
  3. test.doc
  4. 移动到/tmp
  5. 目录下,同时重命名为test.txt
  6. [root@localhost mnt]# ls tmp
  7. test.txt #
  8. 检查一下,已重命名

这里需要注意的是,Linux下的目录也是一种“文件”,所以本节中所讲解的mv命令也同样适用于对目录的操作。

4.查看文件:cat

该命令是concatenate的简写,用户查看文件内容,后面跟上要查看的文件名即可。


  1. [root@localhost ~]# cd #
  2. 该命令将进入root
  3. 的家目录中
  4. [root@localhost ]# cat install.log #
  5. 显示该文件内容
  6. Installing setup-2.5.58-7.el5.noarch
  7. warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
  8. Installing filesystem-2.4.0-3.el5.i386
  9. Installing basesystem-8.0-5.1.1.el5.centos.noarch
  10. ......(
  11. 略去内容)......
  12. [root@localhost ]# cat -n install.log #
  13. 加上-n
  14. 参数可以显示每行的行号
  15. 1 Installing setup-2.5.58-7.el5.noarch
  16. 2 warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
  17. 3 Installing filesystem-2.4.0-3.el5.i386
  18. 4 Installing basesystem-8.0-5.1.1.el5.centos.noarch
  19. ......(
  20. 略去内容)......

5.查看文件头:head

有时候文件非常大,使用cat命令显示出来的内容太多,而我们可能并不想查看所有内容,只是想看看文件开始部分的内容,这时候就可以使用head命令了,后面跟上需要查看的文件名就可以了。默认情况下,head将显示该文件前10行的内容。继续拿install.log这个文件举例子,如下所示:


  1. [root@localhost ~]# head install.log
  2. Installing setup-2.5.58-7.el5.noarch
  3. warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
  4. Installing filesystem-2.4.0-3.el5.i386
  5. Installing basesystem-8.0-5.1.1.el5.centos.noarch
  6. Installing tzdata-2010e-1.el5.noarch
  7. Installing glibc-common-2.5-49.i386
  8. Installing cracklib-dicts-2.8.9-3.3.i386
  9. Installing nash-5.1.19.6-61.i386
  10. Installing rmt-0.4b41-4.el5.i386
  11. Installing centos-release-notes-5.5-0.i386

也可以使用-n参数指定显示的行数,如下所示:


  1. [root@localhost ~]# head -n 20 install.log
  2. Installing setup-2.5.58-7.el5.noarch
  3. warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
  4. Installing filesystem-2.4.0-3.el5.i386
  5. Installing basesystem-8.0-5.1.1.el5.centos.noarch
  6. Installing tzdata-2010e-1.el5.noarch
  7. Installing glibc-common-2.5-49.i386
  8. Installing cracklib-dicts-2.8.9-3.3.i386
  9. Installing nash-5.1.19.6-61.i386
  10. Installing rmt-0.4b41-4.el5.i386
  11. Installing centos-release-notes-5.5-0.i386
  12. Installing 1:termcap-5.5-1.20060701.1.noarch
  13. Installing mailcap-2.1.23-1.fc6.noarch
  14. Installing dump-0.4b41-4.el5.i386
  15. Installing gnu-efi-3.0c-1.1.i386
  16. Installing rootfiles-8.1-1.1.1.noarch
  17. Installing specspo-13-1.el5.centos.noarch
  18. Installing man-pages-2.39-15.el5_4.noarch
  19. Installing words-3.0-9.1.noarch
  20. Installing libgcc-4.1.2-48.el5.i386
  21. Installing glibc-2.5-49.i686

6.查看文件尾:tail

tail命令与head命令非常类似。当文件很大时,可以使用该命令查看文件尾部的内容,默认情况下tail也是只显示文件的最后10行内容,同样可以使用-n参数指定显示的行数。这里不具体举例子,大家参考上面head的用法就知道如何使用了。

但是tail还有个更实用的功能,就是可以动态地查看文件尾。这对查看一些不断改变的文件来说非常有用。比如说,系统中会有很多日志文件,这些文件是会随时变化的(具体地说,就是随时会有新的日志写入),要动态地查看这些文件,使用-f参数就可以做到。举个例子,varlog/message文件是默认的系统日志文件,系统在运行中将会有大量的日志写入这个文件中,可以使用如下的命令,一旦有新的日志内容写入,该命令会立即将新内容显示出来。


  1. [root@localhost~]#tail -f varlog/messages

7.文件格式转换:dos2unix

该命令是DOS to UNIX的简写,也许你从字面上可以大概猜到它的作用,就是可以把DOS格式的文本文件转变成UNIX下的文本文件。之所以有这样的需求是因为Linux和Windows系统是可以通过文件共享的方式共享文件的,当把Windows下的文本文件移动到Linux下时,会由于系统之间文本文件的换行符不同而造成文件在Linux下的读写操作有问题。该命令的使用方式非常简单直接,后面跟上需要转换的文件名即可。