Linux发行版的系统目录名称命名规则及用途
Linux系统基础目录的命名法则:
1、遵循FHS(Filesystem Hierarchy Standard)标准
2、严格区分大小写
3、目录也是文件,在同一路径下,两个文件不能同名
4、支持使用除 / 以外的任意字符
5、最长字符不能超过255个字符
Linux发行版基本目录架构及用途描述
描述文件的元数据有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
元数据信息包含:
File:文件名
Size:文件大小(单位:B)
Blocks:文件所占块个数
IO Block:每个数据块的大小(单位:B)
regular file:普通文件(此处显示文件的类型)
Inode:文件的Inode号,文件的索引节点号
Links:硬链接次数
Access:权限
Uid:(属主id/属主名)
Gid:(属组id/属组名)
Context:文件所在的环境
Access:最近访问时间access time (atime)
Modify:数据改动时间modification time (mtime)
Change:元数据改动时间status time (ctime)
Creat/Birth:文件创建时间查看文件的元数据的方法:
[root@centos7 ~]#stat /etc/passwd
File: ‘/etc/passwd’
Size: 2517 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 135045203 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-03 11:16:04.007598750 +0800
Modify: 2020-03-02 11:15:37.520178093 +0800
Change: 2020-03-02 11:15:37.521178093 +0800
Birth: -如何修改文件的时间戳信息:
不跟任何选项时三个时间戳都会被更新为当前时间。
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t :指定改为某一时刻的时间,时间参数格式 [[CC]YY]MMDDhhmm[.ss]
- 实列:
[root@centos7 ~]#touch -a -t 202003040754 /etc/passwd
[root@centos7 ~]#stat /etc/passwd
File: ‘/etc/passwd’
Size: 2517 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 135045203 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-04 07:54:00.000000000 +0800
Modify: 2020-03-02 11:15:37.520178093 +0800
Change: 2020-03-04 07:54:50.362195261 +0800
Birth: -
总结硬链接和软连接的区别,并用实列操作说明。
软链接
ln -s 原文件 目标文件
特征:1、相当于windows的快捷方式
2、符号链接,所以链接文件大小都很小
3、当运行软连接的时候,会根据链接指向找到真正的文件,然后执行
4、所有链接文件的权限都是777,而真正的权限是由指向的那个文件决定的
5、原文件丢失后,软链接无法访问,会报找不到的错误
6、ls -al ,软连接后面箭头执行的时源文件硬链接
ln 源文件 目标文件
特征:1、原文件和链接文件的属性完全一样
2、链接文件和源文件的关系类似于:复制+同步更新
3、当原文件丢失,硬链接文件还可以访问
4、不能跨分区,不能针对目录使用
5、原理:原文件和硬链接文件的节点相同的,1个文件名只能对应1个节点号。但是1个节点号能对应多个文件名。所以,他们的属性完全相同,并且修改了其中一个的内容另外一个也会跟着修改实例如下:
创建a文件的软连接b,并查看a和软链接文件a.link的inodes、权限、大小,如下:
[root@centos ~]# ln -s a a.link
[root@centos ~]# ll -i
total 6728
394681 -rw-r--r-- 1 root root 6888896 Nov 10 21:42 a
394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a从命令的执行结果上看,结论如下:
1、a文件的inode号为394681,a.link文件inode为394522,inode号不一致。
2、符号链接,所以链接文件大小都很小。a.link大小为1bit,而a文件的大小为6.6M。
3、所有a.link文件的权限都是777,而真正的权限是由指向的那个文件决定的删除文件a,访问a.link链接文件
[root@centos ~]# mv a a.bak
[root@centos ~]# cat a.link
cat: a.link: No such file or directory总结:原文件丢失后,软链接无法访问,会报找不到文件的错误
创建a文件的硬链接a.hard,查看a和软链接文件a.link的inodes、权限、大小等元数据。
[root@centos ~]# ln a a.hard
[root@centos ~]# ll -i
total 13456
394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a
394681 -rw-r--r-- 3 root root 6888896 Nov 10 21:42 a.hard
394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a总结:原文件和链接文件的属性完全一样,元数据完全一样。
删除a文件后,硬链接文件a.hard的情况
[root@VM_0_15_centos ~]# mv a a.bak
[root@VM_0_15_centos ~]# ll -i
total 13456
394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.bak
394699 -rw-r--r-- 2 root root 6888896 Nov 10 22:39 a.hard
394522 lrwxrwxrwx 1 root root 1 Nov 10 21:45 a.link -> a
[root@VM_0_15_centos ~]# tail a.hard
999991
999992
999993
999994
999995
999996
999997
999998
999999
1000000总结:当原文件丢失,硬链接文件还可以访问。
[root@centos ~]# echo "1">>a.bak
[root@centos ~]# tail -1 a.hard
1总结:链接文件和源文件的关系类似于:复制+同步更新
综合以上实例,软连接和硬链接的区别总结如下:
软链接和硬链接的区别:在linux的文件系统中,保存在磁盘分区中的文件不管事什么类型都给它分配一个编号,称为索引节点号inode。具体如下:
1、软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的。软连接的inode跟原文件的inode是不一致的
2、硬链接是不会建立inode。他只是在文件原里的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。
3、硬链接是一个文件别名。
4、软链接可以跨文件系统,硬链接不可以
5、软链接可以对一个不存在的文件名进行链接,硬链接不行。
6、软链接可以对目录进行连接,硬连接不可以
7、两种链接都可以通过ln来创建,ln默认创建的是硬链接
8、使用-s开关可以创建软链接。
Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
目录管理命令
ls:列出指定目录下的内容格式:
ls [OPTION]... [FILE]...
-a:显示所有文件包括隐藏文件
-A:显示除.和..之外的所有文件
-l,--long:显示文件的详细属性信息
-h:对文件大小进行单位换算,可能影响精度
-d:查看目录本身而非其内部的文件
-r:逆序显示文件
-R:递归显示文件示例:ls -lah / --详细显示/目录下的所有文件(包括隐藏文件)
ls -ldh /etc --详细显示/etc目录本身
ls -lhv / --倒序显示/目录下所有文件(包括隐藏文件)
ls -R /etc --递归显示/etc下所有文件mkdir:创建目录格式:
mkdir [OPTION]... DIRECTORY...
-p:自动按需创建父目录
-m:创建目录时给定权限示例:mkdir -p /data/test/A/B --在/data目录下递归创建/test/A/B三个目录
mkdir -m 711 -p /data/MODE/A --在/data目录下递归创建MODE/A两个目录同时指定目录A的权限为711rmdir:删除目录格式:
rmdir [OPTION]... DIRECTORY...
-p:删除目录后如果其父目录为空,则一并删除
示例:rmdir -p /data/test/A --删除A目录后,test目录为空,一并删除cd:切换目录
示例:cd ..:切换到上级目录
cd ~:切换回自己的家目录
cd -:在上一次目录与当前目录直接来回切换
pwd:显示当前目录文件管理命令
cp:复制
单源复制:cp [OPTION]... [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:cp [OPTION]... SOURCE... DIRECTORY(DEST必须为directory)
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归复制目录
示例:cp -if /data/[1-3].txt /data/test --test必须为目录,把三个文件一起复制到test中
cp -r /data /practice --把data目录及目录下的内容一起复制到practice中mv:剪切
单源复制:mv [OPTION]... [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)
多源复制:mv [OPTION]... SOURCE... DIRECTORY(DEST必须为directory)
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
示例:mv -i /data/[1-3].txt /practice --把/data目录下三个txt文件剪切到/practice下rm:删除
格式:rm [OPTION]... FILE...
-i:交互式复制,即覆盖前提醒用户确认
-f:强制覆盖目标文件
-r,-R:递归处理,将制定目录下的所有文件包括目录一并删除
示例:rm -rf /practice --递归删除/practice目录文本内容管理命令
cat:正向查看文本内容
格式:cat [OPTION]... [FILE]...
-n:给显示的文本行编号
-E:显示行结束符号$
示例:cat -n /etc/fstab --查看/etc/fatab内容并显示行号tac:倒叙查看文本内容
格式:tac [OPTION]... [FILE]...
示例:tac /etc/passwd --倒叙查看文本内容head:显示文本内容,默认显示头10行
格式:head [OPTION]... [FILE]...
-n #:显示文本头#行内容
示例:head -5 /etc/passwd --显示/etc/passwd文件头5行内容tail:显示文本内容,默认显示后10行
格式:tail [OPTION]... [FILE]...
-n #:显示文本后#行内容
-f:查看文件尾部内容结束后不退出,跟随显示新增的行
示例:tail -8 /etc/passwd --显示/etc/passwd文件后8行内容more:分屏显示文本内容,每次显示一屏显示完停止
格式:more [options] file [...]
Space键:显示文本下一屏内容
Enter键:只显示文本下一行内容
b键:显示文本上一屏内容
q键:退出less:分屏显示文本内容,不主动退出
格式:less [options] file [...]
Space键:显示文本下一屏内容
Enter键:只显示文本下一行内容
b键:显示文本上一屏内容
q键:退出
复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符。
复制/etc/profile至/tmp/目录:
cp 命令
解释说明:cp - copy files and directories格式:
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…常用选项:
-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 // if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used)
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为 filename~复制/etc/profile至/tmp/目录
实列:
[root@centos7 ~]#cp /etc/profile /tmp/用查找替换命令删除/tmp/profile文件中的行首的空白字符
实列:
[root@centos7 tmp]#sed 's@^[[:space:]]+@@' profile
在vim中设置tab键缩进为4个字符。
- 临时生效
使用vim编辑器打开一个配置文件,直接输入命令模式下直接输入:set tabstop=4就设置成功tab键缩进4个字符的设置了。 - 注:(这个配置为临时生效)
- 永久生效
终端中当前用户的家目录下输入vim .vimrc
.vimrc中输入set tabstop=4 // 设置tab缩进四个字符
永久生效成功