• 【改造Linux命令之rm


    用途说明

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

    在rm的手册中写道:用rm删除文件还是有可能恢复文件内容的,如果要不可恢复的删除文件,考虑使用shred命令。(_Warning_: If you use `rm' to remove a file, it is usually possible to recover the contents of that file.  If you want more assurance that the contents are truly unrecoverable, consider using `shred'.)至于具体怎么恢复rm删除的文件,有文章专门讨论了。但是不幸的是文件系统是ext2可恢复、ext3不可恢复,ext3的删除机制是直接把 inode data 删除了,所以造成 ext3 无法反删除(ext3设计为无法恢复被删除的文件)。不过,有些文章提到可以使用debugfs工具来尝试恢复。无论如何,rm文件之后要想恢复还是很麻烦的。

    为了避免一个命令毁掉整个系统、或者误删重要文件( 比如辛苦编写的源程序文件),最好的方式不去删除,而是采用改名或者移动文件位置来去掉不需要的文件(mv命令)。还有就是,在进行一些关键操作时,先对数据进行备份,尤其是异机备份、异地备份。

    常用参数

    格式:rm file

    删除文件file,系统会先询问是否删除。

    格式:rm -f file

    强行删除file,系统不再提示。

    格式:rm -rf dir

    强行删除目录dir下的所有文件、子目录下的所有文件和目录、删除dir本身。

    格式:rm -f *.LOG*

    删除日志文件。

    使用示例

    示例一 rm的真实身份

    [root@jfht ~]# type -a rm 
    rm is aliased to `rm -i'
    rm is /bin/rm
    [root@jfht ~]#

    示例二 回收站尝试

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

    [root@jfht ~]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } 
    [root@jfht ~]# alias rm='myrm' 
    [root@jfht ~]# touch 1.txt 2.txt 3.txt 
    [root@jfht ~]# ls [123].txt           
    1.txt  2.txt  3.txt
    [root@jfht ~]# rm [123].txt 
    moved to /tmp/20110401214056 ok
    [root@jfht ~]# ls /tmp/20110401214056/ 
    1.txt  2.txt  3.txt
    [root@jfht ~]#

    示例三 删除以-开头的文件

    [root@jfht ~]# touch -- -f 
    [root@jfht ~]# ls -- -f 
    -f
    [root@jfht ~]# rm -- -f 
    moved to /tmp/20110401214709 ok

    也可以使用下面的操作步骤。

    [root@jfht ~]# touch ./-f 
    [root@jfht ~]# ls ./-f 
    ./-f
    [root@jfht ~]# rm ./-f 
    moved to /tmp/20110401214859 ok
    [root@jfht ~]#

    问题思考

    相关资料

    【1】Linux宝库 Linux指令篇:档案目录管理--rm
    http://doc.linuxpk.com/206.html
    【2】Linux公社 Linux下用rm删除的文件的恢复方法
    http://www.linuxidc.com/Linux/2008-08/14744.htm
    【3】maxpassion的个人空间 Linux恢复误删除文件(转载)
    http://www.cnttr.com/49230/viewspace_6093.html
    【4】52CTO Linux ext3文件系统 rm恢复
    http://os.51cto.com/art/200908/141407.htm

    我使用过的Linux命令系列总目录

    我使用过的Linux命令系列总目录

    本文链接: http://codingstandards.iteye.com/blog/786653   (转载请注明出处)

    概述

    关于命令类型划分

    本表中列出了我穷尽了我所有的记忆整理出来的Linux命令,其中关于外部命令、关键字或内建命令的划分,不一定正确。有很多命令,既是内建命令也可能是外部命令,为啥?Bash为了更高效率的执行命令和脚本,把很多外部命令以内建命令的方式实现了。我们使用type这个命令就可以知道一个命令的类型了,如下所示:

    [root@jfht ~]# type -a type 
    type is a shell builtin     <== builtin就是指内建命令 
    [root@jfht ~]# type -a pwd 
    pwd is a shell builtin
    pwd is /bin/pwd           <== 此乃外部命令 
    [root@jfht ~]# type -a ls 
    ls is aliased to `ls --color=tty'     <== 此乃别名 
    ls is /bin/ls
    [root@jfht ~]# type -a for 
    for is a shell keyword           <== 此乃Shell关键字 
    [root@jfht ~]#

    关于本系列文章

    首先,这只是我个人十多年来使用Unix/Linux的经验的总结。我经常感觉自己在Linux的使用和维护方面好像知道得不少了,但是发现沉下心来总结的时候,发现还是很弱的。其实很多东西只是知道个名字,知道点皮毛,更谈不上深入的理解。在写这些文章的时候,我参考了相同类型的文章,通常是Google搜索的前几页结果,我都会看一下,发现总能得到一些新的知识、新的启发,感觉到学无止境,厉害的角色很多。

    其次,这些文章并非某个命令的手册页,只是我平时使用它们的时候的一些惯用法,或者写Bash脚本的时候是怎么用的。我认为,对于这些Linux命令,不可能、也没有必要把所有的参数记住,只需要把常用的记住,然后使用man去查看手册页。与其知道每个具体的东西,不如知道在哪里去找它。这一点,我深深的体会到Unix/Linux在文档方面的完善,真正是一个适合开发者使用的平台。

    再次,我所写的东西并非完全正确、有可能似是而非,但我尽可能多去实际的去执行一下它们。我非常欢迎各位热爱Linux的朋友们一起参与讨论,特别是我每篇文章都会有一个“问题思考”部分,其实有些问题也是我本人不那么确定或者正在寻找答案的问题。在此,我要感谢各位,浪费了你们宝贵的时间来看这些质量不怎么高的文章。

    命令字母顺序表

    这个一个浩大而艰巨的任务,我非常担心能不能完成它。我想说,世界上最难得两个字:坚持!

    首字母

    外部命令(某些也可能是内建命令)

    关键字或内建命令

    内置环境变量

    A

    ac   在线时间统计

    adduser   添加用户账号

    ant 强大的Java开发构建工具

    apropos   根据关键字搜索命令

    ar

    arp 操作arp缓存

    at 在指定时间执行一次任务

    autofork

    awk

    alias

     

    B

    bash

    base64 用base64编解码

    basename 去掉文件名的目录和后缀

    bc   浮点数计算器、进制转换

    bg

    break

     

     

     

    C

    cal 显示日历

    cat 连接文件或标准输入并打印

    cc

    chgrp

    chkconfig 查询/修改系统服务的运行级别

    chmod

    chown

    chroot

    clear 清除终端屏幕,不是cls

    comm

    complete 强劲的bash参数补全功能

    compress

    cp   复制文件

    cpio

    cronolog     (2009.09.22)

    crontab

    curl 强大的网络传输工具

    cut

    cvs

    case 多分支判断语句

    cd   更改当前工作目录

    continue

     

    CDPATH

     

     

     

    D

    date

    dd  (2009.09.19)

    df   查看磁盘空间占用情况

    diff

    dir

    dirname 截取给定路径的目录部分

    dmesg 查看开机信息/打印或控制内核环形缓冲区

    dmidecode   查看硬件信息

    dos2unix 把DOS格式的文本文件转换成Unix格式

    dot 绘制DOT语言脚本描述的图形

    doxygen

    du   查看文件的磁盘空间占用情况

    declare

    dirs (2010.03.15)

    do

    done

     

     

     

    E

    echo   显示文本、打印信息

    egrep

    env 显示当前用户的环境变量

    eval

    exec

    expr

    elif

    else

    esac

    exit 退出当前shell

    export

     

     

     

     

     

    F

    false

    fgrep

    file 检测并显示文件类型

    find

    free 显示内存的使用情况

    ftp

    fg

    fi

    for   Bash中的for循环

     

     

     

     

    G

    gawk

    gdb

    gcc

    grep

    groupadd   (2009.09.19)

    groupdel   (2009.09.19)

    groupmod   (2009.09.19)

    groups     (2009.09.19)

    gunzip

    gzip

    g++

     

     

    H

    halt 停止系统运行,但不关闭电源

    head

    help 显示Bash内建命令的帮助信息

    hexdump “十六”进制查看器

    hostname 显示或设置主机名

    hwclock 查询和设置硬件时钟

    help

    history

    HISTTIMEFORMAT

    HISTSIZE

    HISTFILESIZE

    HISTFILE

    HISTCONTROL

    HISTIGNORE

    I

    iconv 字符编码转换工具

    ij

    ifconfig

    iptables

    iptables-save      (2009.09.19)

    iptables-restore   (2009.09.19)

    info

    insmod

    if Bash中的条件判断

    in

     

     

    J

    java

    javac

    jar

    jps     (2009.09.19)

    jstat   (2009.09.19)

    jmap    (2009.09.19)

    jinfo   (2009.09.19)

    javadoc

    jobs   显示当前终端关联的后台任务情况

    join   根据关键字合并数据文件

     

     

    K

    kill 终止进程/发送信号

    killall 杀死指定名字的进程

     

     

    L

    ls 显示文件目录列表

    less

    lsof

    locate

    ln

    lsmod

    last

    ld

    ll

    lsb_release 查看当前系统的发行版信息

     

     

    M

    more

    mv 文件或目录改名、移动位置

    man 显示在线手册页

    mail

    MySQL MySQL客户端命令行工具

    mkdir

    make 强大的编译工具

    mysqldump

    mount

    mysqladmin  (2009.09.27)

     

     

    N

    nano 比vi简单易用的文本编辑器

    nohup 执行其他命令,并且忽略SIGHUP信号

    netstat

    nslookup

    nice  (2010.03.15)

    nginx (2010.09.29)

     

     

    O

    openssl    (2009.09.19)

     

    OLDPWD

    P

    ps 显示当前正在运行的进程列表

    pstree 以树状图显示进程间的关系

    ping

    pwd 显示当前工作目录

    perl

    php

    pidof 找出正在运行程序的进程PID

    printf     (2009.09.22)

    popd (2010.03.15)

    pushd (2010.03.15)

    PATH

    PS1

    PS2

    PS3

    PS4

    PROMPT_COMMAND

    PWD

    Q

    quota

     

     

    R

    rm 删除文件或目录

    rmdir

    read

    reset 终端屏幕混乱的终结者

    rmmod

    rar

    route

    rpm

    rpmbuild

    rlwrap   (2009.09.19)

    rsync (2010.03.08)

    renice (2010.03.15)

    rz 批量上传文件,简单易用

    return

    RANDOM

    S

    ssh Secure Shell 客户端

    sftp 安全文件传输命令行工具

    su

    setsid

    sort

    screen 虚拟终端屏幕管理器

    sed

    setup

    service 系统服务管理

    sleep

    set

    sqlplus

    sox

    sh

    sysctl

    sync 强制将内存中的文件缓冲内容写到磁盘

    strings

    stty   显示和修改终端行设置

    stat   显示文件或文件系统状态

    ssh-keygen (2010.03.15)

    ssh-copy-id (2010.03.15)

    sar (2010.03.15)

    sadc (2010.03.15)

    sa1 (2010.03.15)

    sa2 (2010.03.15)

    swig 把C/C++代码嵌入Java等语言的开发工具

    sz 下载文件,无需ftp/sftp

    shift

    shopt (2010.03.15)

    select (2010.03.15)

    set (2010.03.15)

    source 在当前shell环境中执行指定文件中的命令

     

    T

    time 测定一个命令的资源使用情况

    telnet 基于TELNET协议的远程登录工具

    tac 与cat相反的命令

    tar 解压缩工具

    top 实时监视Linux任务

    tty 打印标准输入的文件名称

    tree 以树状图列出目录的内容

    tracert

    test

    tail 输出文件尾部/动态监视文件尾部

    tailf 跟踪日志文件/更好的tail -f版本

    touch 创建文件或修改文件时间

    true 啥也不做,设置退出码为0

    tee 重定向输出到多个文件

    tr

    tsort 拓扑排序

    tzselect 选择时区

    type 显示命令的类型

    then

    trap 在脚本中处理信号

     

     

     

     

    U

    uptime 显示系统运行时间

    uname 打印系统信息

    uniq

    unzip 解压zip文件

    uncompress 解压.Z文件

    unrar 解压rar文件

    updatedb

    usleep

    useradd 添加用户账号

    userdel

    usermod

    umount

    unix2dos (2009.09.19)

    ulimit 在shell进程中限制系统资源

    umask

    until

    unset

     

     

     

     

    V

    vi

    vim (2010.09.28)

    view

    vmstat

    valgrind  (2010.09.29)

     

     

    W

    w 显示谁登录了系统及在做什么

    who 查看当前登录用户

    whereis 查找命令的位置

    wc

    wget

    wait

    whatis ( 2009-10-18 )

    while Bash中的while循环

     

    X

    xargs

     

     

    y

    yes 重复输出字符串

     

     

    Z

    zip

     

     

    ^

    ^Z  (2010.03.15)

    ^R  (2010.03.15)

     

     

     
     
     
  • 相关阅读:
    Webpack配置开发环境总结
    vue2.0 引入font-awesome
    vue-cli 脚手架项目简介(一)
    CSS3伪类与伪元素的区别及注意事项
    页面滚动到可视区域执行操作
    56. 合并区间
    <leetcode c++>卖股票系列
    面试题 16.01. 交换数字
    542. 01 矩阵
    <leetcode c++> 445. 两数相加 II
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5441403.html
Copyright © 2020-2023  润新知