FHS(Filestystem Hierarchy Standard) 文件系统层级
FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。你能想象,你进入一个企业之后,所接触到的Linux目录配置方法竟然跟你以前学的完全不同吗?很难想象。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。
第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。
文件系统:
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
1.文件
第一层
/ 所有数据文件
第二层
bin(binary)命令文件
sbin 只有管理员才能执行的命令
lib 32位数据的库文件
lib64 64位数据的库文件
usr 系统核心资源文件
root (管理员)root用户家目录
home 所有普通用户的主路径
boot 系统加载引导相关所有文件
dev 设备目录文件 主:有设备号(标记设备类型) 次:没有设备号(时间前的数字)
etc 系统中所有的配置文件(软件初始化参数文件)
opt 自定义软件的安装路径
proc 系统内核相关的进程
sys 硬件驱动程序
run 应用程序文件的进程
srv 服务程序文件的路径
tmp 临时目录
var 动态可变化的数据文件路径
lrwxrwxrwx. 1 root root 7 Jun 21 2021 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Nov 19 13:49 boot
drwxr-xr-x. 20 root root 3200 Nov 23 18:07 dev
drwxr-xr-x. 145 root root 8192 Nov 23 18:07 etc
lrwxrwxrwx. 1 root root 10 Nov 23 18:50 file.lnk -> /root/file
drwxr-xr-x. 3 root root 20 Nov 19 12:24 home
lrwxrwxrwx. 1 root root 7 Jun 21 2021 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jun 21 2021 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Jun 21 2021 media
drwxr-xr-x. 3 root root 18 Nov 19 12:13 mnt
drwxr-xr-x. 2 root root 6 Jun 21 2021 opt
dr-xr-xr-x. 306 root root 0 Nov 23 18:06 proc
dr-xr-x---. 16 root root 4096 Nov 25 10:54 root
drwxr-xr-x. 42 root root 1220 Nov 23 18:09 run
lrwxrwxrwx. 1 root root 8 Jun 21 2021 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Jun 21 2021 srv
dr-xr-xr-x. 13 root root 0 Nov 23 18:07 sys
drwxrwxrwt. 23 root root 4096 Nov 25 03:28 tmp
drwxr-xr-x. 13 root root 158 Nov 19 12:13 usr
drwxr-xr-x. 21 root root 4096 Nov 19 13:48 var
2.文件相关的操作命令
(1)同一路径下,不能有两个相同的文件名
(2)严格区分大小写
(3)文件命令不能以/字符命名
(4)文件命名字符不能超过255个
stat 列出一个文件的详细信息
Acces 访问时间 Modify修改时间 Change源数据改变时间 barth创建时间
创建文本文件的两种命令:
(1)touch 创建文本文件
【当一个路径下不存在该文件,通过touch可以创建一个普通文本文件;当存在文件时通过touch可以更改时间信息】
stat FILENAME 文件详细属性信息
touch FILENAME...
touch a b c
touch {1,2,3,4}
touch {1..10}
例:
touch /root/a b c 创建/root/a、b、c三个文件
touch /root/{1..3} 创建/root/1、/root/2、/root/3三个文件
(2)mkdir DIRNAME
mkdir d1 d2 d3
mkdir dd{1..3}
-p(parents)父目录:目录多级结构
-v 详细信息
例:
root@localhost ~]# mkdir -pv /root/{1..3}/abc
mkdir: created directory '/root/1'
mkdir: created directory '/root/1/abc'
mkdir: created directory '/root/2'
mkdir: created directory '/root/2/abc'
mkdir: created directory '/root/3'
mkdir: created directory '/root/3/abc'
tree 树状结构显示目录文件
[root@localhost ~]# tree /1
/1
└── 2
└── 3
└── 4
└── 5
4 directories, 0 files
rm删除文件
-r 递归 -f(force)强制(工作环境不要用)
rm FILENAME删除文本文件
rm -r DIRNAME 删除目录文件
rm -rf 强制删除文件
*(通用匹配符)任意长度的任意字符
mv移动文件
mv 源文件名 目标路径(目录)
touch /root/file
mv /root/file /
mv /root/file /newfile
(1)当/newfile不存在,将file移动到/目录并改名为newfile
(2)当/newfile存在,如果是目录文件,表示file移动到/newflile目录下
如果是文本文件,表示file移动到/目录改名为newfile
cp 复制文件
-r 递归
cp 源文件 目标路径
touch /root/file
cp /root/file /
cp /root/file /newfile
(1)当/newfile不存在,将file移动到/目录并改名为newfile
(2)当/newfile存在,如果是目录文件,表示file复制到/目录改名为newfile
mkdir /root/file
cp -r /root/test / 复制目录文件
查看文本文件的6个命令
cat -n显示行号 tac反序显示文本
more 文件名 分屏显示文件内容,向下翻一页(空格,翻到最后一页自动退出)逐条显示(enter)向上翻一页(b)最后将内容输出到终端
less 分屏显示文件内容,打开文件内容,不会自动退出,退出(q)文件内容不会显示到终端
/关键字匹配 (/或?关键字+enter)n切换到下一个N切换到上一个
head 文件名 -n 查看前十行内容
head -n5文件名 ==head -5 文件名
tail文件名 查看文件后十行
tail -n5文件名 ==tail -5 文件名
wget下载文件
wget 网址.rpm
wget -O 将链接文件下载到对应路径进行改名
wget -p 将链接文件下载到对应路径
wget -c 实现断点续传
wget -r 下载目录文件
作业题:
1、#创建目录(尝试以下通过一条命令实现)
在/mnt下创建boot和sysroot目录
在/mnt/boot下创建grub目录
在/mnt/sysroot下创建proc,sys,bin,sbin,lib,usr,var,etc,dev,home,root,tmp
在/mnt/sysroot/usr下创建bin,sbin,lib
在/mnt/sysroot/lib下创建modules
在/mnt/sysroot/var下创建run,log,lock
在/mnt/sysroot/etc下创建init.d
#mkdir -pv /mnt/{sysroot/{proc,sys,bin,sbin,lib/modules,usr/{bin,sbin,lib},var/{run,log,lock},etc/init.d,dev,home,root,tmp},boot/grub}
2.如何一次性在/test目录创建以abc表示的100个文件,例如abc1,abc2,abc3,…abc100
#mkdir /test
#touch/test/abc{1..100}
3.复制/mnt/boot目录文件到/test并改名为/boot.bak。
#cp -r/mnt/boot /test/book,bak或
#cp -r/mnt/boot /test
#mv /test/boot /test/boot.bak
4.复制/test所有有9字符命名的文件到/pub下。
#mkdir/pub
#cp -r /test/*9* /pub
5.移动/test所有有1字符命名的文件到/pub目录下。
#mv /test/*1* /pub
ot.bak。
#cp -r/mnt/boot /test/book,bak或
#cp -r/mnt/boot /test
#mv /test/boot /test/boot.bak
4.复制/test所有有9字符命名的文件到/pub下。
#mkdir/pub
#cp -r /test/*9* /pub
5.移动/test所有有1字符命名的文件到/pub目录下。
#mv /test/*1* /pub