一、文件系统
单根架构,根文件系统rootfs
不是linux大小写敏感,而是文件系统支不支持大小写。
路径分割 /
FHS:目录结构,文件分层标准
文件有两种数据:
元数据,数据。
元数据与数据存放的位置不再一起
二、文件系统结构:
/boot:引导文件存放目录,内核文件、引导加载器都存放于此目录。
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动就会用到的程序。
/sbin:管理类的基本命令;不能关联至独立分区,OS启动就会用到的程序。
/lib:启动是程序来的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置。
/etc:配置文件目录。
/home/USERNAME:普通用户家目录。
/root:管理员的家目录。
/media:便携式移动设备挂载点。
/mnt:临时文件系统挂载点。
/dev:设备文件及特殊文件存储位置。
biock块设备:随机访问
character字符设备:顺序访问
空设备:/dev/null /dev/zero
/opt:第三方应用程序的安装位置。
/srv:系统上运行的服务用到的数据。
/tmp:临时文件存储位置。
/usr:普通文件(universal),shared(共享文件),只读文件(read-only)
bin:保证系统拥有完整功能而提供的应用程序。
sbin:
lib:32位实用。
lib64:只存在64位系统。
include:C程序的头文件。
share:结构化独立的数据。
local:第三方应用程序的安装位置。
bin,sbin,lib,lib64,etc,share
/var:变动数据文件(variable data files)
cache:应用程序缓存数据目录。
lib:应用程序状态信息数据。
local:专用于为/usr/local下的应用程序存储可变数据。
lock:锁文件。
log:日志目录及文件。
opt:专用于为/opt下的应用程序存储可变数据。
run:运行中的进程相关数据,通常用于存储进程pid文件。
spool:应用程序数据池。
tmp:保存系统两次重启之间产生的临时数据。
/proc:用于输出内核与进程信息相关的虚拟文件系统。
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统。
/selinux:(security enhanced Linux),selinux相关的安全策略等信息的存储位置。
linux上的引用程序的组成部分
二进制程序:/bin,/sbin,/use/bin,/ues/sbin,/usr/local/bin,/usr/local/sbin
库文件:/lib,/lib64,/uer/,/uer/lib64,/uer/local/lib,/uer/local/lib64
配置文件:/etc,/etc/DIRECTORY,/usr/local.etc
帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/share/doc
三、文件名规则
包括路径在内,文件名称最长4095个字节,用/分隔的路径不能超过255个字节
蓝色:目录
绿色:可执行文件
红色:压缩文件
浅蓝色:链接文件
/和nul不能作为文件名,实用特殊字符的目录名和文件夹不推荐使用,有些字符需要引号来引用它们。
linux标准文件系统:(如exe4)文件名称大小写敏感。
四、linux下的文件类型
-:普通文件
d:目录文件
l:符号链接文件
biock:块设备,随机访问,有缓存,物理存在。
character:字符设备,顺序访问,没有缓存,逻辑存在。
sockett:套接字文件,进程之间通讯。
pipe:管道文件,钱一个命令的输出通过管道作为后面的输入。
五、文件通配符
*:匹配另个或多个字符
?:匹配任何单个字符
~:当前用户家目录
~username:用户家目录
~+:当前工作目录
~-:前一个工作目录
[0-9]:匹配数字范围
[a-z]:大写和小写字母 顺序:小写大写
[A-Z]:大写和小写字母 顺序:小写大写
六、更改目录cd
cd:改变目录为绝对或相对路径
cd..:到上一级目录
cd -:到以前的工作目录
相关的环境变量:
PWD:保存了当前目录路径
OLDPWD:上一次所在目录路径
[root@localhost ~]# pwd /root [root@localhost ~]# cd /etc [root@localhost etc]# cd /bin [root@localhost bin]# cd - /etc [root@localhost etc]# cd [root@localhost ~]#
七、列出目录内容ls
l.:只显示隐藏文件
-a:显示所有文件,包含隐藏文件。
-l:显示额外的信息
-R:目录递归通过,显示所有子目录里的文件。
-ld:目录和符号链接信息。
-n:文件分行显示,n代表几行
-S:从大到小排序
[root@localhost ~]# ls anaconda-ks.cfg mulu1 mulu2 wenjian1 wenjian2
八、创建空白文件touch
touch 文件名
-a:改变atime
-m:改变mtime
-c:如果文件存在,只刷新时间。如果文件不存在,不会创建。
-t:改变atime,mtime
touch -t 年月日时分 文件名
[root@localhost ~]# touch -t 201607301846 /wang/DYW [root@localhost ~]# ll /wang/DYW -rw-r--r-- 1 root root 0 Jul 30 2016 /wang/DYW
九、复制文件和目录cp
源是一个文件:
目标不存在:复制过去并且改名
目标存在是文件:覆盖文件
目标存在是目录:复制都目录下
源是多个文件:
目标不存在:报错
目标存在是文件:报错
目标存在是目录:复制到目录下
源是目录:必须加-r
目标不存在:创建指定目录,把源目录中所有文件复制到指定目录
目标存在是文件:报错
目标存在是目录:复制到目标目录中,成为子目录
cp常用选项:
-i:交互式
-r,-R:递归复制目录及内部的所有内容
-a:归档,相当于-dR,–presevr=all
-d:–no-dereference –presevr=links 不复制文件,只复制链接名
–presevr=[ATTR_LIST]
mode:权限
ownership:属主属组,所有者
timestamp:时间
links:链接
xattr
context
all:所有
-p:相当于–presevr=mode,ownership,timestamp
-v:看复制过程
[root@localhost ~]# cp mulu1 -r /wang/123 [root@localhost ~]# ls /wang/123 mulu1 [root@localhost ~]# ls wenjian1 /wang/123 wenjian1 /wang/123: mulu1
十、别名alias
alias name=''
如果想永久生效,要定义在配置文件中。
对当前用户:~/.bashrc
对所有用户:/etc/bashrc
编辑配置给出的新配置不会立即生效,
bash进程重新读取配置文件:
source /path/to/config_file
. /path/to/config_file
[root@localhost ~]# alias asd='ls' [root@localhost ~]# asd anaconda-ks.cfg mulu1 mulu2 wenjian1 wenjian2
十一、移动和重命名文件
-i:交互式
-f:强制
[root@localhost ~]# mv wenjian2 /wang/789 [root@localhost ~]# ll /wang/789 -rw-r--r-- 1 root root 0 Jul 29 11:50 /wang/789
十二、删除rm
-i:交互式
-f:强制删除
-r:递归
[root@localhost ~]# ls /wang 123 789 dir DYW [root@localhost ~]# rm -rf /wang/123 [root@localhost ~]# ls /wang 789 dir DYW
十三、显示目录树tree
-d:只显示目录
-l:指定显示的层级目录
tree -l n
-d:只显示目录,不显示文件
[root@localhost ~]# tree /wang /wang ├── 789 ├── dir │ ├── 1 │ ├── dir3-100 │ └── dir5 │ ├── 5 │ ├── dir │ └── dir4 └── DYW 6 directories, 3 files
十四、创建目录mkdir 删除目录rmdir
mkdir:
-p:自动创建所需的个目录
-v:显示穿件过程
rmdir:删除目录 只能删除空白目录
-p:删除目录树
[root@localhost ~]# mkdir -p /wang/dir/{1,2,3} [root@localhost ~]# tree /wang /wang └── dir ├── 1 ├── 2 └── 3 4 directories, 0 files
十五、索引节点inode
inode是什么:
文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区存储512字节(相当于0.5KB)
操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据都存储在“块”中,那么很显然还有一个地方存储文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种存储文件元信息的区域就叫做inode,中文译名为“索引节点”
inode的内容:
inode包含文件的元信息,具体内容:
文件的字节数
文件拥有者的UserID
文件的Group ID
文件的读、写、执行权限
文件的三个时间戳:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间
链接数,即有多少文件名指向这个inode
文件数据block的位置
可以用stat命令查看文件的inode信息。
inode的大小
inode也会消耗硬盘空间,所有硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128自己,每1KB就设置一个inode,那么inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
每个文件都必须有一个inode,所以有可能发生inode已经用光,但是硬盘还未存满的情况,就无法在硬盘上创建新文件。
查看每个硬盘分区的inode总数和已经实用的数量,可以实用df命令
df-i
inode号码
没个inode都有一个号码,操作系统用inode号码来识别不同的文件
linux系统内部不使用文件名,而inode号码来识别文件。对于系统来说,文件名知识inode号码便于识别的别称或者绰号。表面上,用户通过文件名打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码获取inode信息;最后,根据inode信息找到文件数据所在的block,读出数据。
查看文件名对应的inode号码
ls -i
硬链接:
ln 文件名 链接文件名
创建硬链接会增加额外的记录项以引用文件
对应统一文件系统上的一个物理文件
每个引用相同的inode号
创建时链接数递增
不能跨分区、驱动器
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
软链接:
也叫符号链接
ln -s 文件名 链接文件名
ls -l 显示链接的名称和引用的文件
一个符号链接指向另一个文件
可以对目录进行、可以跨分区
指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用技计数
软链接文件:
原始文件相对路径:相对于软链接文件路径,而不是相对于当前工作目录的路径
硬链接与软链接的区别:
硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。
硬链接可由命令 link 或 ln 创建,由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。硬链接不能对目录进行创建,只可对文件创建。
软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。加-s选项表示创建的是软链接。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接
file:
file 选项 文件名
用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
常用选项:
-b:列出文件辨识结果时,不显示文件名称。
-c:详细显示指令执行过程,便于排错或分析程序执行型
-f:列出文件中文件名的文件类型
-F:实用制定分隔符号替换输出文件名后默认的“:”分隔符
-I:输出mime类型的字符串
-L:查看对应软链接对应文件的文件类型
-z:尝试去解读压缩文件的内容
原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/26918