【改造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 添加用户账号 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参数补全功能 cp 复制文件 cpio cronolog (2009.09.22) crontab curl 强大的网络传输工具 cut cvs |
case多分支判断语句 cd 更改当前工作目录 continue |
|
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 显示在线手册页 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) |
||
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 |
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 - 删除文件或目录-】的更多相关文章
- Linux命令(2)-rm删除文件
版本:centos7 Linux中使用rm(remove)命令将文件从磁盘上永久删除.使用-r参数可以删除目录及目录下的子目录.对于连接文件只是断开了连接,源文件保持不变.用户删除一个文件时需要对该文 ...
- Linux命令行批量删除文件(目录)
快速-批量删除文件或目录 1-1.快速删除大文件夹(注意目录后的结束符'/')(对于含有海量文件的目录,不能直接rm -rf删除,这样效率很慢:) rsync -a --delete blank/ t ...
- rm 删除文件或目录
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 注意:使用rm命令要格外小心.因为一旦 ...
- Linux 命令 - rm: 删除文件和目录
命令格式 rm [OPTION]... FILE... 命令参数 -f, --force 强制删除,忽略不存在的文件,不会提示. -i, --interactive 没次删除文件时,提示用户确认. - ...
- Linux系统下rm删除文件后空间没有释放问题解决办法
一.问题描述 今日收到zabbix监控报警,发现生产环境一台服务器的磁盘空间不足,需要进行处理,登录后发现可利用率不足20%,进行相关查看和处理工作:但是操作删除了一些备份文件和日志信息后,查看空间仍 ...
- Linux命令工具基础02 文件及目录管理
文件及目录管理 文件管理不外乎文件或目录的创建.删除.查询.移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询:find的参数丰富,也非常强大: 查看文件内容是个大的话题,文本的处理 ...
- 【每天一个Linux命令】19. 创建文件夹目录命令mkdir
命令用途 mkdir 命令用来创建指定的名称的目录 使用说明 1. 创建目录的用户在当前目录中具有写权限 2. 指定的目录名不能是当前目录中已有的目录. 命令实例 0. 帮助文件 bixiaopen ...
- 【linux命令】chgrp改变文件或目录的属组
在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理.可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以.Chgrp命令就是change group的 ...
- 19-Ubuntu-文件和目录命令-删除文件和目录-rm
rm 删除文件或目录 注:使用rm命令要小心,因为文件删除后不能恢复.不会放在垃圾箱里,直接从磁盘删除. 选项 含义 -f 强制删除文件,无需提示.不能删除目录! -r 递归的删除目录下的内容,删除文 ...
随机推荐
- pm2安装及常用命令
安装:npm install -g pm2 启动程序:pm2 start <app_name|id|all> 列举进程:pm2 list 退出程序:pm2 stop <app_nam ...
- 客户端HttpClient处理 Servlet Gzip
服务端采用gzip对文本内容进行压缩处理,客户端使用HttpClient获取数据并进行gzip解压缩. 一: 服务端 public class GzipTestServlet extends Http ...
- Keil C51 中指针的使用
指针是C语言中比较难的一个内容,Keil C51在指针方面有和标准C不一样的地方,今天看了一些资料学习了一下Keil C51 中指针的使用. keil51的指针,包含两种指针:普通指针,兼容标准C:内 ...
- QSizePolicy可均匀调整控件的大小,还可设置比例,非常完美(每个QWidget都有这个功能)
http://blog.csdn.net/liang19890820/article/details/51986284 它是QWidget的固有属性: http://doc.qt.io/qt-4.8/ ...
- 创业不要在IT业内创(市场太小,而且都喜欢自己折腾、没有花钱的习惯)
精神是好的.但是,我看了你的产品和网站:你选的创业方向基本是死路一条,我劝你该放弃就放弃.我判断你的思路还局限在IT行业内,创业不要在IT业内创,要走出去,睁开眼看看别人的世界,自己体会.我不是打击你 ...
- nginx监听端口和反向代理端口的权限问题
Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听.为叙述方便我们称之为受控端口. nginx监听端口 要查看当前有哪些受控端口 ...
- 让magento的validate验证hidden field
Object.extend(Validation, { isVisible : function(elm) { return true; }, insertAdvice : function(elm, ...
- ubuntu 14.04 chromium 设备adobe flash player(亲测可行)
首先,根据浏览器提示下载Adobe Flash Player 插入 install_flash_player_11_linux.x86_64.tar.gz;然后使用sudo tar -xzvf ins ...
- 在Swift中使用遗留的C API
Swift的类型系统的设计目的在于简化我们的生活,为此它强制用户遵守严格的代码规范来达到这一点.毫无疑问这是一件大好事,它鼓励程序员们编写 更好更正确的代码.然而,当Swift与历史遗留的代码库.特别 ...
- SVN中tag branch trunk用法详解
SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...