3.1.2 文件的相关操作
Linux遵循一切皆文件的规则,对Linux进行配置时,在很大程度上就是处理文件的过程,所以掌握文件的相关操作是非常有必要的。本节将介绍如何创建、删除、移动、重命名、查看文件,以及不同系统之间进行格式转换。后面的章节在具体介绍Linux编辑器的时候将会讲到如何编辑文件。
1.创建文件:touch
在Linux中创建一个文件,只需要进入相关目录,然后使用touch命令即可,参数为想要创建文件的文件名。比如说,在/tmp目录中创建一个test.txt文件:
- [root@localhost ~]# cd /tmp
- [root@localhost tmp]# touch test.txt #
- 创建test.txt
- [root@localhost tmp]# ls
- –l #
- 当前目录确实有了test.txt
- total 0
- -rw-r--r-- 1 root root 0 Jan 2 05:54 test.txt
事实上,如果在使用touch命令创建文件的时候,当前目录中已经存在了这个文件,那么这个命令不会对当前的同名文件造成影响,因为它并不会修改文件的内容,虽然实际上touch确实对该文件做了“修改”——它会更新文件的创建时间属性。比如说,在当前目录下我们继续使用touch test.txt命令,然后观察该文件时间属性部分的变化:
- [root@localhost tmp]# touch test.txt #
- 再次执行touch
- 命令
- [root@localhost tmp]# ls -l
- total 0
- -rw-r--r-- 1 root root 0 Jan 2 06:03 test.txt #
- 注意时间变化了
就会发现创建时间已经被修改了。
2.删除文件:rm
该命令是remove的简写,意思是“移除”。后面的参数是想要删除的文件的文件名,按回车键后系统会询问是否确认删除,这时候输入“y”然后按回车键即可。这里“y”的含义是yes,如果你现在反悔了,输入“n”后按回车键,将不会删除这个文件。
- [root@localhost tmp]# rm test.txt
- rm: remove regular empty file `test.txt'? y
3.移动或重命名文件:mv
该命令是move的简写,意思是“移动”。后面需要跟两个参数,第一个参数是要被移动的文件,第二个参数是移动到的目录。以下用一个示例来演示该命令的用法:
- [root@localhost ~]# cd tmp #
- 进入/tmp
- 目录
- [root@localhost tmp]# ls #
- 看一下目录中有什么
- [root@localhost tmp]# #
- 确认什么都没有
- [root@localhost tmp]# touch test.txt #
- 创建一个文件
- [root@localhost tmp]# ls #
- 再看一下目录内容
- test.txt #
- 确认文件已经创建成功了
- [root@localhost tmp]# ls mnt #
- 看一下mnt
- 目录中有什么
- [root@localhost tmp]# #
- 什么都没有
- [root@localhost tmp]# mv test.txt mnt #
- 移动文件到/mnt
- 下
- [root@localhost tmp]# ls mnt #
- 再看一下mnt
- 中有什么
- test.txt #
- 文件移动到/mnt
- 中了
- [root@localhost tmp]# ls #
- 看一下当前目录中的内容
- [root@localhost tmp]# #
- 文件已经被移走了
除了能移动文件,该命令还能重命名文件。接上例继续演示重命名文件的用法:
- [root@localhost ~]# cd mnt #
- 进入/mnt
- 目录
- [root@localhost tmp]# ls #
- 看一下当前目录中有什么
- test.txt #
- 这是刚刚移动过来的文件
- [root@localhost mnt]# mv test.txt test.doc #
- 修改了文件名
- [root@localhost mnt]# ls
- test.doc #
- 确认文件名修改成功
上面两个例子分别演示了如何移动文件和重命名文件。其实mv还可以在移动文件的同时重命名文件。接着上例继续演示,如下所示:
- [root@localhost mnt]# mv test.doc tmptest.txt
- #
- 将test.doc
- 移动到/tmp
- 目录下,同时重命名为test.txt
- [root@localhost mnt]# ls tmp
- test.txt #
- 检查一下,已重命名
这里需要注意的是,Linux下的目录也是一种“文件”,所以本节中所讲解的mv命令也同样适用于对目录的操作。
4.查看文件:cat
该命令是concatenate的简写,用户查看文件内容,后面跟上要查看的文件名即可。
- [root@localhost ~]# cd #
- 该命令将进入root
- 的家目录中
- [root@localhost ]# cat install.log #
- 显示该文件内容
- Installing setup-2.5.58-7.el5.noarch
- warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
- Installing filesystem-2.4.0-3.el5.i386
- Installing basesystem-8.0-5.1.1.el5.centos.noarch
- ......(
- 略去内容)......
- [root@localhost ]# cat -n install.log #
- 加上-n
- 参数可以显示每行的行号
- 1 Installing setup-2.5.58-7.el5.noarch
- 2 warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
- 3 Installing filesystem-2.4.0-3.el5.i386
- 4 Installing basesystem-8.0-5.1.1.el5.centos.noarch
- ......(
- 略去内容)......
5.查看文件头:head
有时候文件非常大,使用cat命令显示出来的内容太多,而我们可能并不想查看所有内容,只是想看看文件开始部分的内容,这时候就可以使用head命令了,后面跟上需要查看的文件名就可以了。默认情况下,head将显示该文件前10行的内容。继续拿install.log这个文件举例子,如下所示:
- [root@localhost ~]# head install.log
- Installing setup-2.5.58-7.el5.noarch
- warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
- Installing filesystem-2.4.0-3.el5.i386
- Installing basesystem-8.0-5.1.1.el5.centos.noarch
- Installing tzdata-2010e-1.el5.noarch
- Installing glibc-common-2.5-49.i386
- Installing cracklib-dicts-2.8.9-3.3.i386
- Installing nash-5.1.19.6-61.i386
- Installing rmt-0.4b41-4.el5.i386
- Installing centos-release-notes-5.5-0.i386
也可以使用-n参数指定显示的行数,如下所示:
- [root@localhost ~]# head -n 20 install.log
- Installing setup-2.5.58-7.el5.noarch
- warning: setup-2.5.58-7.el5: Header V3 DSA signature: NOKEY, key ID e8562897
- Installing filesystem-2.4.0-3.el5.i386
- Installing basesystem-8.0-5.1.1.el5.centos.noarch
- Installing tzdata-2010e-1.el5.noarch
- Installing glibc-common-2.5-49.i386
- Installing cracklib-dicts-2.8.9-3.3.i386
- Installing nash-5.1.19.6-61.i386
- Installing rmt-0.4b41-4.el5.i386
- Installing centos-release-notes-5.5-0.i386
- Installing 1:termcap-5.5-1.20060701.1.noarch
- Installing mailcap-2.1.23-1.fc6.noarch
- Installing dump-0.4b41-4.el5.i386
- Installing gnu-efi-3.0c-1.1.i386
- Installing rootfiles-8.1-1.1.1.noarch
- Installing specspo-13-1.el5.centos.noarch
- Installing man-pages-2.39-15.el5_4.noarch
- Installing words-3.0-9.1.noarch
- Installing libgcc-4.1.2-48.el5.i386
- Installing glibc-2.5-49.i686
6.查看文件尾:tail
tail命令与head命令非常类似。当文件很大时,可以使用该命令查看文件尾部的内容,默认情况下tail也是只显示文件的最后10行内容,同样可以使用-n参数指定显示的行数。这里不具体举例子,大家参考上面head的用法就知道如何使用了。
但是tail还有个更实用的功能,就是可以动态地查看文件尾。这对查看一些不断改变的文件来说非常有用。比如说,系统中会有很多日志文件,这些文件是会随时变化的(具体地说,就是随时会有新的日志写入),要动态地查看这些文件,使用-f参数就可以做到。举个例子,varlog/message文件是默认的系统日志文件,系统在运行中将会有大量的日志写入这个文件中,可以使用如下的命令,一旦有新的日志内容写入,该命令会立即将新内容显示出来。
- [root@localhost~]#tail -f varlog/messages
7.文件格式转换:dos2unix
该命令是DOS to UNIX的简写,也许你从字面上可以大概猜到它的作用,就是可以把DOS格式的文本文件转变成UNIX下的文本文件。之所以有这样的需求是因为Linux和Windows系统是可以通过文件共享的方式共享文件的,当把Windows下的文本文件移动到Linux下时,会由于系统之间文本文件的换行符不同而造成文件在Linux下的读写操作有问题。该命令的使用方式非常简单直接,后面跟上需要转换的文件名即可。