• linux系列(五):rm命令


    rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

    1、命令格式:

      rm [选项] 文件

    2、命令功能:

      删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

    3、命令参数:

      -f, --force    忽略不存在的文件,从不给出提示。
      -i, --interactive 进行交互式删除
      -r, -R, --recursive   指示rm将参数中列出的全部目录和子目录均递归地删除。
      -v, --verbose    详细显示进行的步骤
      --help     显示此帮助信息并退出
      --version  输出版本信息并退出

    4、常用实例:

    (1)、删除文件file,有时系统会先询问是否删除。

    命令:

      rm 文件名

    输出:

    felix@felix-computer:~/test$ ls
    aaa.txt
    felix@felix-computer:~/test$ rm aaa.txt 
    felix@felix-computer:~/test$ ls
    felix@felix-computer:~/test$ 

    说明:

    有时候,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。

    (2)、强行删除file,系统不提示。

    命令:

      rm -f 文件名

    输出:

    felix@felix-computer:~/test$ ls
    aaa.txt
    felix@felix-computer:~/test$ rm -f aaa.txt 
    felix@felix-computer:~/test$ ls
    felix@felix-computer:~/test$ 

    (3)、删除任何.txt文件;删除前逐一询问确认

    命令:

      rm -i *.txt

    输出:

    felix@felix-computer:~/test$ ls
    a.txt  b.txt
    felix@felix-computer:~/test$ rm -i *.txt
    rm:是否删除普通空文件 'a.txt'? y
    rm:是否删除普通空文件 'b.txt'? y
    felix@felix-computer:~/test$ ls
    felix@felix-computer:~/test$ 

    (4)、将test1目录以及子目录中的所有文件删除

    命令:

      rm -r test1    如果要显示提示: rm -ri test1

    输出:

    felix@felix-computer:~/test$ ls
    test1
    felix@felix-computer:~/test$ find ./ -type f
    ./test1/t.txt
    felix@felix-computer:~/test$ rm -ri test1/
    rm:是否进入目录'test1/'? y
    rm:是否进入目录'test1/test2'? y
    rm:是否删除目录 'test1/test2/test3'? y
    rm:是否删除目录 'test1/test2'? y
    rm:是否删除普通空文件 'test1/t.txt'? y
    rm:是否删除目录 'test1/'? y
    felix@felix-computer:~/test$ 

    (5)、删除test2子目录中的所有文件,并且不一一确认。

    命令:

      rm -rf test2

    输出:

    felix@felix-computer:~/test$ mkdir -p test2/test3/test4
    felix@felix-computer:~/test$ touch test2/aaa.txt test2/test3/bbb.txt test2/test3/test4/ccc.txt
    felix@felix-computer:~/test$ find ./ -type f
    ./test2/test3/test4/ccc.txt
    ./test2/test3/bbb.txt
    ./test2/aaa.txt
    felix@felix-computer:~/test$ rm -rf test2/
    felix@felix-computer:~/test$ 

    (6)、自定义回收站功能

    命令:

    先执行:
        myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
    再执行:
        alias rm='myrm'

     输出:

    felix@felix-computer:~/test$ myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
    felix@felix-computer:~/test$ alias rm='myrm'
    felix@felix-computer:~/test$ mkdir -p test1/test2/test3 && touch {1,2,3,4}.txt
    felix@felix-computer:~/test$ ls
    1.txt  2.txt  3.txt  4.txt  test1
    felix@felix-computer:~/test$ rm *
    moved to /tmp/回收站/2018_11_04_12_37_25 ok
    felix@felix-computer:~/test$ ls /tmp/回收站/2018_11_04_12_37_25
    1.txt  2.txt  3.txt  test1
    felix@felix-computer:~/test$ ls
    felix@felix-computer:~/test$ 

    说明:

    a、
    myrm()
    {
    D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S);
    #在/tmp文件夹中创建名为“当前日期”的文件;
    #其中“date+%Y_%m_%d_%H_%M_%S”是规定了日期的输出格式;
    mkdir -p $D;
    #以变量D中的路径创建文件夹。
    mv "$@" $D && echo "moved to $D ok";
    #将所要删除的文件移入变量D中的文件夹内,移入成功后,输出移动成功。
    }
    b、
    alias rm='myrm'
    #命令别名定义方式,此定义成功后,无论输入rm或myrm系统都会做出相同操作。
    c、
    移入的是linux中的/tmp/目录下,该目录会自动定时清理,如果要恢复删除的文件,需要在清理之前恢复。比如Ubuntu系统是每次重启自动清理。
    d、
    如果想恢复rm为原来的rm操作,执行:alias rm=/bin/rm
    e、
    自定义回收站的本质是mv操作,所以加的参数都是mv的参数

    注意:如果需要每次使用rm命令都执行上述回收站功能,需要修改.bashrc 文件

    在.bashrc 文件下面添加以下两行

    myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
    alias rm='myrm'

    添加完后执行:source .bashrc

  • 相关阅读:
    负载均衡获得真实源IP的6种方法
    美图全链路监控实战
    移动端APM网络监控与优化方案
    k8s 如何对外提供服务
    mysql5.7安装audit审计插件
    mysql 5.7安装密码校验插件validate_password
    Linux Crontab 定时任务
    stm32 hard fault usage fault UNALIGNED -> task stack overflow
    linux逻辑卷管理(LVM)
    suse11开启telnet服务
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9903557.html
Copyright © 2020-2023  润新知