Q1、描述Linux发行版的系统目录名称命名规则以及用途。
命名规则:
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
标准Linux文件系统(如ext4),文件名称大小写敏感
目录 | 用途 |
---|---|
/boot | 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录 |
/bin | 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序 |
/sbin | 管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序 |
/lib | 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules) |
/lib64 | 专用于x86_64系统上的辅助共享库文件存放位置 |
/etc | 配置文件目录 |
/home/USERNAME | 普通用户家目录 |
/root | 管理员的家目录 |
/media | 便携式移动设备挂载点 |
/mnt | 临时文件系统挂载点 |
/dev | 设备文件及特殊文件存储位置 |
/opt | 第三方应用程序的安装位置 |
/srv | 系统上运行的服务用到的数据 |
/tmp | 临时文件存储位置 |
/usr | 程序安装目录 |
/var | 常态性变动文件的目录(例如:日志,缓存) |
/proc | 用于输出内核与进程信息相关的虚拟文件系统 |
/sys | 用于输出当前系统上硬件设备相关信息虚拟文件系统 |
Q2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
元数据信息包含:
- File:文件名
- Size:文件大小(单位:B)
- Blocks:文件所占块个数
- IO Block:每个数据块的大小(单位:B)
- regular file:普通文件(此处显示文件的类型)
- Device:
- Inode:文件的Inode号,文件的索引节点号
- Links:硬链接次数
- Access:权限
- Uid:(属主id/属主名)
- Gid:(属组id/属组名)
- Access:最近访问时间access time (atime)
- Modify:数据改动时间modification time (mtime)
- Change:元数据改动时间status time (ctime)
- Creat/Birth:文件创建时间
查看文件的元数据的方法:
stat命令:Display file or file system status. 显示文件或文件系统状态
使用语法:stat [OPTION]... FILE...
例如:
[root@Centos7 ~]# stat 1.txt
File: ‘1.txt’
Size: 7 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 209654136 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-18 14:28:11.167895259 +0800
Modify: 2020-01-18 14:28:03.013895556 +0800
Change: 2020-01-18 14:28:03.013895556 +0800
Birth: -
修改文件的时间戳的方法:
- touch命令:Update the access and modification times of each FILE to the current time.更新每个文件的访问和修改时间为当前时间。
- 使用语法: touch [OPTION]... FILE...
选项 | 功能 |
---|---|
不跟任何选项时三个时间戳都会被更新为当前时间。 | |
-c | 指定的文件路径不存在时不予创建; |
-a | 仅修改access time; |
-m | 仅修改modify time; |
-t | 指定改为某一时刻的时间,时间参数格式 [[CC]YY]MMDDhhmm[.ss]; |
例如:
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 142827497 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-27 13:43:54.361013402 +0800
Modify: 2020-02-24 21:18:07.044026549 +0800
Change: 2020-02-24 21:18:07.045026549 +0800
Birth: -
[root@Centos7 ~]# touch -m -t 202002242118.07 /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 142827497 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-27 13:43:54.361013402 +0800
Modify: 2020-02-24 21:18:07.000000000 +0800
Change: 2020-02-27 14:01:14.393045505 +0800
Birth: -
[root@Centos7 ~]# touch -a -t 202002242118.07 /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 142827497 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-24 21:18:07.000000000 +0800
Modify: 2020-02-24 21:18:07.000000000 +0800
Change: 2020-02-27 14:02:11.582047369 +0800
Birth: -
[root@Centos7 ~]# touch /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 142827497 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-27 14:04:32.717051970 +0800
Modify: 2020-02-27 14:04:32.717051970 +0800
Change: 2020-02-27 14:04:32.717051970 +0800
Birth: -
Q3、总结软连接和硬连接区别,并用实例操作说明。
硬链接 | 软链接 |
---|---|
创建硬链接会增加额外的记录项以引用文件 | 软链接不会额外增加记录项 |
每个目录引用相同的inode号 | 不增加或减少目标文件inode的引用计数 |
对应于同一文件系统上一个物理文件软链接 | 一个符号链接指向另一个文件 |
创建时链接数递增 | 链接数不会增加 |
不能跨越驱动器或分区 | 可以跨分区 |
不能对目录创建硬链接 | 可以对目录创建软链接 |
删除源文件不影响硬链接 | 删除源文件软链接失效 |
语法:
ln [OPTION]... TARGET LINK_NAME
[OPTION]
-s 软连接
例如:
#硬链接
[root@Centos7 ~]# ln /etc/passwd passwd
[root@Centos7 ~]# ls -lh passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd
-rw-r--r-- 2 root root 2.4K Feb 27 14:07 /etc/passwd
-rw-r--r-- 2 root root 2.4K Feb 27 14:07 passwd #创建硬链接后引用计数为2
[root@Centos7 ~]# rm -rf /etc/passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd
ls: cannot access /etc/passwd: No such file or directory
-rw-r--r-- 1 0 root 2.4K Feb 27 14:07 passwd #删除源文件后引用计数为1,并且UID显示为0
#删除源文件后可以正常打开查看硬链接文件
[root@Centos7 ~]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
#把文件拷贝回去
[root@Centos7 ~]# cp -p passwd /etc/passwd
[root@Centos7 ~]# ls -lh passwd
-rw-r--r-- 1 root root 2.4K Feb 27 14:07 passwd #引用计数为1,UID号恢复正常
#软链接
[root@Centos7 ~]# ln -s /etc/passwd passwd2
[root@Centos7 ~]# ls -lh /etc/passwd passwd2
-rw-r--r-- 1 root root 2.4K Feb 27 14:07 /etc/passwd
lrwxrwxrwx 1 root root 11 Feb 28 13:51 passwd2 -> /etc/passwd
[root@Centos7 ~]# rm -rf /etc/passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd2
ls: cannot access /etc/passwd: No such file or directory
lrwxrwxrwx 1 0 root 11 Feb 28 13:51 passwd2 -> /etc/passwd
#源文件被删,提示打开错误
[root@Centos7 ~]# head passwd2
head: cannot open ‘passwd2’ for reading: No such file or directory
Q4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
pwd 显示当前shell CWD的绝对路径
[root@Centos7 ~]$ pwd
/root
cd 改变目录
[root@Centos7 ~]$ cd /home/LiangJC/ #切换到/home/LiangJC
[root@Centos7 LiangJC]$cd - #切换到上次目录
/root
[root@Centos7 ~]$ cd .. #切换到父目录
[root@Centos7 /]$ cd #切换到家目录
[root@Centos7 ~]$
ls 列出当前目录的内容或指定目录
语法:ls [OPTION]... [FILE]...
选项 | 功能 |
---|---|
-a | 包含隐藏文件 |
-l | 显示额外的信息 |
-R | 目录递归 |
-d | 目录 |
-1 | 文件分行显示 |
-S | 按从大到小排序 |
-t | 按mtime排序 |
-u | 配合-t选项,显示并按atime从新到旧排序 |
-U | 按目录存放顺序显示 |
-X | 按文件后缀排序 |
例如:
[root@Centos7 ~]$ ls #列出当前目录的内容
anaconda-ks.cfg initial-setup-ks.cfg mysqld
[root@Centos7 ~]$ ls -a #列出当前目录的所有内容
. anaconda-ks.cfg .bash_logout .bashrc .config .dbus mysqld .viminfo
.. .bash_history .bash_profile .cache .cshrc initial-setup-ks.cfg .tcshrc .Xauthority
[root@Centos7 ~]$ ls -l #显示详细信息
total 12
-rw-------. 1 root root 1681 Jan 28 13:43 anaconda-ks.cfg
-rw-r--r--. 1 root root 1729 Jan 28 14:09 initial-setup-ks.cfg
-rw-r--r-- 1 root root 1010 Dec 6 20:49 mysqld
[root@Centos7 ~]$ ls -R #列出目下所有子文件夹及文件
.:
anaconda-ks.cfg initial-setup-ks.cfg mysqld test
./test:
a b
./test/a:
d e f
./test/a/d:
file1.txt
./test/a/e:
./test/a/f:
./test/b:
d e f
./test/b/d:
./test/b/e:
./test/b/f:
[root@Centos7 ~]$ ls -ld /root #仅显示目录
dr-xr-x---. 6 root root 266 Feb 28 20:42 /root
stat 显示文件或文件系统状态
语法:stat [OPTION]... FILE...
-L | 跟踪链接 |
---|---|
-f | 文件系统查看 |
-c FORMAT | 指定格式显示 |
-t | 简洁显示 |
例如:
[root@Centos7 ~]$ stat /etc/rc.local #仅查看软连接文件
File: ‘/etc/rc.local’ -> ‘rc.d/rc.local’
Size: 13 Blocks: 0 IO Block: 4096 symbolic link
Device: 802h/2050d Inode: 134778920 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-28 20:24:39.451655502 +0800
Modify: 2020-01-28 13:33:18.980844226 +0800
Change: 2020-01-28 13:33:18.980844226 +0800
Birth: -
[root@Centos7 ~]$ stat -L /etc/rc.local #查看软连接指向的文件
File: ‘/etc/rc.local’
Size: 473 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 68160925 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-10-31 07:31:52.000000000 +0800
Modify: 2018-10-31 07:31:52.000000000 +0800
Change: 2020-01-28 13:33:18.980844226 +0800
Birth: -
[root@Centos7 ~]$ stat -f / #查看文件系统
File: "/"
ID: 80200000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 26201600 Free: 25046649 Available: 25046649
Inodes: Total: 52428800 Free: 52297201
[root@Centos7 ~]$ stat -f /data
File: "/data"
ID: 80300000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 13100800 Free: 13092552 Available: 13092552
Inodes: Total: 26214400 Free: 26214397
[root@Centos7 ~]$ stat -f -t /data #简洁显示
/data 80300000000 255 58465342 4096 4096 13100800 13092552 13092552 26214400 26214397
[root@Centos7 ~]$ stat -c "%a %A %b %B %C %g %G %u %U" /etc/passwd
644 -rw-r--r-- 8 512 system_u:object_r:passwd_file_t:s0 0 root 0 root
cp 复制文件和目录
语法:cp [OPTION]... SOURCE... DIRECTORY
选项 | 功能 |
---|---|
-i | 覆盖前提示 |
-n | 不覆盖 |
-r,-R | 递归复制目录及内部的所有内容 |
-a | 归档,相当于-dR --preserv=all |
-d | 不复制原文件,只复制链接名 |
-p | 保留属性(mode,ownership,timestamps) |
--preserv[=ATTR_LIST] | mode权限,ownership所有权,timestamps时间戳,links链接,xattr额外属性,context安全上下文,all(全部) |
-f | 强制 |
-u | 只复制源比目标更新文件或目标不存在的文件 |
-b | 目标存在,覆盖前先备份,形式为 filename~ |
--backup=numbered | 目标存在,覆盖前先备份加数字后缀 |
例如:
#普通复制,时间改变了
[root@Centos7 ~]$ cp /etc/passwd .
[root@Centos7 ~]$ ls -lh /etc/passwd passwd
-rw-r--r--. 1 root root 2.3K Jan 28 13:42 /etc/passwd
-rw-r--r-- 1 root root 2.3K Feb 29 14:03 passwd
#保留属性复制
[root@Centos7 ~]$ cp -p /etc/passwd passwd2
[root@Centos7 ~]$ ls -lh /etc/passwd passwd2
-rw-r--r--. 1 root root 2.3K Jan 28 13:42 /etc/passwd
-rw-r--r-- 1 root root 2.3K Jan 28 13:42 passwd2
#保留属性且文件存在时先备份源文件
[root@Centos7 ~]$ touch /etc/passwd
[root@Centos7 ~]$ cp -bp /etc/passwd passwd2
cp: overwrite ‘passwd2’? y
[root@Centos7 ~]$ ls -lh passwd*
-rw-r--r-- 1 root root 2.3K Feb 29 14:03 passwd
-rw-r--r-- 1 root root 2.3K Feb 29 14:07 passwd2
-rw-r--r-- 1 root root 2.3K Jan 28 13:42 passwd2~
#复制目录保留原属性
[root@Centos7 ~]$ cp -pr /etc etc_bak
[root@Centos7 ~]$ ls -ld /etc etc_bak
drwxr-xr-x. 143 root root 8192 Feb 29 13:43 /etc
drwxr-xr-x 143 root root 8192 Feb 29 13:43 etc_bak
mv 移动和重命名文件
选项 | 功能 |
---|---|
-i | 交互式 |
-f | 强制 |
-b | 目标存在,覆盖前先备份 |
例如:
#重命名
[root@Centos7 ~]$ mv passwd2 file
#移动文件
[root@Centos7 ~]$ mkdir test
#移动文件夹
[root@Centos7 ~]$ mv test/ /tmp/
[root@Centos7 ~]$ ls -ld /tmp/test
drwxr-xr-x 2 root root 18 Feb 29 14:13 /tmp/test
rm 删除
rm [OPTION]... FILE...
选项 | 功能 |
---|---|
-i | 交互式 |
-f | 强制 |
-r | 递归,文件夹用 |
例如:
#删除文件
[root@Centos7 ~]$ rm passwd
rm: remove regular file ‘passwd’? y
#删除文件不提示
[root@Centos7 ~]$ rm -f passwd2~
#删除目录不提示
[root@Centos7 ~]$ rm -rf /tmp/test/
tree 显示目录树
选项 | 功能 |
---|---|
-d | 只显示目录 |
-L level | 指定显示的层级数目 |
-P pattern | 只显示由指定pattern匹配到的路径 |
例如:
#显示boot目录结构
[root@Centos7 ~]$ tree -d /boot
/boot
├── efi
│ └── EFI
│ ├── BOOT
│ └── centos
│ └── fw
├── grub
└── grub2
├── fonts
├── i386-pc
└── locale
10 directories
#显示var一级目录结构
[root@Centos7 ~]$ tree -d -L 1 /var
/var
├── account
├── adm
├── cache
├── crash
├── db
├── empty
├── games
├── gopher
├── kerberos
├── lib
├── local
├── lock -> ../run/lock
├── log
├── mail -> spool/mail
├── nis
├── opt
├── preserve
├── run -> ../run
├── spool
├── target
├── tmp
└── yp
22 directories
mkdir 创建目录
选项 | 功能 |
---|---|
-p | 存在于不报错,且可自动创建所需的各目录 |
-v | 显示详细信息 |
-m mode | 创建目录时直接指定权限 |
例如:
#创建子目录并显示
[root@Centos7 ~]$ mkdir -pv test/a/b/c
mkdir: created directory ‘test’
mkdir: created directory ‘test/a’
mkdir: created directory ‘test/a/b’
mkdir: created directory ‘test/a/b/c’
#创建权限为555的文件夹
[root@Centos7 ~]$ mkdir -m 555 test2
[root@Centos7 ~]$ ls -ld test2/
dr-xr-xr-x 2 root root 6 Feb 29 14:43 test2/
Q5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
cp /etc/profile /tmp/
vim /tmp/profile
:%s#^ \+##
:wq
Q6、在vim中设置tab缩进为4个字符
方法1:在vim的命令模式输入以下命令:
vim
:set tabstop=4
:wq
方法2:编辑~/.vimrc文件,添加set tabstop=4 :
vim ~/.vimrc
set tabstop=4
:wq