Unix和Linux文件管理和操作详细解读

上一章Unix和Linux教程请查看:Unix/Linux操作系统基本概念和使用
在本章中我们将详细讨论Unix/linux中的文件管理,Unix中的所有数据都组织成文件,并且所有文件都组织到目录中,这些目录被组织成树状结构称为文件系统。
1、Unix/Linux文件管理基本概念当我们以某种方式使用Unix时,我们的大部分时间花在处理文件上。本教程将帮助你了解如何创建和删除文件,复制和重命名这些文件,以及创建到它们的链接等等,其中Unix中有三种基本类型的文件:

  • 普通文件——普通文件是系统上包含数据、文本或程序指令的文件,在本教程中我们将了解如何使用普通文件。
  • 目录——目录存储特殊文件和普通文件,对于熟悉Windows或Mac OS的用户来说,Unix目录相当于文件夹。
  • 特殊文件——有些特殊文件提供对硬件的访问,如硬盘驱动器、CD-ROM驱动器、调制解调器和以太网适配器。其他特殊文件类似于别名或快捷方式,允许您使用不同的名称访问单个文件。
2、列出所有文件要列出存储在当前目录中的文件和目录使用以下命令
$ls

下面是上述命令的示例输出:
$lsbinhostslibrest cathw1pubtest_results copphw2resssusers docshw3revvwork

命令ls支持-l选项,该选项将帮助你获得有关所列文件的更多信息:
$ls -l total 1962188drwx------2 uname uname4096 11月 17 15:30 .sunpinyin/ -rwxrwxr-x1 uname uname85204月 252019 temp* -rw-rw-r--1 uname uname1264月 252019 temp.c -rw-rw-r--1 uname uname2003月32019 Tom.h drwxrwxr-x4 uname uname40964月72019 .vim/

以下是关于列出的所有列的信息:
  • 第一列—表示文件类型和对文件的权限,下面是所有类型文件的描述。
  • 第二列—表示文件或目录占用的内存块的数量。
  • 第三列—表示文件的所有者,这是创建该文件的Unix用户。
  • 第四列是所有者的所属组,每个Unix用户都有一个相关联的组。
  • 第5列—表示文件大小(以字节为单位)。
  • 第六列—表示最后一次创建或修改此文件的日期和时间。
  • 第七列—表示文件或目录名。
【Unix和Linux文件管理和操作详细解读】在ls –l列表示例中每个文件行都以d、-或l开头,这些字符表示所列文件的类型如下。
编号 前缀 & 描述
1 – 常规文件如ASCII文本文件、二进制可执行文件或硬链接。
2 b 块特殊文件,块输入/输出设备文件,如物理硬盘驱动器。
3 c 字符特殊文件,原始输入/输出设备文件,如物理硬盘驱动器。
4 d 目录文件,其中包含其他文件和目录的列表。
5 l 符号链接文件,链接到任何常规文件。
6 p 命名管道,进程间通信的机制。
7 s 套接字用于进程间通信。
3、元字符匹配元字符在Unix中有特殊的意义,例如*和?元字符。我们使用*来匹配0个或多个字符,问号(?)与单个字符匹配如:
$ls ch*.c

这显示所有文件,其名称以ch开头以.xml结尾,在这里*作为元字符工作与任何字符匹配。如果希望显示所有以.xml结尾的文件,那么可以使用ls *.xml。
4、隐藏文件一个不可见或隐藏的文件是:它的第一个字符是点或句点字符(.)。Unix程序(包括shell)使用大部分这些文件来存储配置信息,隐藏文件的一些常见示例包括以下文件:
(1).profile——Bourne shell (sh)初始化脚本
(2).kshrc——Korn shell (ksh)初始化脚本
(3).cshrc – C shell (csh)初始化脚本
(4).rhosts——远程shell配置文件
要列出不可见或隐藏的文件使用ls –a:
$ ls -a.cprogson-2.5.jar ...dbus.gvfs .bashrc.dmrchello c.eclipsehello.c

其中单点(.)表示当前目录,双点(..)——表示父目录。
5、创建文件你可以使用vi或vim编辑器在任何Unix系统上创建普通文件,你只需给出以下命令:
$ vi/vim filename

上面的命令将打开一个具有给定文件名的文件,接着按i键进入编辑模式。一旦进入编辑模式,就可以开始在文件中写入内容。完成内容编辑后请遵循以下步骤:
  • 按下esc键退出编辑模式。
  • 同时按两个键Shift + ZZ将完全从文件中取出。
这样你就可以在当前目录中创建一个filename的文件。
6、编辑文件我们可以使用vi编辑器编辑现有文件,我们将简要讨论如何打开现有文件:
$ vi filename

文件打开后我们可以通过按下键i进入编辑模式,然后继续编辑文件。如果你想在一个文件中移动到这里和那里,那么首先你需要通过按下Esc键退出编辑模式,在此之后可以使用以下键移动文件内部:
  • l键移动到右边。
  • h键移动到左边。
  • k键在文件中向上移动。
  • j键移动文件下行。
使用上面的键你可以将光标定位到你想要编辑的任何位置,定位好之后就可以使用i键进入编辑模式。完成文件中的编辑之后,按下Esc以及最后两个键Shift + ZZ一起从文件中完全退出来。
7、显示文件的内容可以使用cat命令查看文件的内容,下面是一个简单的示例,用于查看上面创建的文件的内容:
$ cat filename content... $

可以使用cat命令的-b选项显示行号如:
$ cat -b filename 1content... $

8、计算文件字数可以使用wc命令获得文件中包含的行、单词和字符的总数。下面是一个简单的示例,用于查看关于上面创建的文件的字数信息:
$ wc filename 219 103 filename $

下面是所有四列的详细信息:
  • 第一列—表示文件中的总行数。
  • 第二列—表示文件中的总字数。
  • 第三列—表示文件中的总字节数,这是文件的实际大小。
  • 第四列—表示文件名。
你可以提供多个文件并一次获取关于这些文件的信息,下面是简单的语法
$ wc filename1 filename2 filename3

9、复制文件使用cp命令复制文件,命令的基本语法是:
$ cp source_file destination_file

将source_file文件复制到destination_file文件,这样你可以在当前目录中找到另一个文件destination_file(如果没有指定其它路径),此文件与原始文件文件名完全相同。
10、重命名文件要更改文件的名称请使用mv命令,以下是基本的语法:
$ mv old_file new_file

下面的程序将把现有的文件文件名重命名为newfile。
$ mv filename newfile $

mv命令将把现有文件完全移动到新文件中,在这种情况下我们只能在当前目录中找到newfile。
11、删除文件删除现有文件使用rm命令,以下是基本的语法:
$ rm filename

注意一个文件可能包含有用的信息,建议在使用此删除命令时要小心。使用rm命令最好是配合使用-i选项,下面的示例演示如何完全删除现有的文件文件名。
$ rm filename $

你可以使用下面给出的命令一次删除多个文件:
$ rm filename1 filename2 filename3 $

12、Unix标准流在正常情况下每个Unix程序在启动时都会打开三个流(文件):
  • stdout——这称为标准输入,相关的文件描述符为0,这也表示为STDIN,Unix程序将从STDIN读取默认输入。
  • stdout——这称为标准输出,相关的文件描述符为1,这也表示为STDOUT,Unix程序将在标准输出时写入默认输出。
  • stderr——这称为标准错误,相关的文件描述符为2,这也表示为STDERR,nix程序将在STDERR中写入所有的错误消息。

    推荐阅读