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参数表示该目录下的所有文件包括子目录都会被删除,因此该参数应慎用。