zoukankan      html  css  js  c++  java
  • 每天一个Linux命令(5)rm命令

         rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

        注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。 

        (1)用法:

       用法:rm [选项]... 文件...

        (2)功能:

       删除 (unlink) 文件。

        (3)选项参数:

           1) -f, --force                            强制删除。忽略不存在的文件,不提示确认

          2) -i                                        在删除前需要确认

          3) -I                                       在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少,但同样可以阻止大多数错误发生

          4) --interactive[=WHEN]          根据指定的WHEN 进行确认提示:never,once (-I), 或者always (-i)。如果此参数不加WHEN 则总是提示

          5) --one-file-system                 递归删除一个层级时,跳过所有不符合命令行参 数的文件系统上的文件

          6) --no-preserve-roo                不特殊对待"/" --preserve-root 不允许删除"/"(默认)

          7) -r, -R, --recursive                递归删除目录及其内容

          8) -v, --verbose                       详细显示进行的步骤 --help 显示此帮助信息并退出 --version 显示版本信息并退出

          9) -d                                      直接把欲删除的目录的硬连接数据删除成0,删除该目录

        (4)实例:

          1)[root@localhost Document]# rm -i touch_test_file               等同于rm touch_test_file,交互式删除,y键确认删除,n键不删除

    [root@localhost Document]# rm -i touch_test_file
    rm:是否删除普通空文件 "touch_test_file"?n
    [root@localhost Document]# rm -i {touch_test_file,touch_test_file2}
    rm:是否删除普通空文件 "touch_test_file"?y
    rm:是否删除普通空文件 "touch_test_file2"?y

         2)[root@localhost Document]# rm -f test   强制删除文件不做交互提醒

    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root      root       0 5月   1 18:49 10 days ago
    drwxrwxr-x. 3 sunjimeng sunjimeng 17 5月   1 03:13 bin
    drwxrwxr-x. 3 sunjimeng sunjimeng 18 5月   1 03:21 Father
    -rw-r--r--. 1 root      root       0 5月   1 18:58 test
    [root@localhost Document]# rm -f test
    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root      root       0 5月   1 18:49 10 days ago
    drwxrwxr-x. 3 sunjimeng sunjimeng 17 5月   1 03:13 bin
    drwxrwxr-x. 3 sunjimeng sunjimeng 18 5月   1 03:21 Father

        3)[root@localhost Document]# rm -r *                  删除当前目录下除隐含文件外的所有文件和子目录

    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root      root       0 5月   1 18:49 10 days ago
    drwxrwxr-x. 3 sunjimeng sunjimeng 17 5月   1 03:13 bin
    drwxrwxr-x. 3 sunjimeng sunjimeng 18 5月   1 03:21 Father
    [root@localhost Document]# rm -r *
    rm:是否删除普通空文件 "10 days ago"?y
    rm:是否进入目录"bin"? y
    rm:是否删除目录 "bin/os_1"?y
    rm:是否删除目录 "bin"?y
    rm:是否进入目录"Father"? y
    rm:是否删除目录 "Father/Child"?y
    rm:是否删除目录 "Father"?y
    [root@localhost Document]# ll
    总用量 0

        4)[root@localhost Document]# rm -v test1    显示删除的详细步骤

    [root@localhost Document]# touch {test1,test2}
    [root@localhost Document]# rm -v test1
    rm:是否删除普通空文件 "test1"?y
    已删除"test1"
    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 5月   1 19:24 test2
    [root@localhost Document]# 

        5)[root@localhost Document]# rm f* 与[root@localhost Document]# rm ./t*  删除以某个或某些字符结尾或开头的文件

    [root@localhost Document]# touch {file1,file2,test1,test2}
    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 5月   1 19:28 file1
    -rw-r--r--. 1 root root 0 5月   1 19:28 file2
    -rw-r--r--. 1 root root 0 5月   1 19:28 test1
    -rw-r--r--. 1 root root 0 5月   1 19:28 test2
    [root@localhost Document]# rm  f*
    rm:是否删除普通空文件 "file1"?y
    rm:是否删除普通空文件 "file2"?y
    [root@localhost Document]# rm ./t*
    rm:是否删除普通空文件 "./test1"?y
    rm:是否删除普通空文件 "./test2"?y
    [root@localhost Document]# ll
    总用量 0

        6)[root@localhost Document]# touch -- -test与[root@localhost Document]# rm -- -test      删除以-字符开头的文件,另外ls -- -test可以列出此-开头的文件

    [root@localhost Document]# touch -test
    touch: 日期格式"est" 无效
    [root@localhost Document]# touch -- -test
    [root@localhost Document]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 5月   1 19:37 -test
    [root@localhost Document]# rm -test
    rm:无效选项 -- t
    Try 'rm ./-test' to remove the file "-test".
    Try 'rm --help' for more information.
    [root@localhost Document]# rm -- -test
    rm:是否删除普通空文件 "-test"?y

        7)myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }  自定义回收站功能

    [root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D;     mv "$@" $D && echo "moved to $D ok"; }
    [root@localhost test]# alias rm='myrm'
    [root@localhost test]# touch 1.log 2.log 3.log
    [root@localhost test]# ll
    总计 16
    -rw-r--r-- 1 root root    0 10-26 15:08 1.log
    -rw-r--r-- 1 root root    0 10-26 15:08 2.log
    -rw-r--r-- 1 root root    0 10-26 15:08 3.log
    drwxr-xr-x 7 root root 4096 10-25 18:07 scf
    drwxrwxrwx 2 root root 4096 10-25 17:46 test3
    drwxr-xr-x 2 root root 4096 10-25 17:56 test4
    drwxr-xr-x 3 root root 4096 10-25 17:56 test5
    [root@localhost test]# rm [123].log
    moved to /tmp/20121026150901 ok
    [root@localhost test]# ll
    总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
    drwxrwxrwx 2 root root 4096 10-25 17:46 test3
    drwxr-xr-x 2 root root 4096 10-25 17:56 test4
    drwxr-xr-x 3 root root 4096 10-25 17:56 test5
    [root@localhost test]# ls /tmp/20121026150901/
    1.log  2.log  3.log
    [root@localhost test]#  

        说明:

           上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。

        8)

    [root@localhost Document]# rm --help
    用法:rm [选项]... 文件...
    Remove (unlink) the FILE(s).
    
      -f, --force           ignore nonexistent files and arguments, never prompt
      -i                    prompt before every removal
      -I                    prompt once before removing more than three files, or
                              when removing recursively; less intrusive than -i,
                              while still giving protection against most mistakes
          --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                              always (-i); without WHEN, prompt always
          --one-file-system        递归删除一个层级时,跳过所有不符合命令行参
                    数的文件系统上的文件
          --no-preserve-root  do not treat '/' specially
          --preserve-root   do not remove '/' (default)
      -r, -R, --recursive   remove directories and their contents recursively
      -d, --dir             remove empty directories
      -v, --verbose         explain what is being done
          --help        显示此帮助信息并退出
          --version        显示版本信息并退出
    
    默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
    的目录,以及其下所有的内容。
    
    To remove a file whose name starts with a '-', for example '-foo',
    use one of these commands:
      rm -- -foo
    
      rm ./-foo
    
    请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
    该文件的内容无法还原,请考虑使用shred。
    
    GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
    请向<http://translationproject.org/team/zh_CN.html> 报告rm 的翻译错误
    要获取完整文档,请运行:info coreutils 'rm invocation'

        9)[root@localhost Document]# rm --version 版本信息

    [root@localhost Document]# rm --version
    rm (GNU coreutils) 8.22
    Copyright (C) 2013 Free Software Foundation, Inc.
    许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
    本软件是自由软件:您可以自由修改和重新发布它。
    在法律范围内没有其他保证。
    
    由Paul Rubin、David MacKenzie、Richard M. Stallman 和
    Jim Meyering 编写。
  • 相关阅读:
    Webkit是如何加载网页的
    代码无错是优? 工厂模式
    JavaScript 记忆 Memoization
    输入一个新的网址后到完全显示页面,浏览器做了哪些工作?
    向服务器请求数据的五种技术
    setTimeout(0) 即将退役
    JS 对象机制深剖——new 运算符
    正则表达式中的回溯
    闭包与柯里化
    正则表达式工作原理
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5452010.html
Copyright © 2011-2022 走看看