1、描述Linux发行版的系统目录名称命名规则以及用途。
Linux系统基础目录的命名法则:
1、遵循FHS(Filesystem Hierarchy Standard)标准
2、严格区分大小写
3、目录也是文件,在同一路径下,两个文件不能同名
4、支持使用除 / 以外的任意字符
5、最长字符不能超过255个字符
Linux发行版基本目录架构及用途描:
2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件属性的数据。
元数据信息包含:
- 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:文件创建时间
查看文件的元数据的方法:
stat命令:stat – display file or file system status,使用stat 查看文件的元数据
使用语法:stat FILE…
- 示例:查看/etc/passwd文件的元数据
[root@localhost ~]# stat /etc/passwd
文件:”/etc/passwd”
大小:2172 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:36107143 硬链接:1
权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-11-11 16:48:22.325033369 +0800
最近更改:2019-11-11 16:48:22.325033369 +0800
最近改动:2019-11-11 16:48:22.325033369 +0800
创建时间:-
修改文件的时间戳的方法:
touch命令:touch – change file timestamps修改时间戳
使用语法: touch [OPTION]… FILE…
注意:~]#touch /tmp/file_name 当touch的文件不存在时,会在目标目录下创建file_name空文件
选项:
不跟任何选项时三个时间戳都会被更新为当前时间。
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t :指定改为某一时刻的时间,时间参数格式 [[CC]YY]MMDDhhmm[.ss]
- 示例:将/tmp/passwd文件的最近更改时间改为2019年11月10日09点08分07秒
~]#touch -m -t 201911100908.07 /tmp/passwd
[root@localhost ~]# stat /tmp/passwd
文件:”/tmp/passwd”
大小:2172 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:36107143 硬链接:1
权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-11-11 16:48:22.325033369 +0800
最近更改:2019-11-10 09:08:07.000000000 +0800
最近改动:2019-11-11 16:56:23.744986993 +0800
创建时间:
文件的时间是很重要的,因为,如果文件的时间误判的话,可能会造成某些程序无法顺利的运作。那么万一我发现了一个文件来自未来,该如何让该文件的时间变成『现在』的时刻呢?就用touch这个指令即可。不要怀疑系统时间会『来自未来』!很多时候会有这个问题的!举例来说在安装时选错了时区,导致系统时间比现实时间快,若此时创建了文件,再你将系统时间修改成现实时间后,那么你之前创建的文件就是来自未来的。
至于某些情况下,由于 BIOS 的设定错误,导致系统时间跑到未来时间,并且你又建立了某些文件。 等你将时间改回正确的时间时,该文件不就变成来自未来了。
touch 这个指令最常被使用的情况是:
1、建立一个空的文件;
2、将某个文件日期修订为目前 (mtime 与 atime)
3、总结软连接和硬连接区别,并用实例操作说明。
ln -s 原文件 目标文件
特征:1、相当于windows的快捷方式
硬链接
ln 源文件 目标文件
特征:1、原文件和链接文件的属性完全一样
2、链接文件和源文件的关系类似于:复制+同步更新
3、当原文件丢失,硬链接文件还可以访问
4、不能跨分区,不能针对目录使用
5、原理:原文件和硬链接文件的节点相同的,1个文件名只能对应1个节点号。但是1个节点号能对应多个文件名。所以,他们的属性完全相同,并且修改了其中一个的内容另外一个也会跟着修改。
[root@db01 tmp]# ln -s a a.link
[root@db01 tmp]# ll -i a a.link
36107143 -rw-r--r-- 1 root root 2172 Nov 10 09:08 a
36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a
[root@db01 tmp]# mv a a.bak
[root@db01 tmp]# cat a.link
cat: a.link: No such file or directory
[root@db01 tmp]# ll -i a a.hard a.link
36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a
36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.hard
36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a
[root@db01 tmp]# mv a a.bak
[root@db01 tmp]# ll -i a.bak a.hard a.link
36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.bak
36107143 -rw-r--r-- 2 root root 2172 Nov 10 09:08 a.hard
36107167 lrwxrwxrwx 1 root root 1 Nov 17 14:51 a.link -> a
[root@db01 tmp]# tail a.hard
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
guest:x:1000:1000:guest:/home/guest:/bin/bash
unbound:x:991:986:Unbound DNS resolver:/etc/unbound:/sbin/nologin
mysql:x:990:985::/data/mysql/:/sbin/nologin
[root@db01 tmp]# echo "123" >> a.bak
[root@db01 tmp]# tail -1 a.hard
123
1、软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的。软连接的inode跟原文件的inode是不一致的
2、硬链接是不会建立inode。他只是在文件原里的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。
3、硬链接是一个文件别名。
4、软链接可以跨文件系统,硬链接不可以
5、软链接可以对一个不存在的文件名进行链接,硬链接不行。
6、软链接可以对目录进行连接,硬连接不可以
7、两种链接都可以通过ln来创建,ln默认创建的是硬链接
8、使用-s开关可以创建软链接。
4、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的权限为711
rmdir [OPTION]... DIRECTORY...
-p:删除目录后如果其父目录为空,则一并删除
示例:rmdir -p /data/test/A --删除A目录后,test目录为空,一并删除
cd:切换目录
示例:cd ..:切换到上级目录
cd ~:切换回自己的家目录
cd -:在上一次目录与当前目录直接来回切换
文件管理命令
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键:退出
文件状态信息查看
stat命令:
格式:stat FILE ...
示例:
[root@db01 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2172 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34116827 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-16 17:00:01.317350780 +0800
Modify: 2019-11-08 16:54:45.542965605 +0800
Change: 2019-11-08 16:54:45.571965602 +0800
Birth: -
5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
~]#cp /etc/profile /tmp
~]#cd /tmp
~]#vim profile
在末行模式下输入:%s#^[[:blank:]]\+##g
6、在vim中设置tab缩进为4个字符
在用户家目录中添加配置文件:
~]#vim .vimrc
添加以下一行
set tabstop=4
重读配置,立即生效:
~]#source .vimrc