- Unix / Linux 初学者
- Unix / Linux - 主页
- Unix / Linux - 入门
- Unix / Linux - 文件管理
- Unix / Linux - 目录
- Unix / Linux - 文件权限
- Unix / Linux - 环境
- Unix / Linux - 基本实用程序
- Unix / Linux - 管道和过滤器
- Unix / Linux - 进程
- Unix / Linux - 通信
- Unix / Linux - vi 编辑器
- Unix/Linux Shell 编程
- Unix / Linux - Shell 脚本
- Unix / Linux - 什么是 Shell?
- Unix / Linux - 使用变量
- Unix / Linux - 特殊变量
- Unix / Linux - 使用数组
- Unix / Linux - 基本运算符
- Unix / Linux - 决策
- Unix / Linux - Shell 循环
- Unix / Linux - 循环控制
- Unix / Linux - Shell 替换
- Unix / Linux - 引用机制
- Unix / Linux - IO 重定向
- Unix / Linux - Shell 函数
- Unix / Linux - 联机帮助页
Unix / Linux - 文件管理
在本章中,我们将详细讨论 Unix 中的文件管理。Unix 中的所有数据都组织成文件。所有文件都组织到目录中。这些目录被组织成一个称为文件系统的树状结构。
当您以某种方式使用 Unix 时,您大部分时间都在处理文件。本教程将帮助您了解如何创建和删除文件、复制和重命名文件、创建指向它们的链接等。
在 Unix 中,存在三种基本类型的文件 -
普通文件- 普通文件是系统上包含数据、文本或程序指令的文件。在本教程中,您将了解如何使用普通文件。
目录- 目录存储特殊文件和普通文件。对于熟悉 Windows 或 Mac OS 的用户来说,Unix 目录相当于文件夹。
特殊文件- 一些特殊文件提供对硬件的访问,例如硬盘驱动器、CD-ROM 驱动器、调制解调器和以太网适配器。其他特殊文件类似于别名或快捷方式,使您能够使用不同的名称访问单个文件。
列出文件
要列出当前目录中存储的文件和目录,请使用以下命令 -
$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 $
以下是有关所有列出的列的信息 -
第一列- 表示文件类型和文件的权限。以下是所有类型文件的描述。
第二列- 表示文件或目录占用的内存块数。
第三列- 代表文件的所有者。这是创建该文件的 Unix 用户。
第四列- 代表所有者的组。每个 Unix 用户都会有一个关联的组。
第五列- 表示文件大小(以字节为单位)。
第六列- 表示上次创建或修改此文件的日期和时间。
第七列- 表示文件或目录名称。
在ls -l列表示例中,每个文件行都以d、-或l开头。这些字符指示列出的文件的类型。
先生。 | 前缀和描述 |
---|---|
1 |
- 常规文件,例如 ASCII 文本文件、二进制可执行文件或硬链接。 |
2 |
乙 块特殊文件。块输入/输出设备文件,例如物理硬盘驱动器。 |
3 |
C 字符特殊文件。原始输入/输出设备文件,例如物理硬盘驱动器。 |
4 |
d 包含其他文件和目录的列表的目录文件。 |
5 |
我 符号链接文件。任何常规文件的链接。 |
6 |
p 命名管道。进程间通信的机制。 |
7 |
s 用于进程间通信的套接字。 |
元字符
元字符在 Unix 中具有特殊含义。例如,*和? 是元字符。我们使用*来匹配 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
隐藏文件
不可见文件是第一个字符是点或句点字符 (.) 的文件。Unix 程序(包括 shell)使用大部分这些文件来存储配置信息。
隐藏文件的一些常见示例包括以下文件 -
.profile - Bourne shell ( sh) 初始化脚本
.kshrc - Korn shell ( ksh) 初始化脚本
.cshrc - C shell (csh) 初始化脚本
.rhosts - 远程 shell 配置文件
要列出不可见文件,请为ls指定-a选项-
$ 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 $
单点 (.) - 这代表当前目录。
双点 (..) - 这代表父目录。
创建文件
您可以使用vi编辑器在任何 Unix 系统上创建普通文件。您只需给出以下命令 -
$ vi filename
上面的命令将打开一个具有给定文件名的文件。现在,按i键进入编辑模式。进入编辑模式后,您可以开始在文件中写入内容,如以下程序所示 -
This is unix file....I created it for the first time..... I'm going to save this content in this file.
完成该程序后,请按照以下步骤操作 -
按esc键退出编辑模式。
同时按下两个键Shift + ZZ可完全退出文件。
现在,您将在当前目录中创建一个名为 filename的文件。
$ vi filename $
编辑文件
您可以使用vi编辑器编辑现有文件。我们将简短讨论如何打开现有文件 -
$ vi filename
文件打开后,您可以按i键进入编辑模式,然后可以继续编辑文件。如果您想在文件内移动,那么首先您需要按Esc键退出编辑模式。之后,您可以使用以下键在文件内移动 -
l键移动到右侧。
h键移动到左侧。
k键在文件中向上移动。
j键在文件中向下移动。
因此,使用上述键,您可以将光标定位在您想要编辑的任何位置。定位后,您可以使用i键进入编辑模式。完成文件编辑后,按Esc 键,最后同时按两个键Shift + ZZ即可完全退出文件。
显示文件的内容
您可以使用cat命令查看文件的内容。以下是一个简单的示例,用于查看上面创建的文件的内容 -
$ cat filename This is unix file....I created it for the first time..... I'm going to save this content in this file. $
您可以使用-b选项和cat命令来显示行号,如下所示 -
$ cat -b filename 1 This is unix file....I created it for the first time..... 2 I'm going to save this content in this file. $
计算文件中的字数
您可以使用wc命令来获取文件中包含的总行数、单词数和字符数。以下是一个简单的示例,用于查看上面创建的文件的信息 -
$ wc filename 2 19 103 filename $
这是所有四列的详细信息 -
第一列- 表示文件中的总行数。
第二列- 表示文件中的总字数。
第三列- 表示文件中的总字节数。这是文件的实际大小。
第四列- 表示文件名。
您可以提供多个文件并一次获取有关这些文件的信息。以下是简单的语法 -
$ wc filename1 filename2 filename3
复制文件
要制作文件的副本,请使用cp命令。该命令的基本语法是 -
$ cp source_file destination_file
以下是创建现有文件filename的副本的示例。
$ cp filename copyfile $
现在,您将在当前目录中找到另一个文件副本文件。该文件将与原始文件filename完全相同。
重命名文件
要更改文件名,请使用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 $
标准 Unix 流
正常情况下,每个 Unix 程序在启动时都会为其打开三个流(文件) -
stdin - 这被称为标准输入,关联的文件描述符是 0。这也表示为 STDIN。Unix 程序将从 STDIN 读取默认输入。
stdout - 这称为标准输出,关联的文件描述符为 1。这也表示为 STDOUT。Unix 程序会将默认输出写入 STDOUT
stderr - 这被称为标准错误,关联的文件描述符是 2。这也表示为 STDERR。Unix 程序会将所有错误消息写入 STDERR。