达芬奇技术开发基础、原理与实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 Linux文件和文件系统

1.2.1 Linux文件概念

Linux操作系统的一个显著特征是它所使用的文件概念。虽然文件的概念较为简单,但其功能强大并且使所有的系统资源有了一个统一的表示。在Linux中,一个文件是一个字节序列。这样,所有的软硬件,包括网络接口卡、磁盘驱动器、键盘、打印机、简单/普通文件(文本文件、可执行程序等)、目录都可以被看成一个文件,因为它们都用字节序列表示。所以在Linux中,所有的输入和输出设备都被当做文件来对待。

Linux系统中有三种基本的文件类型:简单/普通文件、目录文件和设备文件。

①简单/普通文件:普通文件是用户最经常面对的文件。它又分为以ASCII码形式存储的文本文件和以二进制形式存储的二进制文件。

②目录文件:是用于管理系统中大量文件的文件。它存储着相关文件的路径、大小等与文件有关的信息。

③设备文件:Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理。从用户的角度来看,对I/O设备的使用和对一般文件的使用一样,不必了解I/O设备的细节。

1.2.2 Linux文件系统结构

计算机系统中储存着海量的文件,怎样高效、便捷地管理、组织这些文件是计算机系统需要解决的问题。Linux系统以文件目录的方式来组织和管理系统中的所有文件。文件目录将所有文件的说明信息采用树形分层的结构组织起来,如图1-1所示。实践证明,这种结构的文件系统的管理组织效率比较高[2]。

图1-1 Linux树形文件系统结构

表1-1给出了标准目录结构中每个目录的作用。

表1-1 目录及其作用

1.2.3 简单文件操作

下面简单介绍一下文件操作的基本命令,每个命令的参数设置可参考该命令的help文件。

1.显示目录中的文件及子目录名称的命令ls

命令格式:ls[参数][文件名]

例如:ls-a

显示该目录下所有文件名,包括隐藏文件。

2.复制文件命令cp

命令格式:cp[参数][源路径][目标路径]

例如:cp -i a.h/home/root

将a.h文件从/home目录下复制到/root目录下,-i参数的作用是如果/root目录下有同名文件,提示是否覆盖该文件。

3.删除文件命令rm

命令格式:rm[参数][文件名]

例如:rm a.h

删除当前目录下的a.h文件。

4.移动文件命令mv

命令格式:mv[参数][源路径][目标路径]

例如:mv -f a.h/home/root

将a.h文件从/home目录下移动到/root目录下,-f参数的作用是如果/root目录下有同名文件,将直接覆盖该文件,不做任何提示。

5.检测文件类型命令file

命令格式:file[参数][文件名]

例如:file -v a.h

显示a.h的文件类型,-v表示在标准输出后显示版本信息,并且退出。

6.显示文本文件内容

①cat:连接并显示指定的一个或者多个文件的有关信息。

命令格式:cat[参数][文件名]

例如:cat -n a.h > b.h

将a.h的内容加上行号后输入到b.h中,其中-n表示从1开始对所有输出的行号进行编号。

②more:以一页一页的形式显示指定的一个或者多个文件的有关信息。

命令格式:more[参数][文件名]

例如:more +10 a.h

从第10行开始显示a.h的内容。

7.查找文件命令find

命令格式:find[路径][参数][文件名]

例如:find/dev/rmt -print

查找系统中所有的rmt设备,并标准输出。-print参数表示find命令将匹配的文件输出到标准输出。

8.建立链接文件命令ln

命令格式:ln[参数][源文件][目标文件]

例如:ln -s/bin/less/usr/local/bin/less

表示给/bin/less产生一个软链接文件/usr/local/bin/less。-s表示软链接,只在指定的位置上生成一个文件的镜像,不占空间。如果不加-s参数则表示建立的是硬链接,会在指定位置建立一个和源文件相同大小的文件。

1.2.4 简单目录操作

1.显示当前路径命令pwd

命令格式:pwd

例如:pwd -L

显示逻辑地址。

2.改变当前路径命令cd

命令格式:cd[目录名]

cd. 代表当前目录。

cd.. 代表返回上一层目录。

cd/ 代表返回根目录。

cd~ 代表返回使用者根目录。

3.建立目录命令mkdir

命令格式:mkdir[参数][目录名]

例如:mkdir -p/home/hit/test

创建目录/home/hit/test,若此时/home目录下并没有hit这个目录,那么需要加入-p参数,这样将同时建立父目录/home/hit和子目录/home/hit/test。

4.删除目录命令rmdir

命令格式:rmdir[参数][目录名]

例如:rmdir -rf/home/hit/test

删除/home/hit/test目录下的所有文件,-rf参数表示该目录下的所有文件包括子目录都会被删除,因此该参数应慎用。