命令简介:文件和目录管理的基本Linux命令


21世纪的第一个十年就这样过去了,在这期间Linux越来越受到广大用户的接受,这里将介绍文件和目录管理的基本Linux命令,在这里拿出来和大家分享一下。本文将帮助您掌握有关文件和目录管理的基本Linux命令。您将学习:

列出目录内容

复制、移动或删除文件和目录
重复操作多个文件和目录
使用通配符模式操作文件
使用 find 命令,根据类型、大小或时间查找和操作文件
使用 gzip 和 bzip2 压缩和解压缩文件
使用 tar、cpio 和 dd 归档文件
本文帮助您准备 Linux Professional Institute Junior Level Administration (LPIC-1) 考试 101 中主题 103 下的目标 103.2。该目标的权值为 4。

列出目录

Linux 和 UNIX® 系统中的所有文件都可以作为一个大型树型文件系统的一部分访问,这个树型文件系统的根为 /。通过挂载 分支可以将它们添加到树中,通过解除挂载 可以移除它们。挂载和解除挂载的内容将在挂载和解除挂载文件系统 一文介绍。 参见 学习 Linux,101:LPIC-1 路线图)。

列出目录条目

在本文中,我们将使用 “学习 Linux,101:文本流和过滤器” 一文中创建的文件来练习命令。如果您完成了上篇文章的练习,那么您应该在您的主目录中创建了一个目录 lpi103-2。如果还没有的话,那么可以使用系统中的另一个目录来练习本文讨论的命令。

文件和目录名可以是绝对 的,这表示名称以 / 开头,也可以相对 于当前工作目录,这表示不是以 / 开头。文件或目录的绝对路径的组成为:在 0 个或多个目录名后附加一个 /,其中每个目录名的后面都有一个 /,然后是一个最终文件名。至于相对于当前工作目录的文件或目录名,只需要将工作目录的绝对名、/ 和相对名连接在一起。例如,我们在早期文章中在我的主目录 /home/ian 中创建的目录 lpi103-2,它的完整即绝对)路径为 /home/ian/lpi103-2。您可以使用 pwd 命令显示当前工作目录的名称。此命令通常也可以用于 PWD 环境变量。清单 1 展示了 pwd 命令的使用,以及通过三种不同的方法使用 ls 命令列出此目录中的文件。


清单 1. 列出目录条目

  1. [ian@echidna lpi103-2]$ pwd  
  2. /home/ian/lpi103-2  
  3. [ian@echidna lpi103-2]$ echo "$PWD"  
  4. /home/ian/lpi103-2  
  5. [ian@echidna lpi103-2]$ ls  
  6. sedtab  text1  text2  text3  text4  text5  text6  xaa  xab  yaa  yab  
  7. [ian@echidna lpi103-2]$ ls "$PWD"  
  8. sedtab  text1  text2  text3  text4  text5  text6  xaa  xab  yaa  yab  
  9. [ian@echidna lpi103-2]$ ls /home/ian/lpi103-2  
  10. sedtab  text1  text2  text3  text4  text5  text6  xaa  xab  yaa  yab 

可以看到,您可以将一个相对或绝对目录名作为 ls 目录的参数,它将列出该目录中的内容。

列出详细内容

在一台存储设备中,文件或目录被包含到一个块block)组合中。有关文件的信息被包含在一个索引节点inode)中,其中记录如下信息:所有者、最后一次访问文件的时间、文件大小、是否为目录以及谁可以读取或写入数据。inode 编号也被称为文件序列号file serial number),并且在一个特定文件系统中是唯一的。我们可以使用 -l或 --format=long)选项来显示存储在 inode 中的某些信息。

默认情况下,ls 命令不会列出特殊文件,这些文件的文件名以点号 (.) 开头。除根目录外的所有目录都至少包含两个特殊条目:目录本身 (.) 和父目录 (..)。根目录没有父目录。 清单 2 使用 -l 和 -a 选项显示所有文件的长格式的列表,包括 . 和 .. 目录条目。


清单 2. 显示一个长目录列表

  1. [ian@echidna lpi103-2]$ ls -al  
  2. total 52  
  3. drwxrwxr-x.  2 ian ian 4096 2009-08-11 21:21 .  
  4. drwx------. 35 ian ian 4096 2009-08-12 10:55 ..  
  5. -rw-rw-r--.  1 ian ian    8 2009-08-11 21:17 sedtab  
  6. -rw-rw-r--.  1 ian ian   24 2009-08-11 14:02 text1  
  7. -rw-rw-r--.  1 ian ian   25 2009-08-11 14:27 text2  
  8. -rw-rw-r--.  1 ian ian   63 2009-08-11 15:41 text3  
  9. -rw-rw-r--.  1 ian ian   26 2009-08-11 15:42 text4  
  10. -rw-rw-r--.  1 ian ian   24 2009-08-11 18:47 text5  
  11. -rw-rw-r--.  1 ian ian   98 2009-08-11 21:21 text6  
  12. -rw-rw-r--.  1 ian ian   15 2009-08-11 14:41 xaa  
  13. -rw-rw-r--.  1 ian ian    9 2009-08-11 14:41 xab  
  14. -rw-rw-r--.  1 ian ian   17 2009-08-11 14:41 yaa  
  15. -rw-rw-r--.  1 ian ian    8 2009-08-11 14:41 yab 

在清单 2 中,第一行显示所列文件使用的磁盘块的总数52)。其余行列出了目录的条目。

第一个字段本例中为 drwxrwxr-x 或 -rw-rw-r--)告诉我们,文件是一个目录 (d) 还是一个普通文件 (-)。对于特殊文件,还会看到符号链接 (l) 或其他值例如 /dev 文件系统中的文件)。您将在创建和修改硬链接和符号链接 一文参见 学习 Linux,101:LPIC-1 路线图)中了解到有关符号链接的更多内容。类型之后是针对所有者、所有者所在组的成员、每一个成员的三组特权。这三个值分别表示用户、组、组成员是否拥有读 (r)、写 (w) 或 (x) 执行权限。诸如 setuid 之类的用户将在管理文件权限和所有权参见 学习 Linux,101:LPIC-1 路线图)一文中介绍。

下一个字段是一个数字,告诉我们文件的硬链接 的数量。我们已经介绍过,inode 包含有关文件的信息。文件的目录条目包含到文件的 inode 的硬链接或指针),因此列出的每个条目都应该至少拥有一个硬链接。目录条目对 . 条目和每个子目录条目使用另外的硬链接。因此我们可以从清单 2 中可以看到,使用 .. 表示的主目录有大量子目录,因此包含 35 个硬链接。 接下来两个字段分别为文件的所有者和所有者的主组。某些系统,例如 Red Hat 或 Fedora 系统,在默认情况下为每个用户提供单独的组。在其他系统中,所有用户可能位于一个或多个组中。

下一个字段包含文件的长度,以字节为单位。
倒数第二个字段包含最后一次修改的时间戳。
最后一个字段包含文件或目录的名称。

ls 命令的 -i 选项将显示 inode 号。您将在本文后面以及 创建和修改硬链接和符号链接参见 学习 Linux,101:LPIC-1 路线图)中再次见到有关 inode 的介绍。

多个文件

您还可以为 ls 命令指定多个参数,其中的每个名称都可能是文件或目录的名称。对于目录名,ls 命令将列出目录的内容,而不是关于目录本身的信息。在我们的示例中,假设当在父目录中列出目录时,我们希望获得有关 lpi103-2 目录条目本身的信息。命令 ls -l ../lpi103-2 将提供类似前例的列表。清单 3 将展示如何添加 -d 选项以列出有关目录条目的信息,而不是目录的内容,以及如何列出多个文件或目录的条目。

清单 3. 使用 ls -d

  1. [ian@echidna lpi103-2]$ ls -ld ../lpi103-2 sedtab xaa  
  2. drwxrwxr-x. 2 ian ian 4096 2009-08-12 15:31 ../lpi103-2  
  3. -rw-rw-r--. 1 ian ian    8 2009-08-11 21:17 sedtab  
  4. -rw-rw-r--. 1 ian ian   15 2009-08-11 14:41 xaa 

注意,lpi103-2 的修改时间不同于前一个列表中的修改时间。同样,和前一个列表相同,它与该目录中的任何文件的时间戳都不同。这是否就是您所期望的?并不是这样。然而,在撰写本文时,我创建了一些额外的的例子并删除了它们,因此目录时间戳反映了这一更改。稍后在 处理多个文件和目录 中,我们将更详细地讨论文件时间。

对输出排序

默认情况下,ls 将按字母顺序列出文件。可以使用多种选项对输出进行排序。例如,ls -t 将按照修改时间排序从最新到最旧),而 ls -lS 将生成一个按大小排序的长列表从最大到最小)。添加 -r 将反向排序。例如,使用 ls -lrt 生成一个按从最旧到最新排序的长列表。参考手册页面,了解有关排列文件和目录的其他方式。

复制、移动和删除文件

我们现在已经了解了一些创建文件的方法,但是假设我们希望复制文件、重命名文件、在文件系统层级结构中移动文件,甚至删除它们。我们使用三个简短的命令来实现这些目的。

cp
用于复制一个或多个文件或目录。您必须提供一个或多个)源 名和一个目标 名。源名或目标名可能包含一个路径说明。如果目标是一个现有目录,那么所有源将被复制到目标中。如果目录是一个不存在的目录,那么单一)源也必须为一个目录,并且源目录的副本及其内容使用目标名作为新名称。如果目标是一个文件,那么单一)源必须也为文件,而源文件的副本使用目标名作为新名,替换任何现有的具有相同名称的文件。注意,在 DOS 和 Windows 操作系统中,不会做出目标为当前目录的默认假设。

mv
用于移动 或重命名 一个或多个文件或目录。一般来说,您使用的名称将遵守与 cp 相同的规则;您可以重命名某个文件或将一组文件移动到一个新目录中。由于名称只是一个链接到某个 inode 的目录条目,因此 inode 号只有在文件被移动到另一个文件系统才会发生更改就不足为怪了,在这种情况下,移动文件看上去就类似于在复制文件之后删除它。

rm
用于删除 一个或多个文件。以上文章就是介绍有关文件和目录管理的基本Linux命令。

  1. 如何进入linux单用户模式修改root密码
  2. Ubuntu Linux系统的分区方案
  3. Linux常用软件包的安装 外设挂载 磁盘管理
  4. Linux Bash下如何实现快捷键效果
  5. 全面讲解Linux安全设定

相关内容