0
点赞
收藏
分享

微信扫一扫

openEuler基础(十三)文件管理命令(touch、cp、mv、rm)

云竹文斋 2022-03-18 阅读 59

提出问题:
我想新建一个空文件,该如何操作?
我想复制一个文件到指定文件夹中,该如何操作?
我想移动一个文件到指定文件夹中,该如何操作?
我想删除一个文件,该如何操作?

一、新建空文件touch命令
touch命令可用于创建空文件;也可用于修改文件的时间戳。
语法:touch [OPTION]… DIRECTORY…
参数:
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。

示例1:在当前目录下,新建一个空文件(用自己的名字拼音命名.txt)。

[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz
[root@localhost ~]# touch zhangsan.txt
[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz  zhangsan.txt
[root@localhost ~]# 

示例2:在当前路径下,新建两个空文件(a.txt和b.txt)。

[root@localhost ~]# touch a.txt b.txt

示例3:同时修改上面两个文件(a.txt和b.txt)的时间戳,修改创建时间为2015年9月10日8点30分7秒。

[root@localhost ~]# touch -t 201509100830.07 a.txt b.txt
[root@localhost ~]# ll
总用量 54M
-rw-r--r--. 1 root root    0  1月  7 11:42 201509100830.07
-rw-------. 1 root root 1.1K 12月 17 19:33 anaconda-ks.cfg
-rw-r--r--. 1 root root    0  9月 10  2015 a.txt
-rw-r--r--. 1 root root    0  9月 10  2015 b.txt
-r--r--r--. 1 root root  54M 12月 17 17:56 vm.tar.gz
-rw-r--r--. 1 root root    0  1月  7 11:38 zhangsan.txt
[root@localhost ~]#

示例4:将参照文件(用自己的名字拼音命名的文件)相应的时间戳记的数值作为指定文件(a.txt)时间戳记的新值。

[root@localhost ~]# touch -r zhangsan.txt a.txt
[root@localhost ~]# ll
总用量 54M
-rw-r--r--. 1 root root    0  1月  7 11:42 201509100830.07
-rw-------. 1 root root 1.1K 12月 17 19:33 anaconda-ks.cfg
-rw-r--r--. 1 root root    0  1月  7 11:38 a.txt
-rw-r--r--. 1 root root    0  9月 10  2015 b.txt
-r--r--r--. 1 root root  54M 12月 17 17:56 vm.tar.gz
-rw-r--r--. 1 root root    0  1月  7 11:38 zhangsan.txt
[root@localhost ~]#

示例5:查看各文件(用自己的名字拼音命名的文件.txt、 a.txt和b.txt )的详细时间属性。

[root@localhost ~]# stat zhangsan.txt
  文件:zhangsan.txt
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:1707161     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-01-07 11:38:53.693780063 +0800
最近更改:2022-01-07 11:38:53.693780063 +0800
最近改动:2022-01-07 11:38:53.693780063 +0800
创建时间:2022-01-07 11:22:27.989669823 +0800
[root@localhost ~]#

二、复制文件cp命令
cp命令用于复制文件或者目录,可以一次复制单个文件,也可以一次复制多个文件(cp 命令属于高危命令,使用不慎就会有丢失数据的危险)。
语法:cp [OPTION]… SOURCE… DIRECTORY
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成硬链接文件。
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件。

cp 命令既可以复制文件,也可以复制目录。我们先来看看如何复制文件。
示例1:在当前目录下,用touch创建a.txt,把源文件a.txt不改名复制到 /tmp/ 目录下。

[root@localhost ~]# touch a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  vm.tar.gz
[root@localhost ~]# cp  a.txt  /tmp
[root@localhost ~]# ls /tmp
a.txt     VMwareDnD

示例2:在当前目录下,创建a.txt,把源文件a.txt复制到/tmp/目录下,并改名为b.txt。

[root@localhost ~]# touch a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  vm.tar.gz
[root@localhost ~]# cp  a.txt  /tmp/b.txt
[root@localhost ~]# ls /tmp
b.txt         VMwareDnD

接下来,了解如何复制目录。
cp 命令也可以复制目录。此时,只需使用“-r”参数即可。

示例3:把/tmp/目录,复制到/root/目录下,不改名。

[root@localhost ~]# cp -r /tmp/ /root/
[root@localhost ~]# ls
anaconda-ks.cfg  tmp  vm.tar.gz

示例4:把/tmp/目录,复制到/root/目录下,并改名为test。

[root@localhost ~]# cp -r /tmp/ /root/test/
[root@localhost ~]# ls
anaconda-ks.cfg  test  vm.tar.gz

cp 命令也可以创建符号链接,类似于快捷方式。此时,只需使用“-s”参数即可。
示例5:在/root/目录下,为/tmp/ 目录下的b.txt文件创建软链接(符号链接),并改名为test.txt

[root@localhost ~]# touch /tmp/b.txt
[root@localhost ~]# cp -s /tmp/b.txt /root/test.txt
[root@localhost ~]# ls
anaconda-ks.cfg  test.txt  vm.tar.gz

下面,通过一个完整流程,训练cp命令用法。
1.在当前目录下,创建三个不存在的文件(用自己的名字拼音命名.txt、 a.txt和b.txt)。

[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz
[root@localhost ~]# touch zhangsan.txt a.txt b.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  b.txt  vm.tar.gz  zhangsan.txt
[root@localhost ~]# 

2.在/tmp/目录下创建一个目录mydir。

[root@localhost ~]# mkdir /tmp/mydir/
[root@localhost ~]# ls /tmp
mydir             VMwareDnD
[root@localhost ~]# 

3.将文件(用自己的名字拼音命名.txt)拷贝至/tmp/mydir/目录下,不更改文件名。

[root@localhost ~]# cp zhangsan.txt /tmp/mydir/
[root@localhost ~]# ls /tmp/mydir
zhangsan.txt
[root@localhost ~]# 

4.将指定文件(a.txt和b.txt)拷贝至/tmp/mydir/目录下,并更改文件名为test1.txt、test2.txt。

[root@localhost ~]# cp a.txt /tmp/mydir/test1.txt
[root@localhost ~]# cp b.txt /tmp/mydir/test2.txt
[root@localhost ~]# ls /tmp/mydir
test1.txt  test2.txt  zhangsan.txt
[root@localhost ~]# 

5.将/tmp/mydir/目录拷贝至当前目录下,并重命名为mytest。

[root@localhost ~]# cp -r /tmp/mydir/ /root/mytest/
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  b.txt  mytest  vm.tar.gz  zhangsan.txt
[root@localhost ~]# ls mytest/
test1.txt  test2.txt  zhangsan.txt
[root@localhost ~]# 

6.在当前目录下,为/tmp/mydir/test1.txt创建符号链接(即快捷方式),并命名为mylink.txt

[root@localhost ~]# cp -s /tmp/mydir/test1.txt /root/mylink.txt

三、移动文件mv命令
mv命令用于移动件或者目录(高危命令,使用不慎就会有丢失数据的危险)。
如果原文件和目标文件在同一个父目录里面,则mv命令的效果就相当于给文件改名。
语法:mv [选项] 源文件或目录 目标文件或目录。
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖。
-u :若目标文件已经存在,且 source 比较新,才会更新(update)。

示例1:重命名文件,将当前目录下的文件a.txt改名为temp.txt。

[root@localhost ~]#touch a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt
[root@localhost ~]# mv a.txt temp.txt
[root@localhost ~]# ls
anaconda-ks.cfg  temp.txt

示例2:剪切文件,将当前目录下的文件a.txt移动到/tmp目录下,并重命名为temp.txt。

[root@localhost ~]#touch a.txt 
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt
[root@localhost ~]# mv a.txt /tmp/temp.txt

示例3:剪切文件,将当前目录下的文件a.txt移动到/tmp目录下,并重命名为temp.txt,若目标文件已经存在,直接覆盖。

[root@localhost ~]#touch a.txt 
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt
[root@localhost ~]# mv -f a.txt /tmp/temp.txt

示例4:重命名目录,将目录/root/mydir改名为/root/mytest

[root@localhost ~]# mkdir mydir
[root@localhost ~]# ls
anaconda-ks.cfg mydir
[root@localhost ~]# mv mydir/ mytest/

示例5:移动目录,将目录/root/mydir移动到/tmp/mytest

[root@localhost ~]# mkdir mydir
[root@localhost ~]# ls
anaconda-ks.cfg mydir
[root@localhost ~]# mv mydir/ /tmp/mytest/

下面,通过一个完整流程,训练mv命令用法。
1.在当前目录下,创建三个不存在的文件(用自己的名字拼音命名.txt、 a.txt和b.txt)。

[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz
[root@localhost ~]# touch zhangsan.txt a.txt b.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  b.txt  vm.tar.gz  zhangsan.txt
[root@localhost ~]# 

2.在/tmp/目录下创建一个目录mydir。

[root@localhost ~]# mkdir /tmp/mydir/
[root@localhost ~]# ls /tmp
mydir             VMwareDnD
[root@localhost ~]# 

3.将文件(用自己的名字拼音命名.txt)剪切至/tmp/mydir/目录下,不更改文件名。

[root@localhost ~]# mv zhangsan.txt /tmp/mydir/
[root@localhost ~]# ls /tmp/mydir
zhangsan.txt
[root@localhost ~]# 

4.将指定文件(a.txt)重命名为test1.txt。

[root@localhost ~]# mv a.txt test1.txt
[root@localhost ~]# ls 
test1.txt
[root@localhost ~]# 

5.将/tmp/mydir/目录重命名为mytest。

[root@localhost ~]# mv /tmp/mydir/ /tmp/mytest/
[root@localhost ~]# ls /tmp
mytest
[root@localhost ~]#

6.将/tmp/mytest/目录,剪切至当前目录下。

[root@localhost ~]# pwd
/root
[root@localhost ~]# mv /tmp/mytest/ /root/
[root@localhost ~]# ls
anaconda-ks.cfg  mytest  vm.tar.gz
[root@localhost ~]#

四、删除文件rm命令
rm命令用于删除文件或者目录。
rm命令属于高危命令,没有一个工具能够100% 恢复rm命令删除的文件,rm命令删除文件时并不是把文件放到类似图形界面的“回收站”里,所以没有“撤销删除”操作可用。
语法:rm [OPTION] file_or_dir
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除。
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤。

示例1:删除文件a.txt

root@localhost ~]# touch a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt 
[root@localhost ~]# rm a.txt
rm:是否删除普通空文件 'a.txt'?y
[root@localhost ~]# ls
anaconda-ks.cfg 

示例2:使用-f参数删除文件a.txt,若文件不存在,不提示。

[root@localhost ~]# ls
anaconda-ks.cfg vm.tar.gz
[root@localhost ~]# rm a.txt
rm: 无法删除 'a.txt': 没有那个文件或目录
[root@localhost ~]# rm -f a.txt

示例3:使用-r参数删除当前目录下的mytest子目录及里面的内容,若文件不存在,不提示。

[root@localhost ~]# mkdir mytest
[root@localhost ~]# ls
anaconda-ks.cfg mytest vm.tar.gz
[root@localhost ~]# cd mytest
[root@localhost mytest]# ls
[root@localhost mytest]# touch a.txt
[root@localhost mytest]# mkdir abc
[root@localhost mytest]# ls
abc  a.txt
[root@localhost mytest]# cd ../
[root@localhost ~]# rm mytest
rm: 无法删除 'mytest': 是一个目录
[root@localhost ~]# rm -rf mytest
[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz

下面,通过一个完整流程,训练rm命令用法。
1.在当前目录下,创建两个不存在的文件(用自己的名字拼音命名.txt、 a.txt)。

[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz
[root@localhost ~]# touch zhangsan.txt a.txt
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  vm.tar.gz  zhangsan.txt
[root@localhost ~]# 

2.删除文件(用自己的名字拼音命名.txt),并给出提示。

[root@localhost ~]# rm zhangsan.txt
rm:是否删除普通空文件 'zhangsan.txt'?y
[root@localhost ~]# ls
anaconda-ks.cfg  mytest  vm.tar.gz
[root@localhost ~]#

3.删除文件(a.txt),并且不提示。

[root@localhost ~]# rm -f a.txt

4.在当前目录下创建一个目录mydir。

[root@localhost ~]# mkdir mydir

5.在mydir目录下创建一个目录dirA。

[root@localhost ~]# mkdir mydir/dirA

6.在dirA目录下,创建一个文件b.txt。

[root@localhost ~]#touch mydir/dirA/b.txt

7.在mydir目录下,创建一个文件c.txt。

[root@localhost ~]#touch mydir/c.txt

8.无提示,删除mydir目录及其下所有内容。

[root@localhost ~]# rm -rf mydir
[root@localhost ~]# ls
anaconda-ks.cfg  vm.tar.gz
[root@localhost ~]#
举报

相关推荐

0 条评论