1. 描述Linux发行版的系统目录名称命名规则以及用途。
- 文件系统从根目录开始,用"/"表示
- 标准Linux文件系统(如ext4),文件名称大小写敏感
- 路径分隔的/
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文
件 灰色-->其他文件 - 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
目录的用途
/bin 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序。存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里
/boot 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/dev 设备文件及特殊文件存储位置
/etc 配置文件目录
/home 普通用户家目录,各个普通用户的家目录都是在此
/root 管理员的家目录
/sbin 存放二进制可执行文件,超级权限用户才能访问
/tmp 存放各种临时文件
/var 用于存放运行时需要改变数据的文件
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
/mnt 临时文件系统的安装点
proc 用于输出内核与进程信息相关的虚拟文件系统
sys 用于输出当前系统上硬件设备相关信息虚拟文件系统
/opt 第三方应用程序的安装位置
/usr 全局共享的只读数据路径
2. 描述文件的元数信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
查看文件元数信息的主要命令有:file ,ls type,stat等
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-12-01 20:10:11.470129625 +0800
Modify: 2020-12-01 20:10:00.536129214 +0800
Change: 2020-12-01 20:10:00.536129214 +0800
Birth: -
file:文件的完整名称
Size:文件的数据大小
Blocks:占用磁盘的块数
IO Block:IO 块的大小
Device:所在设备
regular:文件的类型
Indoe:文件的节点
Links:文件的链接数
Access:文件的访问权限
Uid:属主id/用户
Gid:属组id/组名
access time :访问时间,atime,读取文件内容
modify time :修改时间, mtime,改变文件内容
change time :改变时间, ctime,元数据发生改变(chmod,chown)
何修改文件的时间戳
touch -a 修改access time 和 change time
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-12-01 20:45:05.814208313 +0800
Modify: 2020-12-01 20:45:05.814208313 +0800
Change: 2020-12-01 20:45:05.814208313 +0800
Birth: -
[root@centos7 ~]# touch -a /tmp/profile
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-12-01 20:46:08.593210671 +0800
Modify: 2020-12-01 20:45:05.814208313 +0800
Change: 2020-12-01 20:46:08.593210671 +0800
touch -m 修改Modify time和 change time
[root@centos7 ~]# touch -m /tmp/profile
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-12-01 20:46:08.593210671 +0800
Modify: 2020-12-01 20:46:29.943211474 +0800
Change: 2020-12-01 20:46:29.943211474 +0800
Birth: -
当然很多命令操作都会更改文件的时间戳,如chown , cat , vim等。
[root@centos7 ~]# chown kenny /tmp/profile
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kenny) Gid: ( 0/ root)
Access: 2020-12-01 20:46:08.593210671 +0800
Modify: 2020-12-01 20:46:29.943211474 +0800
Change: 2020-12-01 20:48:50.279216746 +0800
Birth: -
[root@centos7 ~]# cat /tmp/profile > /dev/null
[root@centos7 ~]# stat /tmp/profile
File: ‘/tmp/profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 67792775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kenny) Gid: ( 0/ root)
Access: 2020-12-01 20:49:26.591218111 +0800
Modify: 2020-12-01 20:46:29.943211474 +0800
Change: 2020-12-01 20:48:50.279216746 +0800
Birth: -
[root@centos7 ~]#
3. 总结软连接和硬连接的区别,并用实例操作说明。
| 软链接 | 硬链接 | |
|---|---|---|
| 本质 | 不是同一个文件,inode不同 | 同一个文件,inode相同 |
| 跨文件系统 | 支持 | 不支持 |
| 目录 | 支持 | 不支持 |
| 链接数 | 创建和删除,链接数不变 | 新的硬链接,链接数增加 |
| 相对路径 | 原始文件相对于链接文件的相对路径(一般用绝对路径设置) | 原始文件相对于当前工作路径 |
| 文件类型 | 链接文件 | 和源文件相同 |
| 设置命令 | ln -s 命令 | ln默认是硬链接 |
示例说明
/tmp 和/data是不同的文件系统,同文件系统不能建立硬链接。建成后的inote号,和链接数,文件大小都不同。
root@centos7 ~]# ln -s /tmp/profile /data/profile-softlink
[root@centos7 ~]# ln /tmp/profile /data/profile-hardlink
ln: failed to create hard link ‘/data/profile-hardlink’ => ‘/tmp/profile’: Invalid cross-device link
[root@centos7 ~]# ln /tmp/profile /root/profile-hardlink
[root@centos7 ~]# ls -li /root/profile-hardlink /data/profile-softlink /tmp/profile
67 lrwxrwxrwx 1 root root 12 Dec 1 21:19 /data/profile-softlink -> /tmp/profile
67792775 -rw-r--r-- 2 kenny root 1819 Dec 1 20:46 /root/profile-hardlink
67792775 -rw-r--r-- 2 kenny root 1819 Dec 1 20:46 /tmp/profile
4. Linux上的文件管理类命令有哪些,其常用的使用方法及其相关示例演示。
-
显示当前工作目录:pwd
选项:
-P 显示真实物理路径
-L 显示链接路径(默认)[root@centos7 ~]# pwd /root
-
更改目录: cd
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;[root@centos7 ~]# cd /tmp [root@centos7 tmp]#
-
列出目录内容: ls
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
stat 用于显示文件的状态信息[root@centos7 tmp]# ls -l total 8 -rwx------. 1 root root 836 Nov 22 03:35 ks-script-y0Mnoe -rw-r--r-- 2 kenny root 1819 Dec 1 20:46 profile drwx------ 2 root root 6 Nov 29 14:06 vmware-root_531-4282236595 drwx------ 2 root root 6 Nov 22 04:06 vmware-root_534-2957583592 drwx------. 2 root root 6 Nov 22 03:49 vmware-root_538-2999460707 drwx------. 2 root root 6 Nov 22 03:46 vmware-root_539-4248811709 drwx------ 2 root root 6 Dec 1 15:49 vmware-root_542-2991268582 drwx------. 2 root root 6 Nov 22 03:42 vmware-root_564-2965382482 -rw-------. 1 root root 0 Nov 22 03:30 yum.log
-
复制文件和目录
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。[root@centos7 tmp]# cp /tmp/profile /data [root@centos7 tmp]#
mv 移动和重命名文件
语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
选项:
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
[root@centos7 tmp]# mv /data/profile ~/
[root@centos7 tmp]# ls ~/
anaconda-ks.cfg profile profile-hardlink
rm 删除
语法:
rm [OPTION]... FILE...
选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
[root@centos7 tmp]# rm ~/profile
rm: remove regular file ‘/root/profile’? y
[root@centos7 tmp]# ls ~/
anaconda-ks.cfg profile-hardlink
[root@centos7 tmp]#
5. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符。
[root@centos7 tmp]# cp /etc/profile /tmp
[root@centos7 tmp]# vim /tmp/profile
#扩展命令模式下输入
:%s/^[[:blank:]]*//g
#或者
:%s/^\s*//g
6. 在vim中设置tab缩进为4个字符
编辑~/.vimrc,添加两行内容,也可以在扩展命令模式中设置。
set ts=4
set et
:set invlist 将不可见的字符显示出来