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
    $
    
    这是有关所有列出的列的信息 -
    • First Column− 表示文件类型和对文件赋予的权限。以下是所有类型文件的说明。
    • Second Column − 表示文件或目录占用的内存块数。
    • Third Column− 代表文件的所有者。这是创建此文件的 Unix 用户。
    • Fourth Column− 代表所有者的组。每个 Unix 用户都有一个关联的组。
    • Fifth Column − 表示以字节为单位的文件大小。
    • Sixth Column − 表示最后一次创建或修改此文件的日期和时间。
    • Seventh Column − 表示文件名或目录名。
    在里面 ls -l 清单示例,每个文件行都以 d, -, 或者 l. 这些字符表示列出的文件的类型。
    序号 前缀和描述
    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
    
    这里, *用作与任何字符匹配的元字符。如果你想显示所有以 just 结尾的文件.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
    $
    
    • Single dot (.) - 这代表当前目录。
    • Double dot (..) - 这代表父目录。
  • 创建文件

    您可以使用 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 &plus ZZ 一起从文件中完全出来。
    您现在将创建一个文件 filename 在当前目录中。
    
    $ vi filename
    $
    
  • 编辑文件

    您可以使用 vi编辑。我们将简要讨论如何打开现有文件 -
    
    $ vi filename
    
    打开文件后,您可以按 键进入编辑模式 i然后您可以继续编辑文件。如果您想在文件中到处移动,那么首先您需要按 键退出编辑模式Esc. 在此之后,您可以使用以下键在文件内移动 -
    • l 键移动到右侧。
    • h 键移动到左侧。
    • k 在文件中向上移动的键。
    • j 在文件中向下移动的键。
    因此,使用上述键,您可以将光标定位在您想要编辑的任何位置。定位后,您可以使用i键进入编辑模式。完成文件中的编辑后,按Esc 最后是两把钥匙 Shift &plus 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
    $
    
    这是所有四列的详细信息 -
    • First Column - 表示文件中的总行数。
    • Second Column - 表示文件中的总字数。
    • Third Column− 表示文件中的总字节数。这是文件的实际大小。
    • Fourth Column − 表示文件名。
    您可以一次提供多个文件并获取有关这些文件的信息。以下是简单的语法 -
    
    $ wc filename1 filename2 filename3
    
  • 复制文件

    要制作文件的副本,请使用 cp命令。命令的基本语法是 -
    
    $ cp source_file destination_file
    
    以下是创建现有文件副本的示例 filename.
    
    $ cp filename copyfile
    $
    
    您现在将找到另外一个文件 copyfile在您当前的目录中。此文件将与原始文件完全相同filename.
  • 重命名文件

    要更改文件名,请使用 mv命令。以下是基本语法 -
    
    $ mv old_file new_file
    
    以下程序将重命名现有文件 filenamenewfile.
    
    $ mv filename newfile
    $
    
    mv命令会将现有文件完全移动到新文件中。在这种情况下,您只会发现newfile 在您当前的目录中。
  • 删除文件

    要删除现有文件,请使用 rm命令。以下是基本语法 -
    
    $ rm filename
    
    Caution− 文件可能包含有用的信息。总是建议在使用时要小心Delete命令。最好使用-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。