6.文件及文件内容操作的命令使用

作者:码农 | 发布时间:

Linux的文件类型

  • Linux的文件类型大致可分为:
  • 普通文件:用于存放数据、程序等信息的文件。
  • 目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
  • 链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。
  • 设备文件:用于与I/O设备提供连接的一种文件,分为
  • 块设备文件:表示磁盘、光盘等
  • 字符设备文件:联系着按照字符进行操作的终端、键盘等设备。
  • 管道文件:主要用于在进程间传递数据。
  • 套接字文件 :套接字(socket)文件通常用于网络数据连接。

88ebf693b7125921

文件操作命令的使用

1.新建空文件或更新已有文件或目录的修改日期——touch命令

命令格式: touch   [选项文件或目录名列表

  • 功能:

若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。

若指定的文件不存在,则以指定的文件名创建空文件

  • 选项:

选项

功能

-d   yyyymmdd

把文件的存取或修改时间改为 yyyy年mm月dd日。

-a

只把文件的存取时间改为当前时间。

-m

只把文件的修改时间改为当前时间。

[root@dyzx ~]#touch  f1  f2  f3

[root@dyzx ~]#touch  -d  20180604  f1

2.复制(copy)文件或目录——cp命令

功能:目录或文件的复制。

命令格式cp  [选项源文件   目标文件

选项

功能

-a

通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录

-d

拷贝时保留链接。

-f

在覆盖已经存在的目标文件时不提示。

-i

在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。

-p

除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

-r

若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

-l

不作拷贝,只是链接文件。

[root@dyzx ~]# cp  /etc/hosts  ~/f1

[root@dyzx ~]# cp  -r  /etc/java/   dir2/bak 

3.移动(move)文件或目录——mv命令

命令格式: mv  [选项]  源目录或文件名  目标目录或文件名

  • 选项:

mv命令的选项与cp命令的选项类似,特有的选项有:

-b——移动后源文件或目录不删除,效果相当于复制。

  • ⑴ 移动文件或目录

若源路径与目标路径不同,则移动目录或文件。

[root@dyzx ~]# mv  f1  dir1        //将当前目录下的f1文件移到当前目录下的dir1子目录下

  • 更名文件或目录

若路径相同,仅文件名或目录名不相同,则更名文件或目录。

[root@dyzx ~]# mv  f2  f2.txt  //将当前目录下的f2文件更名为f2.txt

4.删除(remove)文件或目录——rm命令

格式: rm  [选项]  文件或目录名及路径

  • 功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多个文件或目录。
  • 选项:

选项

功能

-f

在覆盖已经存在的目标文件时不提示。

-i

在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。

-r

递归删除整个目录树。

  • 例如:若要直接删除/root/mysoft目录树,则实现命令为:

[root@dyzx ~]# rm  -ir  dir2/bak

rm:是否进入目录"dir2/bak"? y

rm:是否进入目录"dir2/bak/java"?y 

…… 

5.为文件或目录建立链接(Link)——ln命令

比较

硬链接

符号链接(软链接)

使用不带选项-s的ln命令创建

使用带选项-s的ln命令创建

只能在与源文件相同的文件系统、分区和挂载设备上创建

可跨越不同的文件系统、分区和挂载设备创建

只能针对文件创建硬链接,不能针对目录

针对文件和目录均可建立软链接

具有硬链接关系的两个文件名指向的是硬盘上的同一块存储空间

一个文件(或目录)指向另外一个文件(或目录)的文件名(或目录名),类似于Windows系统中的快捷方式

删除硬链接的任何一方文件后,另一方文件仍然有效

删除源文件或目录后,软链接文件或目录无效

相同点

对任何一方的内容进行修改都会影响到另一方

链接文件都不会将源文件复制一份,只会占用非常少量的用于存储链接信息的存储空间

命令格式: ln [选项]  被链接的源文件或目录   链接文件或目标目录

  • 选项:

-s——建立符号链接(软链接),不加该选项时建立的链接为硬链接。

-f——删除已经存在目标文件与源文件之间的链接关系。

-i——交互式地删除目标文件与源文件之间的链接关系。

  • 在当前目录下f3文件写入内容

[root@dyzx ~]# echo  'This is file!'>f3

  • 在/tmp目录下创建f3的硬链接文件test1

[root@dyzx ~]# ln  f3  /tmp/test1

  • 在/tmp目录下创建f3的符号链接文件test2

[root@dyzx ~]# ln  -s  f3  /tmp/test2 

[root@dyzx ~]# ll  f3  /tmp/test1  /tmp/test2

-rw-r--r--. 2 root root 14 5月   5 18:46 f3

-rw-r--r--. 2 root root 14 5月   5 18:46 /tmp/test1

lrwxrwxrwx. 1 root root  2 5月   5 18:47 /tmp/test2 -> f3

6.查找文件或目录——find命令

命令格式: find   [搜索的目录]   [查找条件表达式]

“查找条件表达式”主要有如下几种类型:

选项

功能

-name 文件名

查找指定名称的文件。文件名中可使用“*”及“?”通配符

-user 用户名

查找属于指定用户的文件

-group 组名

查找属于指定组的文件

-type 文件类型符

查找指定类型的文件。文件类型符有:f(普通文件)、d(目录)、b(块设备文件)、c(字符设备文件)、l(符号链接文件)、p(管道文件)等

-size [+|-]n[k|M|G]

根据文件的大小查找文件。其中“n”是文件的大小,符号“+n”表示查找大小大于n的文件; “-n”表示查找大小小于n的文件;k、M、G分别表示文件单位中的千字节、兆字节和千兆字节

-perm 权限值

根据文件的权限查找文件。其中“权限值”是以八进制的形式表示的访问权限(文件权限的有关概念和表示方法请参见项目4中的介绍)

需要同时使用多个查找条件时,各表达式之间可以使用逻辑运算符“-a”、”-o”,分别表示而且(and)、或者(or)

  • 在/etc/目录下查找文件名以“.conf”结尾的文件:

[root@dyzx ~]# find  /etc   -name  "*.conf"

  • 在计算机上查找由root用户和mail组拥有的文件:

[root@dyzx ~]# find  /  -user  root  -group  mail

  • 在/boot目录中查找大小大于2MB且文件名以“vm”开头的文件:

[root@dyzx ~]# find  /boot  -size  +2M  -a  -name  "vm*"

文件内容操作命令的使用

1.查看文本文件的内容——cat命令

命令格式:cat   [选项]    文件名列表

说明:文件名可使用通配符

  • 常用选项:

-n——对输出内容中的所有行标注行号。

-b——对输出内容中的非空行标注行号。

  • 举例:

[root@dyzx ~]# cat  /etc/os-release       //显示/etc/os-release文件的内容(系统的发行版本)

[root@dyzx ~]# cat  /proc/filesystems          //查看本系统所能支持的文件系统类型

2.分页查看文件内容——more和less命令

命令格式: more | less   [选项]   文件名

  • 常用选项:

-数字——仅适用于more命令,用来指定分页显示时每页的行数。

+num——指定从文件的第num行开始显示。

-c——从顶部清屏然后显示文件内容。

-N——仅适用于less命令,其作用是在每行前添加输出行号。

  • 交互操作方法:

按Enter键向下逐行滚动

按空格键向下翻一屏、按b键向上翻一屏

文件末尾时more会自动退出,less 按q键退出

[root@dyzx ~]#more  /etc/idmapd.conf  //以分页方式显示install.log文件的内容

⒊查看文件开头或末尾的部分内容——head和tail命令

命令格式: head | tail   [选项]    文件名

  • 常用选项有:

-num——指定需要显示文件多少行的内容,若不指定,默认只显示十行。

-f——使tail不停地去读取和显示文件最新的内容, 以监视文件内容的变化。这样有实时监视的效果。

[root@dyzx ~]#head  /etc/idmapd.conf  //显示文件的前10行内容

[root@dyzx ~]# tail  -20  /etc/passwd  //显示文件的后20行内容

tail命令更多的用于查看系统日志文件,以便于观察重要的系统消息,特别是结合使用-f选项,tail会自动实时地把打开文件中的新消息显示到屏幕上,从而跟踪日志文件末尾的内容变化,直至按【Ctrl+C】键终止显示和跟踪。

[root@dyzx ~]# tail  -f  /var/log/messages

4.检索、过滤文件内容——grep命令

功能:在指定的文件中查找并显示含有指定字符串的行。

命令格式:grep  [选项要查找的字符串或条件表达式  被查找的文件名

  • 选项:

-i——查找时忽略大小写

-v——反转查找,输出与查找条件不相符的行

  • 在grep命令中,可以直接指定关键字串作为查找条件,也可以使用复杂的条件表达式,例如:字符“^”表示行的开始;字符“$”表示行的结尾;如果查找的字符串中带有空格,可以用单引号或双引号括起来。又如: "^read"表示以read开始;"read$"表示以read结束;"^$"表示空行。

[root@dyzx ~]# grep  ftp  /etc/passwd  //在文件passwd中查找包含“ftp”的行

[root@dyzx ~]# grep  "^user1$"  /etc/passwd  //在文件中搜素只含“user1”5个字符的行