📅  最后修改于: 2020-10-31 14:43:48             🧑  作者: Mango
在本章中,我们将详细讨论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开头。这些字符指示列出的文件的类型。
Sr.No. | Prefix & Description |
---|---|
1 |
– Regular file, such as an ASCII text file, binary executable, or hard link. |
2 |
b Block special file. Block input/output device file such as a physical hard drive. |
3 |
c Character special file. Raw input/output device file such as a physical hard drive. |
4 |
d Directory file that contains a listing of other files and directories. |
5 |
l Symbolic link file. Links on any regular file. |
6 |
p Named pipe. A mechanism for interprocess communications. |
7 |
s Socket used for interprocess communication. |
元字符在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外壳(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
$
现在,您将在当前目录中找到另一个文件copyfile 。该文件将与原始文件名完全相同。
要更改文件名,请使用mv命令。以下是基本语法-
$ mv old_file new_file
以下程序会将现有文件filename重命名为newfile 。
$ mv filename newfile
$
mv命令会将现有文件完全移动到新文件中。在这种情况下,您将在当前目录中仅找到newfile 。
要删除现有文件,请使用rm命令。以下是基本语法-
$ rm filename
注意-文件可能包含有用的信息。始终建议在使用此Delete命令时要小心。最好将-i选项与rm命令一起使用。
以下是显示如何完全删除现有文件filename的示例。
$ rm filename
$
您可以使用下面给出的命令一次删除多个文件-
$ rm filename1 filename2 filename3
$
在正常情况下,每个Unix程序启动时都会为其打开三个流(文件)-
stdin-这称为标准输入,关联的文件描述符为0。这也表示为STDIN。 Unix程序将从STDIN读取默认输入。
stdout-这称为标准输出,关联的文件描述符为1。这也表示为STDOUT。 Unix程序将在STDOUT写入默认输出
stderr-这称为标准错误,并且相关的文件描述符为2。这也表示为STDERR。 Unix程序将在STDERR上写入所有错误消息。