Linux重度使用命令详解(科普mkdir,touch命令)三
  TEZNKK3IfmPf 2023年11月14日 13 0

这两个命令通常也是重度使用的,但使用频率相对前面两个系列是有所不如的,因为这两个命令不具有信息收集的功能,通常用在安装软件,部署服务,脚本部署软件服务的时候使用(安装部署并不是常常需要的嘛)。下面对于这两个命令做详细介绍

一,mkdir命令

mkdir 是make directory的缩写,对于英文较好的同学,理解这个是毫无压力的,也就是说,这个命令是专门针对目录的,建立目录的。

那么,Linux中的目录是和Windows不同的,Linux的文件系统,不管是ext3,ext4,还是xfs等等格式的文件系统,都是从 /  也就是根目录开始的,也就是说,只要是绝对路径,必定是由 / 开始(绝对路径和相对路径在此不做深入讲解,毕竟过于基础啦)。

总的来说,文件系统的构成的起点一定是 /  ,如果非要具化出来文件系统的话,那么就是树形结构,主枝干就是 /   (这里要考的,请大家牢记,哈哈)。因此,有这么一个在Windows和Linux都有的十分形象的命令tree,当然,文件系统具体的构成,组织形状这些就在此不一一讲解了,要讲清楚就不是一两段话可以说清的了。

mkdir命令如果是用在手动部署安装阶段,是比较灵活的,比如,mkdir  test   就表示在当前目录下建立一个名称为test的目录,这一写法是默认相对路径,也就是不指名相对路径,在当前目录下建立test文件夹还有第二种写法, mkdir ./test  此种写法是表明相对路径。

mkdir命令如果是用在自动化部署安装阶段,比如使用脚本部署安装,那么, 我们为了保证此命令遇到存在的目录仍然可以成功建立目录,需要加参数p ,也就是 mkdir -p 绝对路径/文件夹名称 ,例如,当前目录下有一个树形目录 a ,b,c,d 目录,我想在相对当前目录的第四层目录页就是d目录下建立e目录,那么,正确的命令应该是 (如果没有-p参数,会报错提示你 a  ,b  ,c  ,d  目录已经存在无法建立。):

mkdir -p ./a/b/c/d/e

当然,mkdir也可以批量的建立具有一定层级关系的目录,这个在安装部署的时候尤其有用,也就是说mkdir支持shell的数组,例如,以下例子(opt下建立具有递归关系的30层目录,这里只需要记住,{}包裹的一定是一组同级目录,一个/ 代表一个层级,只要记住这个就可以啦):

[root@hdp-1 ~]# mkdir -p /opt/{a,b}/{c,d}/{a,b}/{a,b}
[root@hdp-1 ~]# tree /opt/
/opt/
├── a
│   ├── c
│   │   ├── a
│   │   │   ├── a
│   │   │   └── b
│   │   └── b
│   │       ├── a
│   │       └── b
│   └── d
│       ├── a
│       │   ├── a
│       │   └── b
│       └── b
│           ├── a
│           └── b
└── b
    ├── c
    │   ├── a
    │   │   ├── a
    │   │   └── b
    │   └── b
    │       ├── a
    │       └── b
    └── d
        ├── a
        │   ├── a
        │   └── b
        └── b
            ├── a
            └── b

30 directories, 0 files

小结

mkdir命令是建立文件夹的专属目录,由于文件系统的特性,如果,我们需要建立一个树形的目录,那么,应该使用-p参数保证目录能够建立成功而不报错。这一点在脚本内的应用尤其重要(脚本不报错是基本的要求嘛)

二,touch命令

touch命令专为空白文本文件的建立,修改文件的建立日期,修改日期等熟悉而生。此命令的主要功能是快速建立空白文本文件,还一个是配合crack活动,修改文件的建立修改日期,从而防止crack活动被过早侦测到(比如,crack入侵了某个Linux系统,那么,把木马或者有破坏性的脚本文件修改其文件属性,把建立时间更改到入侵之前,可以起到迷惑宿主的作用----find / -type f -a 会找不到木马文件哦)。

例如(这个mariadb的安装包文件没有touch前的修改日期是2017年,touch后统一变成执行touch命令的时间啦,也就是不加参数,所有时间统一到执行命令的时间):

[root@hdp-1 mariadb]# stat mariadb-5.5.56-2.el7.x86_64.rpm 
  File: ‘mariadb-5.5.56-2.el7.x86_64.rpm’
  Size: 9158636   	Blocks: 17888      IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 67668894    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-09-26 23:08:45.242994060 +0800
Modify: 2017-08-11 02:13:49.000000000 +0800
Change: 2021-09-26 23:08:45.242994060 +0800
 Birth: -
[root@hdp-1 mariadb]# touch mariadb-5.5.56-2.el7.x86_64.rpm 
[root@hdp-1 mariadb]# stat mariadb-5.5.56-2.el7.x86_64.rpm 
  File: ‘mariadb-5.5.56-2.el7.x86_64.rpm’
  Size: 9158636   	Blocks: 17888      IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 67668894    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-09-26 23:09:41.928283412 +0800
Modify: 2021-09-26 23:09:41.928283412 +0800
Change: 2021-09-26 23:09:41.928283412 +0800
 Birth: -

touch 命令比较常用的参数有:-a -m -t ,通常-a和-m 是与-t同时使用。

 

  • 参数说明
  • a 改变档案的读取时间记录。
  • m 改变档案的修改时间记录。
  • c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
  • f 不使用,是为了与其他 unix 系统的相容性而保留。
  • r 使用参考档的时间记录,与 --file 的效果一样。
  • d 设定时间与日期,可以使用各种不同的格式。
  • t 设定档案的时间记录,格式与 date 指令相同。
  • --no-create 不会建立新档案。
  • --help 列出指令格式。

下面举例说明修改文件访问时间和修改文件改动时间:

修改文件访问时间为2011年1月11号11点11分:

[root@hdp-1 ~]# stat nginx.log 
  File: ‘nginx.log’
  Size: 36578     	Blocks: 72         IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1283936     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-09-23 13:08:43.838174390 +0800
Modify: 2021-09-23 13:08:59.922032094 +0800
Change: 2021-09-23 13:08:59.922032094 +0800
 Birth: -
[root@hdp-1 ~]# touch -a -t 201101111111 nginx.log 
[root@hdp-1 ~]# stat nginx.log 
  File: ‘nginx.log’
  Size: 36578     	Blocks: 72         IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1283936     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-01-11 11:11:00.000000000 +0800
Modify: 2021-09-23 13:08:59.922032094 +0800
Change: 2021-09-26 23:26:53.969917152 +0800
 Birth: -

修改文件改动时间为2012年12月22日22点22分:

root@hdp-1 ~]# stat nginx.log 
  File: ‘nginx.log’
  Size: 36578     	Blocks: 72         IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1283936     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-01-11 11:11:00.000000000 +0800
Modify: 2021-09-23 13:08:59.922032094 +0800
Change: 2021-09-26 23:26:53.969917152 +0800
 Birth: -
[root@hdp-1 ~]# touch -m -t 201212222222 nginx.log 
[root@hdp-1 ~]# stat nginx.log 
  File: ‘nginx.log’
  Size: 36578     	Blocks: 72         IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1283936     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-01-11 11:11:00.000000000 +0800
Modify: 2012-12-22 22:22:00.000000000 +0800
Change: 2021-09-26 23:29:13.735356193 +0800
 Birth: -
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   52   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   30   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   29   0   0 linuxbind
  TEZNKK3IfmPf   2024年05月31日   40   0   0 linuxshell
TEZNKK3IfmPf