Linux文件系统

在本章中,我们将详细讨论Linux的文件管理。Linux中的所有数据都被组织成文件。所有文件都组织到目录中。这些目录被组织成一个树状结构,称为文件系统。

当您使用Linux时,以一种或另一种方式,您将大部分时间都花在处理文件上。本教程将帮助您了解如何创建和删除文件、复制和重命名文件、创建指向它们的链接等。

在Linux中,有三种基本类型的文件

  • 普通文件 - 普通文件是系统上包含数据、文本或程序指令的文件。在本教程中,您将了解如何处理普通文件。

  • 目录 - 目录存储特殊和普通文件。对于熟悉 Windows 或 Mac OS 的用户,Linux 目录相当于文件夹。

  • 特殊文件 - 一些特殊文件提供对硬件的访问,例如硬盘驱动器、CD-ROM 驱动器、调制解调器和以太网适配器。其他特殊文件类似于别名或快捷方式,使您可以使用不同的名称访问单个文件。

列出文件

要列出当前目录中存储的文件和目录,请使用以下命令

$ ls

这是上述命令的示例输出:

bin   data  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
boot  dev   home  lib64  media       opt  root  sbin  sys  usr

命令ls支持-l选项,它可以帮助您获取有关列出文件的更多信息。

$ ls -l
total 72
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Dec 30  2019 boot
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3000 Jun  4 22:26 dev
drwxr-xr-x.  91 root root 12288 Mar  5  2021 etc
drwxr-xr-x.   6 root root  4096 Nov  8  2020 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwx------.   2 root root 16384 Mar  7  2019 lost+found
drwxr-xr-x.   2 root root  4096 Apr 11  2018 media
drwxr-xr-x.   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.   5 root root  4096 Feb  3  2020 opt
dr-xr-xr-x  105 root root     0 Jun  4 22:26 proc
dr-xr-x---.   9 root root  4096 May 16 15:36 root
drwxr-xr-x   27 root root   940 Aug 31 17:49 run
lrwxrwxrwx.   1 root root     8 Mar  7  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x   13 root root     0 Jun  4 22:26 sys
drwxrwxrwt.   8 root root  4096 Sep 10 15:49 tmp
drwxr-xr-x.  13 root root  4096 Mar  7  2019 usr
drwxr-xr-x.  20 root root  4096 Mar 13  2020 var

这是所有有关列出的列的信息。

第一列 表示文件类型和文件的权限。 以下是所有类型文件的说明。

第二列 表示文件或目录占用的内存块数。

第三列 代表文件的所有者。 这是创建此文件的Linux用户。

第四列 代表所有者的组。 每个Linux用户都有一个关联的组。

第五列 以字节为单位表示文件大小。

第六列 表示最后一次创建或修改此文件的日期和时间。

第七列 表示文件或目录名称。

ls -l列表示例中,每个文件行第一列都以d-l开头。 这些字符表示列出的文件的类型。

前缀 描述
- 常规文件,例如ASCII文本文件、二进制可执行文件或硬链接。
b 块特殊文件。 块输入/输出设备文件,例如物理硬盘驱动器。
c 字符特殊文件。 原始输入/输出设备文件,例如物理硬盘驱动器。
d 目录文件。
l 符号链接文件。 任何常规文件上的链接。
p 命名管道。 一种进程间通信机制。
s 用于进程间通信的套接字。

元字符

元字符在Linux中有特殊的意义。 例如,*?是元字符。 我们使用*匹配0个或多个字符,问号 (?)匹配单个字符。

例如

$ ls ch*.doc

显示所有文件名以ch开头并以.doc结尾

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

在这里,*是匹配任何字符的元字符。如果要显示仅以.doc结尾的所有文件,则可以使用以下命令。

$ ls *.doc

隐藏文件

隐藏文件是第一个字符是点字符(.)的文件。 Linux程序(包括 shell)大部分使用这些文件来存储配置信息。

要列出隐藏的文件,请为ls指定-a选项。

ls -a

.         .bash_profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03

上面命令列出的结果,单点(.)表示当前目录;双点(..)表示父目录。

创建文件

您可以使用vi编辑器在任何Linux系统上创建普通文件。 你只需要执行以下命令:

$ vi filename

上面的命令将打开一个具有给定文件名的文件。 现在,按i键进入编辑模式。 进入编辑模式后,您可以开始在文件中写入内容,如下面的文本:

Unix is a computer Operating System which is capable of handling activities from multiple users at the same time. The development of Unix started around 1969 at AT&T Bell Labs by Ken Thompson and Dennis Ritchie. This tutorial gives a very good understanding on Unix.

编辑完成后,请按照以下步骤操作:

  1. esc键退出编辑模式。
  2. 同时按下两个键Shift+ZZ保存并退出文件。

编辑文件

您可以使用vi编辑器编辑现有文件。我们将简要讨论如何打开现有文件。

$ vi filename

打开文件后,您可以通过按i键进入编辑模式,然后您可以继续编辑文件。如果您想在文件中到处移动,那么首先您需要按Esc键退出编辑模式。 在此之后,您可以使用以下键在文件内移动:

  • l键移动到右侧。
  • h键移动到左侧。
  • k键在文件中向上移动。
  • j键在文件中向下移动。

因此,使用上述键,您可以将光标定位在您想要编辑的任何位置。 定位后,您可以使用i键进入编辑模式。 完成文件中的编辑后,按Esc,最后同时按两个键Shift + ZZ以完全退出文件。

显示文件内容

您可以使用cat命令查看文件的内容。下面是一个简单的例子来查看上面创建的文件的内容。

$ cat filename
Unix is a computer Operating System which is capable of handling activities from multiple users at the same time. The development of Unix started around 1969 at AT&T Bell Labs by Ken Thompson and Dennis Ritchie. This tutorial gives a very good understanding on Unix.

您可以使用cat命令的-b选项来显示行号,如下所示:

$ cat filename.txt -b
     1    x is a computer Operating System which is capable of handling activities from multiple users at the same time. 
     2    The development of Unix started around 1969 at AT&T Bell Labs by Ken Thompson and Dennis Ritchie.
     3    This tutorial gives a very good understanding on Unix.

计算文件中的字数

您可以使用wc命令获取文件中包含的行、单词和字符总数的计数。 下面是一个简单的例子来查看上面创建的文件的信息:

$ wc filename.txt
  4  45 266 filename.txt

这是所有四列的详细信息:

  • 第一列 - 表示文件中的总行数。
  • 第二列 - 表示文件中的总字数。
  • 第三列 - 表示文件中的总字节数。 这是文件的实际大小。
  • 第四列 - 表示文件名。

您可以一次提供多个文件并获取有关这些文件的信息。 以下是简单的语法:

$ wc filename1 filename2 filename3

复制文件

如查您想保存文件的副本,请使用cp命令。命令的基本语法是:

$ cp source_file destination_file

下面的示例创建一个fileName的副本,命令执行后当前文件夹下将增加一个名为copyfile文件。

$ cp filename copyfile

重命名文件

您可以使用mv命令更改文件名。 语法是:

mv old_file new_file

以下命令将文件filename重命名为newfile

mv filename newfile

mv命令会将现有文件移动到新文件中。 命令执行后,您只会在当前目录中看到newfile文件。

删除文件

要删除现有文件,请使用`rm`命令。

$ rm filename

注意 - 文件可能包含有用的信息。 始终建议在使用此删除命令时要格外小心。 最好将-i选项与rm命令一起使用。

以下是演示如何彻底删除现有文件filename的示例:

rm filename

您可以使用下面给出的命令一次删除多个文件:

$ rm filename1 filename2 filename3