Unix 简明教程
Linux - File Management
What is File Management in Linux?
当我们使用 Linux 时,我们需要许多文本和二进制文件,例如所有 Linux 程序都以二进制文件形式出现,而它们的源代码以文本文件形式出现。作为操作系统用户,我们还会创建许多文件来管理我们的日常活动。用户生成的文件包括 word 文件、excel 文件、power point 演示文稿和许多其他文本文件。
在本章中,我们将详细讨论 Linux/Unix 中的文件管理。Linux 中的所有数据都组织到文件中,所有这些文件都组织到不同的目录中。这些目录组织成称为文件系统的树形结构。
Types of Files in Linux
因此,Linux 中的一切都是 file 。因此,当您使用 Linux 时,无论哪种方式,您都会将大部分时间花在文件处理上。本教程将帮助您了解如何创建和删除文件、复制和重命名文件、创建到它们的链接等。
在 Linux 中,有三种基本类型的文件 −
-
Ordinary Files − 普通文件是系统上的一个文件,其中包含数据、文本或程序指令。在本教程中,您将了解如何处理普通文件。
-
Directories − 目录存储特殊文件和普通文件。对于熟悉 Windows 或 Mac OS 的用户,Unix 目录等同于文件夹。
-
Special Files − 某些特殊文件提供对硬件的访问,例如硬盘驱动器、CD-ROM 驱动器、调制解调器和以太网适配器。其他特殊文件类似于别名或快捷方式,使您可以使用不同的名称访问单个文件。
File Management Commands in Linux
让我们学习最重要的 Linux 命令,列出可用的文件、创建和删除文件、复制和重命名文件、创建到文件的链接等。
Listing Files
要列出 Linux 系统中当前目录中存储的所有文件和目录,请使用以下命令 −
$ ls
以下是要在命令中列出示例输出 −
$ls
bin hosts lib res.03
ch07 hw1 pub test_results
ch07.bak hw2 res.01 users
docs hw3 res.02 work
命令 ls 支持 -l 选项,它将帮助您获取有关已列出文件详细信息 −
$ls -l
total 1962188
drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml
-rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg
drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ
drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root 4096 Nov 25 2007 usr
drwxr-xr-x 2 200 300 4096 Nov 25 2007 webthumb-1.01
-rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php
-rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar
-rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid
-rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf
drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3
$
以下是所有列出列的信息 −
-
First Column − 表示文件类型和文件上的权限。以下是所有类型的文件说明。
-
Second Column − 表示文件或目录占用的内存块数。
-
Third Column − 表示文件所有者。这是创建此文件的 Linux 用户。
-
Fourth Column − 代表所有者群组。每个 Linux 用户都有一个相关群组。
-
Fifth Column − 以字节为单位代表文件大小。
-
Sixth Column − 代表创建或最后修改此文件的时间与日期。
-
Seventh Column − 代表文件或目录名称。
在 ls -l 列表示例中,文件行的开头是 d 、 - 或 l 。这些字符表示列出的文件类型。
Prefix |
Description |
- |
Regular file ,例如 ASCII 文本文件、二进制可执行文件或硬链接。 |
b |
Block special file 。块输入/输出设备文件,例如物理硬盘。 |
c |
Character special file 。原始输入/输出设备文件,例如物理硬盘。 |
d |
*目录 * 包含其他文件和目录的列表。 |
l |
Symbolic link file 。在任何常规文件上链接。 |
p |
Named pipe 。用于进程间通信的机制。 |
s |
Socket ,用于进程间通信。 |
Metacharacters in Linux
Linux 元字符在 Unix 中有特殊含义。例如, * and ? are metacharacters. We use * 用于匹配 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
Hidden Files in Linux
Linux 和 Unix 有一些对用户不可见隐藏文件。这些文件的名称以点或句点字符 (.) 开头。Linux 程序(包括 shell)使用大多数这些文件来存储系统配置信息。
隐藏文件的一些常见示例包括文件 −
File |
Description |
.profile |
Bourne shell (sh) 初始化脚本 |
.kshrc |
Korn shell (ksh) 初始化脚本 |
.cshrc |
C shell(csh)初始化脚本 |
.rhosts |
远程shell配置文件 |
为了列出这些隐藏(或不可见的)文件,我们必须使用@+s1+命令指定@+s0+选项-
$ ls -a
. .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
$
-
@s2 - 此项表示当前的目录。
-
@s3 - 此项表示父目录。
Creating Files in Linux
Linux系统中已预装了许多文件编辑器。我最喜欢的文件编辑器是@s4+或简称@+s5,我用它在Ubuntu Linux系统上创建和更新不同的文本文件。
让我们使用@+s6+编辑器在任何Linux系统上创建普通文件。您只需要给如下命令:
$ vi filename
以上命令将打开带有给定文件名的文件。现在,按@+s7+键进入编辑模式。一旦进入编辑模式,您可以开始在文件中编写您的内容。
让我们在我们的文本文件中写下以下内容:
This is a text file in Linux....I created it using vi text editor.....
I'm going to save this content in this file.
一旦您在文件中编写完内容,执行以下步骤:
-
按下@+s8+键退出编辑模式。
-
一起按下两个键@s9 键完全退出文件。
您现在将在当前目录中使用@+s10+创建文件。
$ vi filename
$
Editing Files in Linux
您可以使用@+s11+编辑器编辑现有文件。我们将简要讨论如何打开现有文件:
$ vi filename
一旦打开文件,您可以按@+s12+键进入编辑模式,然后您可以继续编辑文件。如果您想在文件内四处移动,那么首先您需要按@+s13+键退出编辑模式。此后,您可以使用以下键在文件中移动:
-
@+s14+键向右侧移动。
-
@+s15+键向左侧移动。
-
@+s16+键在文件内向上移动。
-
@+s17+键在文件内向下移动。
使用上述按键,你可以将光标置于任意位置以进行编辑。定位后,你可以使用 i 键进入编辑模式。完成后,在文件内按 Esc ,最后同时按 Shift + ZZ 两个键以完全退出该文件。
Display Content of a File
你可以使用 cat 命令查看文件的内容。以下是一个查看上述创建的文件内容的简单示例:
$ cat filename
This is a text file in Linux....I created it using vi text editor.....
I'm going to save this content in this file.
$
你可以使用 -b 选项和 cat 命令一起显示行号,如下所示:
$ cat -b filename
1 This is a text file in Linux....I created it using vi text editor.....
2 I'm going to save this content in this file.
$
Counting Words in a File
你可以使用 wc 命令获取文件包含的行数、单词数和字符数。以下是一个查看上述创建的文件信息的简单示例:
$ wc filename
2 22 116 filename
$
以下是四个列的详细信息:
-
First Column - 表示文件中总行数。
-
Second Column - 表示文件中总单词数。
-
Third Column - 表示文件中的总字节数。这是实际的文件大小。
-
Fourth Column - 表示文件名称。
你可以给出多个文件并一次获取这些文件的信息。以下是简单的语法:
$ wc filename1 filename2 filename3
Copying Files in Linux
要复制现有文件,请使用 cp Linux 命令。该命令的基本语法是:
$ cp source_file destination_file
以下是创建 filename 现有文件副本的示例。
$ cp filename copyfile
$
你现在会在当前目录中找到另一个文件 copyfile 。该文件将与原始文件 filename 完全相同。
Renaming Files in Linux
要更改现有文件的名称,请使用 mv Linux 命令。以下是基本语法:
$ mv old_file new_file
以下程序将现有文件 filename 重命名为 newfile 。
$ mv filename newfile
$
mv 命令将现有文件完全移动到新文件中。在这种情况下,你只会在当前目录中找到 newfile 。
Deleting Files in Linux
要在 Linux 文件系统中删除现有文件,请使用 rm 命令。以下是基本语法:
$ rm filename
以下示例显示了如何完全删除现有文件 filename 。
$ rm filename
$
你可以使用以下命令同时删除多个文件:
$ rm filename1 filename2 filename3
$
Creating Links on Files
Linux 提供了从另一个位置访问文件的链接机制。您可以说这些链接是现有文件的别名。这些链接可以是符号链接或硬链接。
下面是创建文件名符号链接的命令:
$ ln -s filename symlink
$
下面是创建现有文件硬链接的命令:
$ ln filename hardlink
$
现在可以检查创建的链接:
$ ls -l
total 8
-rw-r--r-- 2 root root 132 May 1 07:18 filename
-rw-r--r-- 2 root root 132 May 1 07:18 hardlink
lrwxrwxrwx 1 root root 8 May 1 07:17 symlink -> filename
$
创建符号或硬链接后,可以使用这些链接访问原始文件。可以使用链接编辑这些文件,但如果删除链接文件,原始文件将保持未删除且不变。