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 .这些字符表示列出的文件的类型.

Sr.No.前缀&描述
1

 -  

常规文件,例如ASCII文本文件,二进制可执行文件或硬链接.

2

b

阻止特殊文件.阻止输入/输出设备文件,例如物理硬盘驱动器.

3

c

字符特殊文件.原始输入/输出设备文件,例如物理硬盘驱动器.

4

d

包含其他文件列表的目录文件目录.

5

l

符号链接文件.任何常规文件的链接.

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配置文件

要列出不可见文件,请指定 -a 选项 ls :

$ 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 键进入编辑模式.一旦进入编辑模式,就可以开始在文件中编写内容,如下面的程序 :

 
这是unix文件. ...我是第一次创建它..... 
我要将此内容保存在此文件中.

完成程序后,请执行以下步骤 :

  • 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

以下是创建现有文件文件名的副本的示例.

$ cp filename copyfile 
$

现在,您将在当前目录中找到另一个文件 copyfile .此文件与原始文件文件名完全相同.

重命名文件

更改名称文件,使用 mv 命令.以下是基本语法 :

$ mv old_file new_file

以下程序将现有文件 filename 重命名为 newfile .

$ mv filename newfile 
$

mv 命令将现有文件完全移动到新文件中.在这种情况下,您只能在当前目录中找到 newfile .

删除文件

删除现有文件,使用 rm 命令.以下是基本语法 :

$ rm filename

小心 : 文件可能包含有用的信息.使用此删除命令时,始终建议您务必小心.最好使用 -i 选项以及 rm 命令.

以下示例说明如何完全删除现有文件文件名.

$ rm filename
$

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

$ rm filename1 filename2 filename3
$

标准Unix流

在正常情况下,每个Unix程序都打开了三个流(文件)当它开始和减去时;

  • stdin : 这被称为标准输入,相关的文件描述符为0.这也表示为STDIN. Unix程序将读取STDIN的默认输入.

  • stdout : 这称为标准输出,相关的文件描述符为1.这也表示为STDOUT. Unix程序将在STDOUT中写入默认输出

  • stderr : 这称为标准错误,相关的文件描述符为2.这也表示为STDERR. Unix程序将在STDERR上写下所有错误消息.