查看原文
其他

一个空格引发的惨案

王通 基因学苑 2023-08-18

由于Linux系统命令行操作的特殊性,空格起了非常重要的作用。空格用来分割命令行的各个部分,比如一条命令中最开始是命令名,然后接空格(一个或多个都可以),接下来是选项,然后是参数,还有输入文件等。很多新手学习Linux困难,就在于对命令行不熟,其中,忘记加空格是重要的一项,但是如果多加空格有时候后果更加严重……

Linux删除机制

Linux系统的删除命令为rm,是remove的简写,直译就是移除文件。Linux系统与windows系统在删除文件上有很大的不同。windows系统其实是移到一个名为“回收站”的文件夹内,只是在系统层面删除,而并不是从磁盘上删除,因此,磁盘空间并没有减少。而Linux系统命令行下的rm删除是从磁盘上直接删除。磁盘空间会立刻减小。因此,Linux命令行并不存在“回收站”这个东西,如果删除文件,就无法恢复了,除非找专业的数据恢复公司来处理。因此,普通用户使用rm一定要小心。rm默认会加一个-i选项进行交互式删除。但是如果文件太多,每次都交互比较麻烦,那么就可以加上-f选项,表示强制删除,如果是文件夹,则需要在加上一个-r选项,表示递归删除。

rm -i 001.txt   #交互式删除
rm -f 001.txt   #强制删除
rm -rf 001/     #强制递归删除,可以删除文件夹
rm -rf *.txt    #强制删除包含txt结尾文件

一个空格引发的惨案

在Linux世界中,流传一个笑话,就是rm -rf /,所谓的“自杀模式”,看一下这条命令,rm意味着删除,加上-rf,表示递归并且强制删除,"/"表示根目录,也就是全部磁盘文件,当使用管理员运行这条命令后,可以执行,之后就将整个系统全部文件删除,包括系统本身,这样所有数据将彻底丢失。想想一下,如果你是系统管理员,这将意味着什么。当然,一般正常人不会主动去这么自杀的。但是很有可能会多加空格。例如下面这种情况。

rm -rf / opt/blc  #原命令为rm -rf /opt/blc
rm -rf * .txt     #原命令为rm -rf *.txt

由于不小心多加了一个空格,导致误删除重要文件,我就误操作过,虽然不是删除根目录,但是却将一些重要文件删除了,因此,Linux系统下rm一定要小心。

自建Linux回收站

如果担心误删除文件,为了安全起见,可以自己创建一个文件夹,作为Linux的回收站,代替rm命令的使用,只是将要删除的文件移动到该目录下,然后在设置定期删除,这样就实现了类似于Linux回收站的效果。

#1、首先在家目录下创建一个.Trash目录;
#2、新加一个rm.sh脚本,用来替换正常的rm命令,写入以下脚本;
#!/usr/bin/bash
DIR="$HOME/.Trash"
for i in $*;  # $*所有参数列表
do  
    `mv $i ${DIR}`;
done

#3、利用alias命令,将rm.sh脚本替换为rm命令,写到~/.bashrc文件中;
alias rm= "sh ~/rm.sh"

更多功能

如果想实现更多回收站功能,例如删除前进行提示,删除固定大小以上文件进行提示,保存删除日志等功能,可以参考以下两篇博客。
参考文章1:https://www.ibm.com/developerworks/cn/linux/1410_licy_linuxtrash/
参考文章2:https://blog.razrlele.com/p/776


---------- END ----------

(添加作者微信,请注明单位姓名)



您可能还会感兴趣的

基因学苑2018年文章目录
生物信息零基础班(上海站)开课啦
手把手教你生信分析平台搭建专栏合集
生物信息重要资源站点合集
不会编程,如何进行批量操作
一个人全基因组完整数据分析脚本
一个细菌基因组完整分析脚本
如何在Linux下优雅的装X
2019,送给大家一份新年礼物
生物学才是终极学科



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存