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 加入即可。