rm: 无法删除swap: 不允许的操作_safe-rm老板再也不用担心我删库跑路啦[视频]

3503fb28a49e394ccda628f2936c3046.png
saferm 老板再不怕我删库跑路https://www.zhihu.com/video/1177717527541731328

在 linux 上,使用 rm 是一件非常危险的事情(最近又有朋友遇到了我才想起了写这篇文章),如果不幸手残执行了 rm -rf 删除了重要文件,建议你准备收拾包袱跑路吧。

既然 rm 删除操作非常危险,恢复数据又很困难(甚至某些场景无法恢复),那有没有工具可以像 windows 下或者 macos 下的垃圾桶呢, 删除之后放到垃圾桶里,如果发现误删了直接去垃圾桶恢复就好啦。这一次介绍我在 macos 和 linux server(centos) 上常用的安全删除工具,有了它们,老板就再也不用担心我删库跑路啦。( 评论区有人列举了一些不建议使用的理由,其实我个人一般只在自己的 mac 和开发机使用,不建议修改线上机器,每种工具都有使用场景,请自行斟酌使用)

Macos rmtrash

首先你要安装 homebrew, 如果你用的 macOS 还没装 brew 那就太可惜了,一个非常方便的包管理工具。 homebrew 作者就是那个"大名鼎鼎"的 Max Howell, 因为应聘 google 白板编程没有写出来翻转二叉树被拒,后来去了苹果公司的工程师。

brew install rmtrash

一句话就可以安装完成了,然后呢在你的 bashrc 或者 zshrc 里边加个 alias 就可以了。

alias rm='rmtrash'

这样你使用 rm 直接删除的文件就会放到你的用户 .Trash 隐藏文件夹里边,如果误删了可以去这里恢复即可。 rmtrash 可以直接删除文件夹,所以不需要 -r 参数了。

我们可以做一个测试,随便找一个文件夹建立一个文件,然后 rm 删除一下试试,比如:

# 进入用户主目录,创建一个文件"对象",然后 rm 删除看看
# 之后开你的垃圾箱或者 cd ~/.Trash 里边就可以找到了。其实 macos 下删除文件也是放到这里
cd
touch 对象
rm 对象

Linux/MacOS 通用

如果是 linux 用户,可以使用 safe-rm,笔者在自己的开发机(centos)上就是用的它。 这个是 github 地址

https://github.com/kaelzhang/shell-safe-rm​github.com

直接 clone 安装:

git clone https://github.com/kaelzhang/shell-safe-rm ~/.shell-safe-rm
# alias 加入到你的 bashrc or zshrc 里边,默认也是 .Trash(mac) 或者 linux "$HOME/.local/share/Trash/files"
# 如果你想修改默认垃圾桶的路径,直接使用 vim 之类的编辑器修改这个 rm.sh 文件开头的默认路径就可以了
alias rm='~/.shell-safe-rm/bin/rm.sh'

或者如果你有使用过 nodejs 也可以使用 npm 安装(笔者使用的这种方式)

npm install -g safe-rm;
alias rm='safe-rm'

同样可以做个简单的测试:

# 进入用户主目录,创建一个文件"痛苦的回忆",然后 rm 删除看看
# 之后 cd ~/.Trash 里边就可以找到了
cd
touch 痛苦的回忆
rm 痛苦的回忆

卸载:

# First remove the alias line from your ~/.bashrc file, then
npm uninstall -g safe-rm
# Or
make && sudo make uninstall
# Or
sudo sh uninstall.sh

如何恢复文件

恢复文件比较简单,你可以直接进入 .Trash (你设置的文件夹)然后直接 mv 文件到你想恢复的地方就可以了(注意别同名覆盖了)

同名冲突问题kaelzhang/shell-safe-rm 同名冲突问题

好了,大功告成。这里你就可以放心删除文件了,不过你可能在想,如果删除的文件名称相同冲突了怎么办。我自己测试了一下, rmtrash 会在被删除的同名文件加上 “Copy” 后缀,而 safe-rm 会加上时间后缀,所以不用担心垃圾箱里的文件会同名覆盖掉。 当然如果长期不用的话可以去 macOS 的垃圾桶点击清理(实际上macOS垃圾桶就是放到的.Trash),或者 unalias 一下然后删除。

小结

对于一些危险操作,还是尽量防患于未然。笔者当初也感觉不会手残,但是最终还是被打脸,误删了文件给自己造成了麻烦。 希望这俩工具对大家有帮助,再也不用担心误删跑路啦。如果有更好的工具欢迎评论区留言。

近期文章:

PegasusWang:程序员双十一剁手指南​zhuanlan.zhihu.com
405234cad6e82144c358b43ec1821b35.png
PegasusWang:完全不用鼠标写代码!你信么?[视频]​zhuanlan.zhihu.com
d91bfb3e264f743fed4404d6ffa81023.png

书籍推荐:

linux 程序员键盘:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 流程图

Spring工作流程描述1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获…

kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解

首先介绍一下 Kafka 生产者发送消息的过程:Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发送的内容,同时还可以指定键和分区。在发送 ProducerRecord 对象前,生产者会先把键和值对象序列…

python图像分割算法_OpenCV-Python 图像分割与Watershed算法 | 三十四

目标 在本章中, 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到:cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局…

NEO从源码分析看共识协议

2019独角兽企业重金招聘Python工程师标准>>> 0x00 概论 不同于比特币使用的工作量证明(PoW)来实现共识,NEO提出了DBFT共识算法。DBFT改良自股权证明算法(PoS),我没有具体分析过PoS的源码&#x…

怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)

使用ubuntu的小伙伴们直接使用命令sudo apt-get installr-base-dev或者r-base搞定。然而对于使用centos的我却一直卡在安装这一步,十分的悲催,只有羡慕的份,但也不至于在linux上使用不上R。办法还是有的,自己总结出两种方法&#…

linux部署node web,nodejs怎么部署到Linux上?

nodejs怎么部署到Linux上?下面本篇文章就来给大家介绍一下在Linux上部署nodejs的方法,希望对大家有所帮助。nodejs部署到Linux上的方法如下:(建议先安装xshell和xftp)1、到nodejs官网下载压缩包(选择合适自己系统的版本),放到Linu…

python树莓派 是什么_用树莓派和Python给你的植物浇水

我想指出,我绝不是电子学专家。如果你让我制作一个电路图或者解释某件电子产品工作原理的细节,我会一无所知。在生活中,我对电力的工作原理有了基本的了解,我只是胡乱摆弄了一下电子元件就完成了这个工程。话虽如此,当…

htmlspecialchars() 函数过滤XSS的问题

htmlspecialchars()函数的功能如下: htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: & (和号)成为 &" (双引号)成为 " (单引号)成为 …

用mac的python写网络爬虫_在mac下使用python抓取数据

2015已经过去,这是2016的第一篇博文! 祝大家新年快乐! 但是我还有好多期末考试! 还没开始复习,唉,一把辛酸泪! 最近看了一遍彦祖的文章叫做 所以自己也想小试牛刀.于是便开始动手写,但初次接触,…

運輸配送信息Delivery_Information

为什么80%的码农都做不了架构师?>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司,為客戶配送磁磚傢俬潔具: 佛山冠昌達中港運輸(散貨或包車,近佛山石灣的磁磚倉庫,近樂從傢俬城…

Spring+SpringMVC+Mybatis 多数据源整合

原文地址:http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的总体大概流程 :1. 拷贝所需jar 2.写一个数据库切换的工具类:DataSourceContextHolder&am…

查看mysql sql执行器优化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代码_win10下git初始安装及配置工作

git安装从https://git-scm.com/https://git-scm.com/download/win 中下载安装包,点击exe文件运行,选择安装路径即可安装。git配置初次运行git前的配置,新建文件夹1、 新建一个文件夹,用来存放代码的文件夹---2、 打开文件夹&#…

联想m7400pro清零方法_联想打印机怎么清零 联想打印机清零方法【教程】

今天小编为读者挑选出了联想 打印机 部分机型的清零方式,希望阅读完这篇文章能帮助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先点击控制面板上的“联机”按钮,让打印机处于脱机状态,再点击“执行”按钮进行打印。先点击控制面板上的“联机”…

c语言中数组名可以与其他变量名相同,C语言初学者入门讲座 第九讲 数组(1)...

C语言初学者入门讲座 第九讲 数组(1)(2007-01-17 11:39:19)数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为…

pb通过对象名称调用对象_C++ 可调用对象(二)

点击上方“蓝字”,发现更多精彩。本文在前一篇关于函数对象、bind 函数的基础上,对 C 中 lambda不表达式的使用进行总结。lambda01PART定义一个 lambda 表达式表示一个可调用的代码单元,可以理解为是一个未命名的内敛函数。类似任何函数&…

交换机虚拟化和堆叠的区别_核心交换机和普通交换机有何区别?

提起核心交换机与普通交换机有什么区别?相信很多朋友都有点迷惑,今天我们一起来了解下。核心交换机并不是交换机的一种类型,而是放在核心层(网络主干部分)的交换机叫核心交换机。一般大型企业网络和网吧需要购买核心交换机来实现强大的网络扩…

tmpfiles.d导致的unix:///tmp/supervisor.sock no such file坑(待续)

为什么80%的码农都做不了架构师?>>> 系统环境: CentOS Linux release 7.1.1503 (Core) supervisor 3.3.1今天初七,刚放完假需要去supervisor restart下程序。发现报了这个错误。但是看supervisord的进程还在运行,项目代码也还在…

springMVC两种方式实现多文件上传及效率比较

springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传。这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方…

c语言 个位,如何才能给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要…