1.描述Linux发行版的系统目录名称命名规则以及用途
命名规则
- 文件系统从根目录下开始,用“/”表示
- 标准Linux文件系统(如:ext4),文件名称大小写敏感
- 路径分隔的 /
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引
号来引用
系统目录用途
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
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相关的安全策略等信息的存储位置
2.描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
文件系统中的数据有两类, 一类是数据,另一类是元数据
- 数据:普通文件中的实际数据
- 元数据:指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者、以及文件数据块的分布信息,具体时间查看等等;
[root@localhost ~]# stat file
File: file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 33575045 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-02-07 22:31:03.137022076 +0800
Modify: 2021-02-07 22:31:03.137022076 +0800
Change: 2021-02-07 22:31:03.137022076 +0800
Birth: -
[root@localhost ~]# touch -a " " file
[root@localhost ~]# stat file
File: file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 33575045 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-02-07 22:31:56.659022162 +0800
Modify: 2021-02-07 22:31:03.137022076 +0800
Change: 2021-02-07 22:31:56.659022162 +0800
Birth: -
3.总结软链接和硬链接区别,并用实例操作说明。
硬链接 | 软链接 | |
---|---|---|
本质 | 是同一个文件 | 不是同一个文件 |
跨设备 | 不支持 | 支持 |
inode | 相同 | 不同 |
链接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 创建或删除,链接数不会变化 |
文件夹 | 不支持 | 支持 |
相对路径 | 原始文件相对路径是相对于当前工作目录 | 原始文件的相对路径是相对于链接文件的相对路径 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 链接文件将无法访问 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
范例:硬链接
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1335 Dec 25 12:10 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Feb 7 22:31 file
-rw-r--r--. 2 root root 0 Feb 7 22:31 file.ln
[root@localhost ~]# ln file /boot/file.ln
ln: failed to create hard link '/boot/file.ln' => 'file': Invalid cross-device link
范例:软链接
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1335 Dec 25 12:10 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Feb 7 22:31 file
[root@localhost ~]# ln -s /root/file /boot/file.ln
[root@localhost ~]# ll file /boot/file.ln
lrwxrwxrwx. 1 root root 10 Feb 7 23:24 /boot/file.ln -> /root/file
-rw-r--r--. 1 root root 0 Feb 7 22:31 file
4.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
pwd:显示当前工作目录
-P 显示真实物理路径
-L 显示链接路径(默认)
[root@localhost ~]# pwd -P
/root
basename:只取文件名不要路径
[root@localhost ~]# basename /etc/sysconfig/network-scripts/ifcfg-ens160
ifcfg-ens160
dirname:只取路径不要文件名
[root@localhost ~]# dirname /etc/sysconfig/network-scripts/ifcfg-ens160
/etc/sysconfig/network-scripts
cd:改变目录
-P 切换至物理路径,而非软链接目录
[root@localhost ~]# cd /
ls:列出目录内容
-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
[root@localhost ~]# ls -ald /
dr-xr-xr-x. 17 root root 224 Dec 25 11:59 /
stat:查看文件状态
[root@localhost ~]# stat file
File: file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 33575045 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-02-07 22:31:56.659022162 +0800
Modify: 2021-02-07 22:31:56.659022162 +0800
Change: 2021-02-07 23:22:41.020027061 +0800
Birth: -
file:查看文件类型
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
touch:创建文件和刷新时间
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
[root@localhost ~]# touch file.txt
cp:复制文件和目录
-i 如果目标已存在,覆盖前提示是否覆盖
-n 不覆盖,注意两者顺序
-r, -R 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all,常用于备份功能
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p 等同--preserv=mode,ownership,timestamp
-v --verbose
-f --force
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
--backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为filename.~#~ ,可以保留多
个版本
[root@localhost ~]# cp -av /etc/ /data/backup`date +%F`
[root@localhost ~]# cp -a /root /data/rootdir
mv:移动和重命名文件
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
rm:删除文件
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
[root@localhost ~]# rm -rf /
tree:显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定wild-card pattern匹配到的路径
mkdir:创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir:删除空目录
-p 递归删除父空目录
-v 显示详细信息
5.复制 /etc/profile 至 /tmp/ 目录,用查找替换命令删除 /tmp/profile 文件中的行首的空白字符
[root@localhost ~]# cp /etc/profile /tmp/
[root@localhost ~]# cat /tmp/profile | tr -d ' '
6.在vim中设置tab缩进为4个字符
[root@localhost ~]# vim ~/.vimrc
#!/bin/bash
set et
set ts=4
[root@localhost ~]# . ~/.vimrc