上一章Unix和Linux教程请查看:Unix/Linux操作系统基本概念和使用
在本章中我们将详细讨论Unix/linux中的文件管理,Unix中的所有数据都组织成文件,并且所有文件都组织到目录中,这些目录被组织成树状结构称为文件系统。
1、Unix/Linux文件管理基本概念当我们以某种方式使用Unix时,我们的大部分时间花在处理文件上。本教程将帮助你了解如何创建和删除文件,复制和重命名这些文件,以及创建到它们的链接等等,其中Unix中有三种基本类型的文件:
- 普通文件——普通文件是系统上包含数据、文本或程序指令的文件,在本教程中我们将了解如何使用普通文件。
- 目录——目录存储特殊文件和普通文件,对于熟悉Windows或Mac OS的用户来说,Unix目录相当于文件夹。
- 特殊文件——有些特殊文件提供对硬件的访问,如硬盘驱动器、CD-ROM驱动器、调制解调器和以太网适配器。其他特殊文件类似于别名或快捷方式,允许您使用不同的名称访问单个文件。
$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列—表示文件大小(以字节为单位)。
- 第六列—表示最后一次创建或修改此文件的日期和时间。
- 第七列—表示文件或目录名。
编号 | 前缀 & 描述 |
1 | – 常规文件如ASCII文本文件、二进制可执行文件或硬链接。 |
2 | b 块特殊文件,块输入/输出设备文件,如物理硬盘驱动器。 |
3 | c 字符特殊文件,原始输入/输出设备文件,如物理硬盘驱动器。 |
4 | d 目录文件,其中包含其他文件和目录的列表。 |
5 | l 符号链接文件,链接到任何常规文件。 |
6 | p 命名管道,进程间通信的机制。 |
7 | s 套接字用于进程间通信。 |
$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将完全从文件中取出。
6、编辑文件我们可以使用vi编辑器编辑现有文件,我们将简要讨论如何打开现有文件:
$ vi filename
文件打开后我们可以通过按下键i进入编辑模式,然后继续编辑文件。如果你想在一个文件中移动到这里和那里,那么首先你需要通过按下Esc键退出编辑模式,在此之后可以使用以下键移动文件内部:
- l键移动到右边。
- h键移动到左边。
- k键在文件中向上移动。
- j键移动文件下行。
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中写入所有的错误消息。
推荐阅读
- Unix和Linux目录管理和操作详细解读
- Unix和Linux操作系统基本概念和使用入门介绍
- redis客户端连接、管道和redis分区
- redis备份、安全和基准测试介绍
- redis脚本命令、连接命令和redis服务器命令
- PHP基本语法经典指南
- 如何在Java中将元素添加到数组()
- D3.js arc.innerRadius()函数用法介绍
- 希尔密码指南和代码实现详解