Linux学习记录9——文件目录管理命令

一.学习的内容

        本次主要学习Linux系统日常运维工作中最常用的命令,实现对文件的创建、复制、剪切、更名、删除等操作。

1、touch

        touch命令用于创建普通空白文件设置文件时间信息。命令格式:touch [参数] 文件名称

        touch命令的参数及其作用如下表所示:

表1 touch命令的参数及其作用
参数作用
-a更新Atime
-m更新Mtime
-d同时修改Atime和Mtime

        如下图所示,分别使用 stat 命令和 ls 命令查看 anaconda-ks.cfg 文件的修改时间(红线),两者输出的结果是一致的。之后,再使用 echo 命令往 anaconda-ks.cfg 文件内写入数据;最后再使用 stat 命令 或者 ls命令 查看文件最后一次修改时间;最终,通过上下对比可以发现,输出的是最新的一次修改时间。此外,还学习到了如何将数据写入文件。

图1  写入数据并查看修改时间

         如图2所示,使用cat 命令查看 anaconda-ks.cfg 文件,输出结果中有我们刚才输入的数据(绿线)。之后再执行 stat 命令,输出结果中的 Atime 也变成了刚刚访问时的时间。由此可见,Atime确实被设置成了 relatime ,只有当 Atime 超前于 Mtime时,再次访问文件,它才会更新。

图2  Atime更新

         如下图所示,使用 -d 参数,同时修改 anaconda-ks.cfg 文件的Atime和Mtime,结果如下:

图3  同时修改Atime和Mtime

        从结果中可以发现,Atime和Mtime都被修改成了指定时间。而Ctime更新为执行 touch -d 命令时的时间(这是因为文件的时间属性被修改了)。

        使用 -m 参数更新 Mtime,同时Ctime时间也更新,理由和上述一样。

图4    touch -m命令

        使用 -a 参数更新Atime,同时Ctime时间也会更新。

图5  touch -a命令

        下面使用 touch 命令,去创建一个普通文件:        

图6   创建普通文件

        如上图所示,使用 touch 命令创建了一个普通文件 touch.test 。  

2、mkdir

        mkdir命令用于创建空白目录文件。命令格式为:mkdir [参数] 文件名称

        除了能创建单个空白目录外,mkdir 命令还可以结合 -p 参数来创建出具有嵌套层叠关系的文件目录。如下图所示,先创建个空白目录文件 mkdir.test ,然后再使用 -p 参数,在刚才的目录内创建 test1/test2目录文件。

图7  mkdir命令创建目录

         使用 tree 命令查看刚才创建的目录文件,如下图所示:

图8 使用tree命令查看 mkdir.test

3、cp

        cp命令用于复制文件目录。命令格式:cp [参数]  源文件名称  目标文件名称

        cp命令的参数及其作用如下表2所示:

表2 cp命令参数及其作用
参数作用
-p保留文件原始属性
-d若对象为链接文件,则保留该链接文件的属性
-r递归持续复制
-i若目标文件存在则询问是否覆盖
-a相当于 -pdr

        在Linux系统中,复制操作具体分为3种情况:

        如果目标文件时目录,则会把源文件复制到该目录中;

        如果目标文件也是普通文件,则会询问是否要覆盖它;(源文件也只能是普通文件)

        如果目标文件不存在,则执行正常的复制操作(目源文件内部结构和内容都一样,只是最外层文件名不同) 

        值得注意的是,在复制目录时要加上 -r 参数。

         如下图所示,当目标文件是目录(Desktop)时,使用 cp 命令,分别把 touch.test 普通文件和 cp.test 目录文件复制到 Desktop 目录中。    

图9  目标文件时目录

         当目标文件时普通文件时,如下图所示,将 cp.test 目录下的 x.log 普通文件,复制到 touch.test 普通文件中,会询问是否覆盖掉源文件的内容。

图10  目标文件是普通文件

         当目标文件不存在时,如下图所示。首先使用 ls 命令查看,并没有 cp.testA 这个文件;然后使用 cp -r cp.test  cp.testA 命令,将源文件复制到 cp.testA 中;最后,通过 cd 命令 不难发现,cp.testA文件 已经被创建了。

图11  目标文件不存在

        比较一下,目标目录文件存在和不存在时,把一个目录复制进去的不同(上面是目录文件不存在,下面是目录文件存在)。不难发现,目标目录不存在时,就相当于把源目录的最外层名字换掉,其他都不变;而目标目录存在时,直接把源目录复制到目标目录下。

图12

4、mv  

        mv命令用于剪切文件重命名文件。命令格式:mv  [参数]  源文件名称  目标文件名称

        剪切操作不同于复制操作的地方是,它会默认把源文件删除,只保留剪切后的文件。如果在一个目录中将某个文件剪切后还粘贴到当前目录下,其实也就是对该文件进行了重命名

         mv命令和cp命令有很大的相似度,如下面这些图所示:

图13   源文件和目标文件是目录
图14  源文件为普通文件,目标文件是目录

         上面两幅图展现了当目标文件为目录时,执行mv 命令后的输出结果,不难看出它和cp 命令没有太多的区别,只是会删掉源文件剪切目录时不用 -r 参数。

图15  目标文件也是普通文件

        上图表明了,当目标文件也是普通文件时,执行 mv 命令的输出,也和cp 命令一样,会询问是否覆盖,除此之外源文件被删除了。

图16  无目标文件时

        图16表明了,在无目标文件时,执行 mv 命令的输出。可以看到,也是把源文件名字更换了一下,然后放到你想放的路径下。(源文件被删除)        

图17  文件的重命名

        上图展现了对一个文件重命名的操作,这正是借用了 mv 命令会删除源文件这一特性 以及 无目标文件时的剪切操作。

5、rm

        rm命令用于删除文件目录。命令格式:rm  [参数]  文件名称

表3  rm命令参数及其作用
参数作用
-r删除目录
-f强制执行
-i删除前询问
-v显示过程

         在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后加 -f 参数来强制删除。另外,要想删除一个目录,需要在 rm命令后加一个 -r 参数才可以,否则删除不掉。如下图所示:

图18  删除目录
图19  使用-f 参数强制删除

6、dd

        dd命令用于按照指定大小和个数的数据块来复制文件转换文件

        命令格式:dd  if=文件名称  of=文件名称  count=参数值  bs=参数值

        dd命令的参数及其作用,如下表所示:

表4   dd命令的参数及其作用

参数

作用
if输入的文件名称
of输出的文件名称
count设置要复制“块”的个数
bs设置每个“块”的大小

        关于count和bs,举个例子:小明想要盛一碗饭,则勺子大小(bs)和 用勺子盛饭的次数(count)之间会进行平衡 。由此可见 ,只要能满足需求,可随意搭配组合方式。

7、file

        file命令用于查看文件的类型。命令格式:file 文件名称

        在Linux系统中一切皆文件,但是它们又不像Windows系统那样有后缀,因此很难通过文件名一眼判断出具体的文件类型,这是就需要使用file 命令来查看了。

        如下图所示,分别查看 Music、anaconda-ks.cfg和 touch.test 文件。其中,新创建的touch.test 文件显示为空。

图20  file命令

  

         使用echo 命令向刚才的空文件写入数据,再次查看文件类型,输出为 ASCII text 。

图21  手动写入数据的文件

8、tar

        tar 命令用于压缩或解压文件。命令格式:tar  [参数]  文件名称

        tar命令的参数及其作用如下表所示:

参数作用
-c创建压缩文件
-x解开压缩文件
-z用gzip压缩或解压
-j用bzip2压缩或解压
-v显示压缩或解压过程
-f目标文件名
-C指定解压到的目录

        使用 "tar czvf  etc.tar.gz  /etc " 命令将 /etc 文件压缩成文件名为 etc.tar.gz的文件,如下图所示:

图22  压缩文件

         如下图所示,使用 ls 命令 查看刚才压缩过的文件,然后再使用 " tar xzvf  etc.tar.gz -C ect"命令,该命令的意思是:将当前目录下的 etc.tar.gz 文件,解压到当前目录下的 ect 文件中(先使用 mkdir 命令创建一个  /root/etc 目录):

图23  解压

二.本次学习遇到的问题

三、问题的答案及解决办法

        补:

        1、touch命令的-a和-m参数后面不能直接跟随指定的时间。这两个参数用于更新文件的访问时间(atime)和修改时间(mtime),而不是设置特定的时间。要设置特定的时间戳,你可以使用-d参数,该参数允许你指定一个日期时间来设置文件的访问时间和修改时间。

        2、目录是一种特殊类型的文件,它们用于存储其他文件和目录。文件系统中的所有数据都存储在文件中,无论是用户创建的文档、应用程序文件还是系统配置文件,都是文件系统中的文件。目录则是用来组织和管理这些文件的结构化方式。

3、wc命令的 -w 参数 空格是字符的分隔符。

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值