Day 03
1.FHS (Filesystem Hierarchy Standard)——文件系统层次化标准)——重点
面试可能被提问
文件系统:对于一个存储设备(或这分区)明确了存放文件的方法和数据结构类型。xfs
/根目录 系统所有数据文件
usr 核心的资源目录
bin 所有用户可以执行的二进制文件
sbin 系统中只有管理员可以执行的命令文件即二进制文件
lib 32位相关的库文件
lib64 64位相关的库文件
root 管理员家目录
home 所有普通用户的主路径(家目录)
boot 系统引导文件
dev 主机中的设备文件 tty表示所对应的文件是控制台文件
etc 系统中所有配置文件(软件程序初始化的参数文件)
media 挂载点目录(永久链接)
mnt 挂载点目录 (临时链接)
opt (option)可选目录
proc 内核进程文件路径————进程即正在进行的程序
sys 设备驱动程序路径
run 应用层进程文件路径
srv (service)服务程序的数据文件
var (vary)动态可变化的数据文件(邮件 日志) log mail
tmp 临时文件目录———默认一个文件在一个月内未进行操作则会被删除。
其余部分自行上网查找
2文件相关的操作命令(-/d)
文件命名限制 :
1.同一路经下不能有两个相同的文件名
2.严格区分大小写——A与a命名的文件表示不同的文件
3.文件命令不能以/字符命令 ——如a空格b不能作为文件名 但加上单/双引号‘a空格b’可以作为文件名
4.文件命名字符不能超过255字符
stat FILNEAME文件详细信息
stat 加一个文件名 如 #stat aaa 查看aaa文件的详细属性
touch FILNEAME… 创建文本信息
更改文件时间 #touch 加上-a/c/d…有不同的表达意义
#touch 文件名 若这个文件存在则是修改文件,不存在则是创建文件
注:
当一个路径下不存在对应文件时,可以通过touch创建文本文件;如果存在则会更改文件时间
[root@localhost ~]# stat d1
File: d1
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 17511398 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-11-26 13:58:39.155112536 +0800——文件上次被查看的时间
Modify: 2022-11-26 13:58:39.155112536 +0800——文件被修改的时间 (修改的是文件内容)
Change: 2022-11-26 13:58:39.155112536 +0800——改变时间 改变的是文件的元数据
Birth: 2022-11-24 00:31:10.634268781 +0800——创建时间 若文件被修改,则变成对应的修改时间
[root@localhost ~]#
回忆:什么是元数据——除了文件名之外的属性
通过touch一次性船舰多个文件的方法:
#touch a b c 在当前路径下一次性创建三个文件a b c 用空格隔开
#touch {1,2,3,4} 同上,用逗号隔开
#touch {a..d} 创建多个有序的文件,可用点.隔开..(两个)
#touch text{1..100} 创建的文件是从test1...test100
eg: #touch /root/a b c a是在/下面的root文件中,而b c 文件则是在当前路径下进行创建的
#touch /root/{a…c} a b c 三个文件都被创建在root文件下
#touch {abc} 只创建了一个文件 文件名是{abc}
mkdir DIRNAME… 创建目录文件——具有层级结构
创建方法:
#mkdir 文件名 加一个或多个文件名
#mkdir d1 d2 d3
#mkdir {d1,d2,d3}
#mkdir d{1..3} 以上三个都是基于一条命令下创建三个文件名
#mkdir -p /1/2/3/4 **/** 最后一个/可写可不写 一次性创建多个目录
如何查看多级目录
方法一:#ll /1
#ll /1/2
#ll /1/2/3 此方法较为麻烦
方法二:#tree DIRNAME
#tree /1 以树状的形式显示目录的结构
[root@localhost ~]# tree /1
/1
└── 2
└── 3
└── 4
3 directories, 0 files
[root@localhost ~]#
-p 副目录——多级目录时需要指定目录
-v 详细信息
#mkdir -pv /a/b/c/d 加上了V创建出的目录文件将会显示出详细信息
[root@localhost ~]# mkdir -pv /6/7/8/9
mkdir: created directory '/6'
mkdir: created directory '/6/7'
mkdir: created directory '/6/7/8'
mkdir: created directory '/6/7/8/9'
[root@localhost ~]#
eg:清屏——清除命令信息
快捷键ctrl+L
#clear
rm FILNAME 删除文件
删除方法:
#rm 加文件名 但不能删除目录文件
#rm -r 加文件名 可以删除任意文件包括目录文件
[root@localhost ~]# rm -r /1
rm: descend into directory '/1'? y
rm: descend into directory '/1/2'? y
rm: descend into directory '/1/2/3'? y (需要一级一级确认)
-r 表示递归——即同时把删除文件下的所有文件全部删除
-f 表示force强制——即不需要输入y来表示确认删除
#rm -rf /1 直接删除目录文件/1/2/3/4
注:
ctrl +c 表示终止当前命令的进行
*任意长度的任意字符(通用匹配符)
#rm -rf /root/1* 表示删除以1开头标记的所有文件
#rm -rf /root/*1 表示删除以1结尾标记的所有文件
#rm -rf /root/* 表示删除一个目录下的所有文件件
mv FILNAME 移动/改名文件 (文本与目录文件)
使用方法:
#mv 源文件(可以是多个) 目标的路径即目录(只有一个)
eg;
#touch /root/file
#mv /root/file / 把file文件移动到/根目录下
#touch /root/{a..c} 一次性移动多个文件
#mv /root/{a..c} / ====mv /root/a /root/b /root/c
移动并改名
#mv /root/file /newfile
(1)/目录下不存在newfile,将/root/file文件移动到/目录下并改名为newfile
(2)/目录下存在newfile,newfile是文本文件,将/root/file文件移动到/目录下并改名为newfile,提示是否覆盖 newfile是目录文件,将/root/file文件移动到/newfile目录下
删除字符:ctrl +删除键
重命名 (改名)
#mv /root/file /root/newfile
cp FILEMAN复制文件
#cp 源文件..... 目标路径(目录) 复制文本文件
#cp -r 源文件..... 目标路径(路径) 复制目录文件
eg:
#cp a / 把a文件复制到/根目录下
#cp a /a.text 把a文件复制到/根目录下并改名为a.text
查看文本文件内容的6个命令
/etc/passwd 默人的系统配置文件
#cat 连接一个文件,把该文件的内容打印到标准输出上——即终端
#cat /etc/passwed 查看etc/passwed文件内容 一次性把该文件内容输出出来
#cat -n 显示文件行号
#more 分页显示,最后把所有内容打印到终端
空格切换到下一页,到结尾结束
#less 分页显示,打开阅读模式——可以通过/或? 进行关键字匹配 /bash 回车 则bash会被标记,按n会跳转到下一个bash并标记
空格切换下一页 B切换上一页
退出需要按 q quit
#head 默认查看一个文件的前十行
#head -n 5/etc/passwed ====== #head -5 /etc/passwed n表示指定的行数
#tac 默认查看一个文件的后十行
#tac -n 5/etc/passwed
wegt FILNAME下载文件
#wegt 加链接地址
#wegt https://down.qq.com/qqweb/LinuxQQ/linuxqq_2.0.0-b2-1089_x86_64.rpm
-r 通过链接下载目录文件
#wegt -r
-O 把链接文件下载到指定路径并改名
#wegt -o/root/qq https://down.qq.com/qqweb/LinuxQQ/linuxqq_2.0.0-b2-1089_x86_64.rpm 将文件下载到root目录中并改名为qq
-P 把链接文件到指定路径下
#wegt -p/root https://down.qq.com/qqweb/LinuxQQ/linuxqq_2.0.0-b2-1089_x86_64.rpm 把qq下载到root中
-c 断电续传
#wegt -c
作业
1、#创建目录(尝试以下通过一条命令实现)
在/mnt下创建boot和sysroot目录
#mkdir /mnt {boot,sysroot}
在/mnt/boot下创建grub目录
#mkdi /mnt/boot /grub
在/mnt/sysroot下创建proc,sys,bin,sbin,lib,usr,var,etc,dev,home,root,tmp
#mkdir -p /mnt/sysroot bin/sbin/libproc/sys/bin/sbin/lib/usr/var/etc/dev/home/root/tmp
在/mnt/sysroot/lib下创建modules
#mkdir -p /mnt/sysroot/lib /modules
在/mnt/sysroot/var下创建run,log,lock
#mkdir -p /mnt/sysroot/var/run/log/lock
在/mnt/sysroot/etc下创建init.d
#mkdir -p /mnt/xysroot/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/boot.bak
4.复制/test所有有9字符命名的文件到/pub下。
#mkdir /pub
#cp /test/*9* /pub
5.移动/test所有有1字符命名的文件到/pub目录下。
#mv /test/*1* /pub