- Linux从初学到精通
- 张勤 鲜学丰等编著
- 657字
- 2020-08-27 03:01:38
文件操作命令
建立目录是为了有效地分类管理文件,在学习了目录相关的操作命令后,下面学习在Linux中常用的一些与文件相关的命令。
4.3.1 touch:改变文件或目录时间
touch命令用于改变文件或目录的访问时间及修改时间,该命令语法如下。
touch [-am] [-t <日期时间>] [-r <参考文件>] [目录|文件…]
常用指数:
常用选项:
● 目录|文件…:指定要改变时间的文件或目录。
● -a:只修改访问时间。
● -m:只修改修改时间。
● -t<日期时间>:使用指定日期时间,而非系统当前时间。指定日期时间格式依次是“年份、月份、日期、时间、分钟、秒数”,如“20121231235959”表示2012年12月31日23点59分59秒。
● -r<参考文件>:把指定文件的日期时间改变为参考文件的日期时间。
使用touch命令可以改变文件或目录的时间,如果不指定日期时间及使用系统当前日期时间。如果指定的文件不存在,则会建立一个空文件。下面看几个touch命令的例子。
● 建立一个名为charles的空文件。
[root@srv ~]# touch ~/charles
● 将/etc/fstab文件的读取时间修改为当前时间。
[root@srv ~]# touch -a /etc/fstab
4.3.2 file:识别文件类型
在Linux系统中文件的扩展名只是为了方便使用者识别文件的类型,对系统本身没有任何意义。这点与Windows是完全不一样的。当用户不清楚文件的类型时,file命令可以识别文件的类型,该命令语法如下。
file [-bcLz] [-f <文件名>] 文件|目录
常用指数:
常用选项:
● 文件|目录:需要识别的文件或目录。
● -b:显示识别结果时,不显示文件名称。
● -c:详细显示命令执行过程。
● -L:直接显示符号链接文件指向的文件类型。
● -z:尝试去解读压缩文件的内容。
● -f <文件名>:指定一个文件,该文件中记录了需要file命令识别的文件列表。在该文件中一行一个文件名。
file命令在识别文件类型时,如果是文本文件则会显示“ASCII”等信息;如果是执行则会显示“Shell Script”等信息;如果是链接文件则会显示链接指向的文件等信息。下面看几个file命令的例子。
● 显示/etc/fstab文件的类型。
[root@srv ~]# file /etc/fstab
/etc/fstab: ASCII text
● 显示jack.tar.gz文件的类型,但不显示文件名。
[root@srv ~]# file -b jack.tar.gz
gzip compressed data, from UNIX, last modified: Fri Feb 5 21:01:002010
4.3.3 cp:复制文件或目录
cp命令用于将目录或文件复制到另一个目录,该命令语法如下。
cp [-abdfilprsuv] [-S <备份字符串>] 源目录或文件… 目标目录或文件
常用指数:
常用选项:
● -a:相当于-pdr三个选项。
● -b:在覆盖目标文件时,先备份目标文件。备份的文件会在文件名尾加上一个备份字符串。
● -S<备份字符串>:指定备份字符串。
● -d:如果源文件是链接文件,则复制链接文件而不是其指向的文件。
● -f:如果有重复或其他疑问时,不会询问用户,而强制复制。
● -i:如果目标已经存在,在覆盖时会先询问用户。
● -l:建立源文件的硬链接,而不是复制源文件。
● -p:复制时保留源文件或目录的属性。
● -r:递归持续复制,该选项用于目录。
● -s:建立源文件的符号链接,而不是复制源文件。
● -u:只有目标文件比源文件新时才复制。
● -v:显示命令执行过程。
提示
在RHEL 5.x中为“cp-i”定义了一个别名“cp”,也就是说,在RHEL 5.x系统中使用“cp”命令时实际上就已经包括了“-i”选项。
cp命令用于复制文件或目录,如果同时指定两个以上的文件或目录,而且最后的目标目录已存在,则会把前面指定的所有文件或目录复制到该目标目录中。下面看几个cp命令的例子。
● 将/etc/fstab文件复制到当前用户家目录。
[root@srv ~]# cp /etc/fstab ~
● 将/etc/目录复制到当前用户家目录,如果需要复制的是一个目录一定要使用“-r”选项。如果/etc/bak目录不存在,系统会自动建立。
[root@srv ~]# cp -r /etc/ /etcbak
● 将/boot/grub/grub.conf文件复制到本地,并将文件名改为grub.conf.bak。
[root@srv ~]# cp /boot/grub/grub.conf ./grub.conf.bak
● 将/root目录所有以“.docx”结尾的文件复制到/root/doc目录。
[root@srv ~]# cp /root/*.docx /root/doc
4.3.4 rm:删除文件或目录
rm命令用于删除文件或目录,该命令语法如下。
rm [-firv] 文件或目录
常用指数:
常用选项:
● 文件或目录:要删除的文件或目录。
● -f:强制删除。
● -i:在删除前会询问用户。
● -r:递归,一般用于目录的删除。
● -v:显示命令执行过程。
提示
在RHEL 5.x中为“rm-i”定义了一个别名“rm”,也就是说,在RHEL 5.x系统中使用“rm”命令时实际上就已经包括了“-i”选项。
在使用rm删除时,如果是删除目录必须使用“-r”选项。下面看几个rm命令的例子。
● 删除~/fstab文件。
[root@srv ~]# rm ~/fstab rm: remove regular file `/root/fstab'? y
● 删除~/fringe目录,使用强制删除(不会要求用户确认)。
[root@srv ~]# rm -rf /fringe
● 删除/root下所有以“.docx”结尾的文件和目录。
[root@srv ~]# rm -rf /root/*.docx
4.3.5 mv:移动或更名现有的文件或目录
mv命令用于移动或更名现有的文件或目录,该命令语法如下。
mv [-fiub] [-S <备份字符串>] 源目录或文件… 目标目录或文件
常用指数:
常用选项:
● -f:强制删除。
● -b:在覆盖目标文件时,先备份目标文件。备份的文件会在文件名尾加上一个备份字符串。
● -S<备份字符串>:指定备份字符串。
● -i:在覆盖目标文件前会询问用户。
● -u:只有目标文件比源文件新时才复制。
提示
在RHEL中为“mv -i”定义了一个别名“mv”,也就是说,在RHEL 5.x系统中使用“mv”命令时实际上就已经包括了“-i”选项。
mv用于移除源文件或目录到目标目录,如果源目录或文件和目标目录或文件相同则将源目录或文件改名为目标目录或文件。下面看几个mv命令的例子。
● 将/abc移动到当前用户家目录。
[root@srv ~]# mv /abc ~
● 将jack.tar.gz改名为jack.tgz。
[root@srv ~]# mv jack.tar.gz jack.tgz
4.3.6 ln:链接文件或目录
ln命令用于链接文件或目录,该命令语法如下。
ln [-bdfis] [-S <备份字符串>] 源文件或目录 [链接文件]
常用指数:
常用选项:
● -b:在覆盖目标文件时,先备份目标文件。备份的文件会在文件名尾加上一个备份字符串。
● -S<备份字符串>:指定备份字符串。
● -d:建立硬链接文件。
● -s:建立符号链接文件。
ln命令用于建立文件或目录的链接文件,在Linux中链接文件分为硬链接(Hard Link)文件和符号链接(Symbolic Link)文件两种。
提示
符号链接也被称为软链接(Soft Link)。
在Linux系统中内核为每一个新创建的文件分配一个inode(i节点),每个文件都有一个唯一的inode号。文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存在,从而实现文件的快速访问。链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。硬链接是一个指针,指向文件inode号,系统并不为硬链接重新分配inode。尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:不可以在不同文件系统的文件间建立链接;只有root才可以为目录创建硬链接。符号连接有点类似于Windows的快捷方式,符号连接实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含有另一文件的位置信息。当源文件被删除后,硬链接文件同样可以被使用,而符号链接文件将无法使用。符号链接会显示为“链接文件名->指向的实际文件”,而硬链接通过文件名无法判断,如图4-3所示。
图4-3 硬链接及符号链接
下面看几个ln命令的例子。
● 为/etc/fstab文件在当前目录建立一个符号连接文件,文件名还是fstab。
[root@srv ~]# ln -s /etc/fstab
● 为/boot/grub/目录在当前目录建立一个符号链接文件,文件名是gb。
[root@srv ~]# ln -s /boot/grub gb