首页 > 系统相关 >Linux笔记03: Linux常用命令_3.4文件和目录共用命令

Linux笔记03: Linux常用命令_3.4文件和目录共用命令

时间:2023-01-07 21:35:58浏览次数:44  
标签:选项 03 3.4 iron Linux Marvel root localhost man

 

3.4 目录和文件共用命令

  3.4.1 rm命令

    ●命令名称:rm。

    ●英文原意:remove files or directories。

    ●所在路径:/usr/bin/rm。

    ●执行权限:所有用户。

    ●功能描述:删除文件或目录。

    (1)命令格式

    [root@localhost ~]# rm [选项] 文件或目录
    选项:
        -f: 强制删除(force)
        -i: 交互删除,在删除之前会询问用户
        -r: 递归删除,可以删除目录(recursive)
        -d: 删除空目录

 

    (2)常见用法

    ①不带选项,默认执行的是“rm -i文件名”,在删除一个文件之前会先询问是否删除。例如:

    [root@localhost ~]# touch test_file
    [root@localhost ~]# rm test_file
    rm: remove regular empty file ‘test_file’? y
    [root@localhost ~]#

 

    ②递归删除目录。例如:

    [root@localhost ~]# mkdir -p Marvel/Avengers/Heroes
    [root@localhost ~]# rm Marvel/
    rm: cannot remove ‘Marvel/’: Is a directory
    [root@localhost ~]# rm -r Marvel/
    rm: descend into directory ‘Marvel/’? y
    rm: descend into directory ‘Marvel/Avengers’? y
    rm: remove directory ‘Marvel/Avengers/Heroes’? y
    rm: remove directory ‘Marvel/Avengers’? y
    rm: remove directory ‘Marvel/’? y
    [root@localhost ~]#

 

    会分别询问是否进入子目录、是否删除子目录。

    ③使用强制删除。例如:

    [root@localhost ~]# mkdir -p Marvel/Avengers/Heroes
    [root@localhost ~]# rm -rf Marvel/
    [root@localhost ~]#

 

    注意:

    ●数据强制删除之后无法恢复,除非依赖第三方的数据恢复工具,如extundelete等。但很难恢复完整的数据,一般能恢复70%~80%就很难得了。所以,与其把宝压在数据恢复上,不如养成良好的操作习惯。

    ●虽然“-rf”选项是用来删除目录的,但是删除文件也不会报错。所以,为了使用方便,一般不论是删除文件还是删除目录,都会直接使用“-rf”选项。

 

  3.4.2 cp命令

    ●命令名称:cp。

    ●英文原意:copy files and directories。

    ●所在路径:/usr/bin/cp。

    ●执行权限:所有用户。

    ●功能描述:复制文件和目录。

    (1)命令格式

    [root@localhost ~]# cp [选项] 源文件 目标文件
    选项:
        -a: 相当于-dpr选项的集合
        -d: 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
        -i: 询问,如果目标文件已经存在,则会询问是否覆盖
        -l: 把目标文件建立为源文件的硬链接文件,而不是复制源文件
        -s: 把目标文件建立为源文件的软链接文件,而不是复制源文件
        -p: 复制后,目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
        -r: 递归复制,用于复制目录

 

    (2)常见用法

    ①复制文件。例如:

    [root@localhost ~]# touch iron_man
    [root@localhost ~]# mkdir -p /Marvel/Avengers
    [root@localhost ~]# cp iron_man Marvel/Avengers/
    [root@localhost ~]#

 

    ②复制的同时修改文件名。例如:

    [root@localhost ~]# cp iron_man Marvel/Avengers/doctor_strange
    [root@localhost ~]#

 

    ③复制目录。例如:

    [root@localhost ~]# mkdir Disney
    [root@localhost ~]# cp -r Marvel/ Disney/
    [root@localhost ~]#

 

    ④复制软连接属性。例如:

    [root@localhost ~]# ln -s Marvel/Avengers/iron_man iron_man_sln
    [root@localhost ~]# ll iron_man_sln
    lrwxrwxrwx. 1 root root 24 Jan  7 06:40 iron_man_sln -> Marvel/Avengers/iron_man
    # 源文件本身就是一个软链接文件
    [root@localhost ~]# cp iron_man_sln iron_man_t1
    [root@localhost ~]# cp -d iron_man_sln iron_man_t2
    [root@localhost ~]# ll iron_man_t1 iron_man_t2
    -rw-r--r--. 1 root root  0 Jan  7 06:41 iron_man_t1
    lrwxrwxrwx. 1 root root 24 Jan  7 06:42 iron_man_t2 -> Marvel/Avengers/iron_man

 

    不加“-d”选项,实际复制的是软链接的源文件,而不是软链接文件。

    如果加入了“-d”选项,则会复制软链接文件。

    ⑤保留源文件属性复制

    在执行复制命令后,目标文件的时间会变成复制命令的执行时间,而不是源文件的时间。而当我们在执行数据备份、日志备份的时候,这些文件的时间可能是一个重要的参数,这就需要执行“-p”选项了。这个选项会保留源文件的属性,包括所有者、所属组和时间。例如:

    [root@localhost ~]# cp -p /var/lib/mlocate/mlocate.db LaytonWang/mlocate_cp.db
    [root@localhost ~]# ll /var/lib/mlocate/mlocate.db LaytonWang/mlocate_cp.db
    -rw-r-----. 1 root slocate 2989201 Jan  6 09:06 LaytonWang/mlocate_cp.db
    -rw-r-----. 1 root slocate 2989201 Jan  6 09:06 /var/lib/mlocate/mlocate.db

 

    目标文件和源文件的所有属性都一致,包括时间。

    “-a”选项相当于“-dpr”选项,当我们使用“-a”选项时,目标文件和源文件的所有属性都一致,包括源文件的所有者、所属组、时间和软链接属性。使用“-a”选项来取代“-dpr”选项更加方便。

    ⑥“-l”和“-s”选项

    使用“-l”选项,目标文件会被建立为源文件的硬链接;而使用“-s”选项,则目标文件会被建立为源文件的软链接。这两个选项和“-d”选项是不同的,“-d”选项要求源文件必须是软链接,目标文件才会复制为软链接;而“-l”和“-s”选项的源文件只需是普通文件,目标文件就可以直接复制为硬链接和软链接。例如:

    [root@localhost ~]# cp -l Marvel/Avengers/iron_man iron_man_h
    [root@localhost ~]# cp -s Marvel/Avengers/iron_man iron_man_s
    #使用“-l”和“-s”选项复制
    [root@localhost ~]# ll -i iron_man_h iron_man_s
       77542 -rw-r--r--. 2 root root  0 Jan  7 06:38 iron_man_h
    16797766 lrwxrwxrwx. 1 root root 24 Jan  7 07:07 iron_man_s -> Marvel/Avengers/iron_man

 

 

  3.4.3 mv命令

    ●命令名称:mv。

    ●英文原意:move (rename) files。

    ●所在路径:/usr/bin/mv。

    ●执行权限:所有用户。

    ●功能描述:移动文件或改名。

    (1)命令格式

    [root@localhost ~]# mv [选项] 源文件 目标文件
    选项:
        -f: 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
        -i: 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
        -n: 如果目标文件已经存在,则不会覆盖移动,而且不询问用户
        -v: 显示详细信息

 

    (2)常见用法

    ①移动文件或目录

    [root@localhost ~]# mv iron_man_sln LaytonWang/
    [root@localhost ~]# mkdir movie
    [root@localhost ~]# mv Disney/ LaytonWang/

 

    移动之后,源文件或目录会被删除,类似剪切。和rm、cp不同的是,mv移动目录不需要加入“-r”选项。

    ②强制移动

    如果目标目录下已经存在同名文件,则会提示是否覆盖,需要手工确认。如果移动的同名文件较多,则需要一个一个文件进行确认,很不方便。如果我们确认需要覆盖已经存在的同名文件,则可以使用“-f”选项进行强制移动。例如:

    [root@localhost ~]# touch iron_man
    [root@localhost ~]# mv iron_man Marvel/Avengers/
    mv: overwrite ‘Marvel/Avengers/iron_man’? y
    # 目标位置已经存在同名的文件,会提示是否覆盖,因为mv命令默认执行的也是“mv -i”。
    [root@localhost ~]# touch iron_man
    [root@localhost ~]# mv -f iron_man Marvel/Avengers/
    [root@localhost ~]#

 

    ③不覆盖移动

    如果需要移动几百个同名文件,但是不想覆盖,就可以使用“-n”选项。例如:

    [root@localhost ~]# touch iron_man doctor_strange captain
    [root@localhost ~]# ls Marvel/Avengers/
    doctor_strange  iron_man
    # 在Marvel/Avengers/目录下已经存在doctor_strange、iron_man文件。
    [root@localhost ~]# mv -vn iron_man doctor_strange captain Marvel/Avengers/
    ‘captain’ -> ‘Marvel/Avengers/captain’

 

    使用了“-n”选项,则可以看到只移动了captain,而同名的doctor_strange、iron_man并没有移动(“-v”选项用于显示移动过程)。

    ④改名

    如果源文件和目标文件在同一个目录中,那就是改名。例如:

    [root@localhost ~]# touch captain
    [root@localhost ~]# mv captain captain2
    # 把captain改名为captain2

 

 

小结:

    “rm”用于删除文件或目录,常用“-rf”选项进行强制删除或递归删除目录;“cp”用于复制文件或目录,常用“-a”(相当于‘-dpr’)选项复制软连接、保留原文件的属性、递归复制目录;“mv”用于移动文件、目录或改名,常用“-vf”选项显示详细信息、强制覆盖;

 

标签:选项,03,3.4,iron,Linux,Marvel,root,localhost,man
From: https://www.cnblogs.com/LaytonWang/p/17033574.html

相关文章

  • E - Don't Isolate Elements -- ATCODER
    E-Don'tIsolateElementshttps://atcoder.jp/contests/abc283/tasks/abc283_e 思路 参考https://www.cnblogs.com/cilinmengye/p/17008799.html ......
  • 03-运算符
    js运算符思维导图算术运算+-*/%相加的时候,有一个数为字符串,则+表示字符串拼接<script>vara=20;varb=7;varnum1=a+b;varnum2=......
  • linux-shell
    linux权限sudo权限普通用户,可以使用sudocommod,然后输入密码,以root用户的身份执行命令。如何给普通用户授予root用户的权限(使用sudo的时候不用输入密码),可以使用vis......
  • Linux基本操作_01
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx......
  • Linux:使用snap安装Redis
    文档官网​​https://snapcraft.io/​​红帽Linux平台下安装教程​​https://snapcraft.io/docs/installing-snap-on-red-hat​​搜索应用​​https://snapcraft.io/se......
  • linux安装docker
    https://blog.csdn.net/Pratik_shiku/article/details/124309852?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167308260416782427492732%2522%252C%2522scm......
  • linux磁盘分区之后,lsblk没有显示
     可以看出 fdisk创建一个sda4的分区 并保存退出,但是不管是使用fdisk-l,还是lsblk都无法显示出来,那么导致问题的原因,主要是因为新创建了分区之后,系统没有......
  • [ABC256E] Takahashi's Anguish 题解
    [ABC256E]Takahashi'sAnguishSolution目录[ABC256E]Takahashi'sAnguishSolution更好的阅读体验戳此进入题面SolutionCodeUPD更好的阅读体验戳此进入题面存在$n......
  • LeetCode 103_ 二叉树的锯齿形层序遍历
    LeetCode103:二叉树的锯齿形层序遍历题目给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进......
  • 003.Stream常用方法
    packagecom.imooc.stream;importorg.junit.Test;importjava.util.Arrays;importjava.util.List;importjava.util.stream.Collectors;publicclassStreamMet......