用途说明

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

ifBash中的条件判断

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 )

whileBash中的while循环

X

xargs

y

yes 重复输出字符串

Z

zip

^

^Z  (2010.03.15)

^R  (2010.03.15)

 
 
 

【改造Linux命令之rm - 删除文件或目录-】的更多相关文章

  1. Linux命令(2)-rm删除文件

    版本:centos7 Linux中使用rm(remove)命令将文件从磁盘上永久删除.使用-r参数可以删除目录及目录下的子目录.对于连接文件只是断开了连接,源文件保持不变.用户删除一个文件时需要对该文 ...

  2. Linux 命令 - rm: 删除文件和目录

    命令格式 rm [OPTION]... FILE... 命令参数 -f, --force 强制删除,忽略不存在的文件,不会提示. -i, --interactive 没次删除文件时,提示用户确认. - ...

  3. Linux命令工具基础02 文件及目录管理

    文件及目录管理 文件管理不外乎文件或目录的创建.删除.查询.移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询:find的参数丰富,也非常强大: 查看文件内容是个大的话题,文本的处理 ...

  4. 【每天一个Linux命令】19. 创建文件夹目录命令mkdir

    命令用途 mkdir 命令用来创建指定的名称的目录 使用说明 1.  创建目录的用户在当前目录中具有写权限 2. 指定的目录名不能是当前目录中已有的目录. 命令实例 0. 帮助文件 bixiaopen ...

  5. Linux rm 删除文件

    rm 删除文件rm -f 强制删除-i 提示-r 删除目录的时候-v 可实话 rm -rfv 多目录 不提示 [root@wang whp]# touch .txt [root@wang whp]# ...

  6. (三)Linux命令基本格式以及文件处理命令

    命令基本格式 (1)命令提示符 如下是命令行的命令提示符,以此为例,讲解含义. 其中: root 当前登录用户名 localhost 主机名 ~ 当前所在的目录(即家目录,用户登录的初始位置) # 超 ...

  7. (转)每天一个Linux命令(5): rm

    http://www.cnblogs.com/peida/archive/2012/10/26/2740521.html 昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和 ...

  8. 不小心rm删除文件怎么办

    不小心rm删除文件怎么办 rm 命令的副作用越来越显现.而且rm掉之后的东西想找回来很困难.有2个原则: 1 永远不要在root下操作,尤其是rm命令 2 写一个别名,代替rm 我就是在~/.bash ...

  9. linux命令:rm

    1.介绍: rm用来删除文件或者目录,对于链接文件,只删除了链接,不删除源文件.rm是一个非常危险的命令,像rm -rf /这个命令运行后,后果不堪设想. 2.命令格式: rm [选项] 文件/目录 ...

随机推荐

  1. Python-面向对象(类)二

    一.成员修饰符 • 共有成员 • 私有成员 __+字段 __:成员修饰符 无法直接访问,只能通过该成员所属类的方法简介访问 class Foo: def __init__(self, name, ag ...

  2. springMVC中利用model在JSTL进行回填值

    1.ringMVC中利用model回填值 后台中,利用model返回值,如 model.addAttribute("MS_info" , MS_info); 前台回填值: text ...

  3. 加密,解密,Hash

    Hash的算法: SHA256Managed(mscorlib.dll) private static string HashCreditCard(string creditCardNumber) { ...

  4. 利用php实现文件迁移重命名

    首先表明,这是一个悲伤的故事. 暑假来临,学校安排我们到某软件外包公司实习,想想不用面试也是蛮方便的,可以借此机会向大牛学习学习,虽然没有工资(据说学校还交了600块的保险),但想想还是蛮期待的,但真 ...

  5. CSS3小分队——进击的border-radius

    上一篇:<CSS float属性小解——”浮“生若水> 写在前面: ~~强势插入~~如果有想进一步了解float属性的小伙伴,可以猛戳上面的链接,<CSS float属性小解——”浮 ...

  6. React编写文本评论框

    一.需求分析 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset= ...

  7. iOS 7 如何关闭已打开的应用(App)

    刚升级了 iOS 7,感觉不太会用了. 在多任务状态下,看着一个个已被打开的应用,不知道如何关闭了. 问了下朋友才知道,在多任务状态下,将对应的应用 向上划 就行. 听说,和 Android 一样的 ...

  8. CANBus Determining Network Baud Rate, Automatic bit-rate detection

    http://www.canbushack.com/blog/index.php?title=determining-network-baud-rate Determining Network Bau ...

  9. Part 12 Angularjs filter by multiple properties

    In the example below, we are using multiple search textboxes. As you type in the "Search name&q ...

  10. 微信ios版6.2更新 聊天记录迁移更快捷朋友圈可翻译

    微信iPhone版昨日发布更新,版本号为微信 6.2 for iOS,主要特性有聊天记录迁移.发送图片更快捷.支持朋友圈翻译.手机充值可充流量查余额.可以通过展示二维码来收钱,和ytkah一起来瞧瞧吧 ...