1. 描述Linux发行版的系统目录名称命名规则以及用途。
1.1. FHS目录结构
挂载点 | 功能 |
---|---|
/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 |
/var | variable data files |
/proc | 用于输出内核与进程信息相关的虚拟文件系统 |
/sys | 用于输出当前系统上硬件设备相关信息虚拟文件系统 |
/selinux | security enhanced Linux,selinux相关的安全策略等信息的存储位置 |
1.1.1. /usr/
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32 位 使 用 lib64:只存在64位系统
include: C 程 序 的 头 文 件 (header files) share:结构化独立的数据,例如doc, man等local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
1.1.2. /var/
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
1.1.3. CentOS7目录变化[以下目录为软连接]
/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和/usr/lib
/lib64 和 /usr/lib64
2. 描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
2.1. 文件元数据
以下基于ext文件系统进行描述
inode number : 节点编号
file type : 文件类型(普通文件,目录,连接,设备,管道...)
permission : 权限(0644,0755,1777等12位权限位)
link count : 硬链接数
uid : 属主信息
gid : 属组信息
size : 文件大小
file date : 文件的日期时间(创建时间,修改时间,改变时间,访问时间)
block : 数据块大小及占用数据块数量
2.2. 查看元数据方法
使用stat FILENAME进行查看
stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1664 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 50331715 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2020-05-17 10:48:06.964028005 +0800
Modify: 2020-05-04 21:04:18.103138486 +0800
Change: 2020-05-04 21:04:18.103138486 +0800
Birth: -
2.3. 修改文件时间戳
使用touch命令进行修改
Usage:touch [OPTION]... FILE...
-a 仅改变 atime,同时会修改ctime
-m 仅改变 mtime,同时会修改ctime
-t 修改为指定日期时间,格式为 [[CC]YY]MMDDhhmm[.ss]
# 查看文件信息
stat statfile
File: ‘statfile’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 50331715 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-06-21 07:00:46.645166801 +0800
Modify: 2020-06-21 07:00:46.645166801 +0800
Change: 2020-06-21 07:00:46.645166801 +0800
Birth: -
# 修改atime访问时间
touch -a -t 202006011359.59 statfile
stat statfile
File: ‘statfile’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 50331715 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-06-01 13:59:59.000000000 +0800
Modify: 2020-06-21 07:00:46.645166801 +0800
Change: 2020-06-21 07:02:07.687172798 +0800
Birth: -
# 修改mtime修改时间
touch -m -t 202006180000.01 statfile
stat statfile
File: ‘statfile’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 50331715 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-06-01 13:59:59.000000000 +0800
Modify: 2020-06-18 00:00:01.000000000 +0800
Change: 2020-06-21 07:03:05.121177048 +0800
Birth: -
3. 总结软连接和硬连接区别,并用实例操作说明。
3.1. 软连接与硬链接的区别
硬链接
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:
ln filename [linkname ]
软连接
一个符号链接指向另一个文件
ls - l的 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
语法:
ln -s filename [linkname]
3.2. 操作实例
# 硬链接
ln statfile hardlinkfile
ls -il
50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 hardlinkfile
50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
# 软连接
ls -il statfile softlinkfile
50331820 lrwxrwxrwx. 1 root root 8 Jun 21 07:13 softlinkfile -> statfile
50331715 -rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
4. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
4.1. ls列出文件目录
Usage: ls [OPTION]... [FILE]...
-a:列出所有文件
-A:列出除.和..外的所有文件
-d:仅列出目录本身的属性
-l:使用长格式
-S:以文件大小排序,从大到小
-r:反向排序
-t:安装mtime排序
-h,--human-readable:对文件大小进行单位转换,但转换后可能会损失精度-b
# 使用长格式,列出含有隐藏属性的文件
ls -la .
total 32
dr-xr-x---. 2 root root 196 Jun 21 07:13 .
dr-xr-xr-x. 18 root root 236 May 4 21:03 ..
-rw-------. 1 root root 2133 Jun 21 06:23 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 2 root root 0 Jun 18 00:00 hardlinkfile
-rw-------. 1 root root 1024 May 17 15:41 .rnd
lrwxrwxrwx. 1 root root 8 Jun 21 07:13 softlinkfile -> statfile
-rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 577 May 17 15:14 .viminfo
# 使用长格式,列出不含.和..的文件,从小到大排序
ls -AlSr .
total 32
-rw-r--r--. 2 root root 0 Jun 18 00:00 statfile
-rw-r--r--. 2 root root 0 Jun 18 00:00 hardlinkfile
lrwxrwxrwx. 1 root root 8 Jun 21 07:13 softlinkfile -> statfile
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-------. 1 root root 577 May 17 15:14 .viminfo
-rw-------. 1 root root 1024 May 17 15:41 .rnd
-rw-------. 1 root root 2133 Jun 21 06:23 .bash_history
# 仅列出目录本身属性
ls -ld /etc/
drwxr-xr-x. 73 root root 8192 Jun 21 06:23 /etc/
# 长格式显示/etc/下修改时间从旧到新排序
ls -ltr /etc/
4.2. tree列出文件目录树
Usage: [OPTION]... [directory...]
-L:目录层级深度
-d:仅包含目录,不含文件
# 显示当前路径目录树
tree .
.
├── hardlinkfile
├── softlinkfile -> statfile
└── statfile
# 显示/etc/下仅包含的目录,深度为2
tree -L 2 -d /etc/
4.3. stat显示文件元数据
display file or file system status 获取指定文件的元数据
详见2.3节提供的案例
4.4. file查看文件类型
查看文件真实类型用于确认文件内容组织格式的类型
~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
~]# file /dev
/dev: directory
~]# file /dev/sda
/dev/sda: block special
4.5. mkdir创建目录
Usage: mkdir [OPTION]... DIRECTORY...
-p:递归创建目录
-v:显示创建信息
~]# mkdir -v a
mkdir: created directory ‘a’
~]# mkdir a/b/c
mkdir: cannot create directory ‘a/b/c’: No such file or directory
~]# mkdir -p a/b/c
4.6. rmdir删除空目录
rmdir - remove empty directories
-p: 递归删除空目录的父目录
-v:显示删除信息
~]# tree
.
├── a
│ └── b
│ └── c
├── hardlinkfile
├── softlinkfile -> statfile
└── statfile
3 directories, 3 files
~]# rmdir -p a/b/c
~]# tree
.
├── hardlinkfile
├── softlinkfile -> statfile
└── statfile
4.7. cp文件复制
4.7.1. 基本命令
单源复制
cp [OPTION]... [-T] SOURCE DEST
|-- 如果DEST不存在:则事先创建此文件,并将源文件的数据流填充至DEST中;
|-- 如果DEST存在:
|-- 如果DEST是非目录文件:则覆盖目标文件;
|-- 如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
多源复制
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
|-- 如果SOURCE是目录:默认不复制目录【cp: omitting directory】
|-- 如果DEST不存在:错误;
|-- 如果DEST存在:
|-- 如果DEST是非目录文件:错误;
|-- 如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
OPTIONS:
-i:交互式复制,即覆盖之前提醒用户确认;
-f:强制覆盖目标文件;
-r, -R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:-dR --preserve=all, archive,用于实现归档;
--preserv=
mode:权限
ownership:属主和属组
timestamps: 时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述所有属性
4.7.2. 实例
1、单源复制:DEST不存在
~]# ls /tmp/
~]# cp /etc/fstab /tmp/noDEST
~]# ls /tmp/
noDEST
2、单源复制:DEST存在为目录
~]# ls /tmp/new/
~]# cp /etc/fstab /tmp/new/
~]# ls /tmp/new/
fstab
3、单源复制:DEST存在为文件
~]# cp /etc/fstab /tmp/newfile # 复制第一次
~]# ls /tmp/
newfile
~]# cp /etc/fstab /tmp/newfile # 复制第二次
cp: overwrite ‘/tmp/newfile’? y
~]# cp -f /etc/fstab /tmp/newfile # -f强制覆盖失败[为何?]
cp: overwrite ‘/tmp/newfile’? y
~]# \cp -f /etc/fstab /tmp/newfile # 强行取消alias复制成功
4、多源复制:DIRECTORY存在
[root@bogon ~]# mkdir /tmp/new
[root@bogon ~]# ls /tmp/new/
[root@bogon ~]# cp /etc/fstab /etc/passwd /tmp/new/
[root@bogon ~]# ls /tmp/new/
fstab passwd
5、多源复制:DIRECTORY不存在
[root@bogon ~]# ls /tmp/
[root@bogon ~]# cp /etc/passwd /etc/fstab /tmp/new
cp: target ‘/tmp/new’ is not a directory
4.8. mv文件移到
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
OPTIONS:
-i:交互式;
-f:force
# 文件/目录重命名
~]# touch /tmp/abc
~]# mv /tmp/abc /tmp/def
# 移动目录
~]# mkdir -p /usr/local/src/abc/file
~]# mv /usr/local/src/abc/ /tmp/
~]# ls /tmp/
abc def
4.9. rm文件删除
rm [OPTION]... FILE...
OPTIONS:
-i:interactive
-f:force
-r: recursive
删除目录:rm -rf /PATH/TO/DIR
|-- 危险操作:rm -rf /*
|-- 注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
5. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
cp /etc/profile /tmp/
sed -i "s@^ \+@@g" /tmp/profile
6. 在vim中设置tab缩进为4个字符
6.1. 在终端临时生效
vim file.txt
:set tabstop=4
6.2. 配置永久生效
echo "set tabstop=4" >> ~/.vimrc
网友评论