Linux发行版的系统目录名称命名规则及用途
关于Linux的目录结构是有一定的规范的,即特定的目录应该存放特定的文件。此规范由文件系统层次结构标准(Filesystem Hierarchy Standard)实现。关于此标准文档,可以参考 :www.pathname.com/fhs。
描述文件的元数据信息
我们可以通过 stat 命令来查看文件的元数据信息。
[root@localhost ~]# ls -al edwardhan -rw-r--r-- 1 root root 4 Apr 26 08:19 edwardhan [root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:19:13.412006412 +0800 Modify: 2020-04-26 08:19:13.412006412 +0800 Change: 2020-04-26 08:19:13.412006412 +0800 Birth: -
File: 文件的名称;
Size: 文件的大小;
Blocks: 文件所占块的数量;
IO Block: 每个数据块的大小;
regular file: 表示是什么类型的文件;
Inode: inode编号具体是多少;
Links: 被硬链接了多少次;
Access: 具体权限;
Uid: 属主ID号;
Gid: 属组ID号;
access: 最近访问的时间;
modify: 最近的修改时间;
change: 最近元数据变更的时间;
我们可以用 touch 命令来修改文件的时间戳信息
touch [option]... Files -a change only the access time -c, --no-create do not create any files -m change only the modification time -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
使用 touch -a 来改变文件的访问时间;
[root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:19:13.412006412 +0800 Modify: 2020-04-26 08:19:13.412006412 +0800 Change: 2020-04-26 08:19:13.412006412 +0800 Birth: - [root@localhost ~]# date Sun Apr 26 08:47:30 CST 2020 [root@localhost ~]# man touch [root@localhost ~]# touch -a edwardhan [root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:48:52.866047766 +0800 Modify: 2020-04-26 08:19:13.412006412 +0800 Change: 2020-04-26 08:48:52.866047766 +0800 Birth: -
使用 touch -m 来改变文件的修改时间;
[root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:48:52.866047766 +0800 Modify: 2020-04-26 08:19:13.412006412 +0800 Change: 2020-04-26 08:48:52.866047766 +0800 Birth: - [root@localhost ~]# [root@localhost ~]# touch -m edwardhan [root@localhost ~]# [root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:48:52.866047766 +0800 Modify: 2020-04-26 08:52:39.479053033 +0800 Change: 2020-04-26 08:52:39.479053033 +0800 Birth: - [root@localhost ~]# [root@localhost ~]# touch -mt 200808080808.08 edwardhan [root@localhost ~]# [root@localhost ~]# stat edwardhan File: ‘edwardhan’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100663418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-26 08:48:52.866047766 +0800 Modify: 2008-08-08 08:08:08.000000000 +0800 Change: 2020-04-26 08:54:11.602055174 +0800 Birth: - [root@localhost ~]# [root@localhost ~]# ls -al edwardhan -rw-r--r-- 1 root root 4 Aug 8 2008 edwardhan
软链接和硬链接的区别
1、本质上来说,硬链接是同一个文件,inode是一致的,只不过是有很多名字;软链接则是新的一个文件,来指向原来的文件,inode是不一致的。
2、硬链接不支持跨分区,而软链接支持跨分区;
3、硬链接不支持对目录创建,而链连接支持目录创建连接;
4、硬链接是相互平等的关系,而链连接存在依赖关系;
5、硬链接的链接数是可以增/减的,而软链接则没有;
6、使用相对路径时,原始文件的路径,以及当前的工作路径,存在很大差异;
7、文件类型不同。硬链接原来的文件类型是什么,则链接文件的类型还是什么,而软链接出来的文件,其中文件类型为 l ;
8、使用 ln 时,加 -s 参数,表示的是软链接,不加 -s ,表示的是硬链接。
[root@localhost data]# ll total 0 -rw-r--r-- 1 root root 0 Apr 27 08:24 motd [root@localhost data]# ln motd motd.link [root@localhost data]# ll total 0 -rw-r--r-- 2 root root 0 Apr 27 08:24 motd -rw-r--r-- 2 root root 0 Apr 27 08:24 motd.link [root@localhost data]# ln -s motd motd.soft [root@localhost data]# ll total 0 -rw-r--r-- 2 root root 0 Apr 27 08:24 motd -rw-r--r-- 2 root root 0 Apr 27 08:24 motd.link lrwxrwxrwx 1 root root 4 Apr 27 08:54 motd.soft -> motd
常用文件管理类命令
cp 常用选项 -i 覆盖前提示; -n 不覆盖,需要多加注意两者的顺序; -r, -R 递归复制目录及内部的所有内容; -a 归档,相当于 -dR --preserv=all -d --no-dereference --preserv=links 不复制原文件,只复制链接名; --preserv[=ATTR_LIST] mode: 权限 ownership:属主属组 timestamp: links xattr context all -p 等同于 --perserv=mode,ownership,timestamp -v --verbose 显示过程,比如 -av 归档时,可以看见过程; -f --force 其实是,如果能够删除的话,创建一个新文件; -u --update 只复制源比目标更新文件或目标不存在的文件; -b 目标存在,覆盖前先备份,形式为 filename~ --backup=numbered 目标存在,覆盖前先备份加数字后缀;
归档,备份文件,保留所有属性:
[root@localhost data]# ll total 4 -rw-r--r-- 1 root root 541 Apr 26 07:52 fstab [root@localhost data]# cp -a fstab{,.bak} [root@localhost data]# ll total 8 -rw-r--r-- 1 root root 541 Apr 26 07:52 fstab -rw-r--r-- 1 root root 541 Apr 26 07:52 fstab.bak
复制链接,而不复制原文件:
[root@localhost data]# ls -al /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 26 07:55 /etc/grub2.cfg -> ../boot/grub2/grub.cfg [root@localhost data]# cp /etc/grub2.cfg . [root@localhost data]# ls -al grub2.cfg -rw-r--r-- 1 root root 4333 Apr 27 06:49 grub2.cfg [root@localhost data]# rm -rf grub2.cfg [root@localhost data]# cp -d /etc/grub2.cfg . [root@localhost data]# ls -al total 0 drwxr-xr-x 2 root root 23 Apr 27 07:05 . dr-xr-xr-x. 18 root root 256 Apr 27 06:48 .. lrwxrwxrwx 1 root root 22 Apr 27 07:05 grub2.cfg -> ../boot/grub2/grub.cfg
复制文件时,保留时间戳信息:
[root@localhost data]# ls -al /etc/fstab -rw-r--r--. 1 root root 541 Apr 26 07:52 /etc/fstab [root@localhost data]# date Mon Apr 27 07:07:02 CST 2020 [root@localhost data]# cp --preserv=timestamp /etc/fstab . [root@localhost data]# ls -al ./fstab -rw-r--r-- 1 root root 541 Apr 26 07:52 ./fstab [root@localhost data]# cp /etc/fstab fstab.bak [root@localhost data]# ls -al total 8 drwxr-xr-x 2 root root 36 Apr 27 07:07 . dr-xr-xr-x. 18 root root 256 Apr 27 06:48 .. -rw-r--r-- 1 root root 541 Apr 26 07:52 fstab -rw-r--r-- 1 root root 541 Apr 27 07:07 fstab.bak
mv 常用选项 -i 交互式; -f 强制; -b 目标存在,覆盖前先备份;
复制/etc/profile文件至/tmp/目录下,用查找替换命令删除/tmp/profile文件中的行首的空白字符.
[root@localhost tmp]#cp /etc/profile /tmp/ [root@localhost tmp]#vim /tmp/profile :%s/^[[:space:]]\+//
在vim中设置tab缩进为4个字符
使用 vim 打开一个文件时,默认的 tab 是缩进 8 个字符,我们可以输入 :set tabstop=4 命令,来设置tab的缩进为 4 个字符。
如果想要保存下来这个配置,可以编辑 /etc/vimrc 文件 或者 用户家目录下的 .vimrc 文件,将 set tabstop=4 加入即可。