• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shayuvpn0001
V2EX  ›  程序员

血的教训!解锁 source 命令新的姿势,已准备跑路。

  shayuvpn0001 · Jan 17, 2019 · 27290 views
This topic created in 2847 days ago, the information mentioned may be changed or developed.

刚刚脑子也是抽了,觉得 history 里面 clear, exit, pwd 这种垃圾太多,总翻不到自己想找的以前的命令(某个 grep 正则表达式),于是准备拿.bash_history 开刀,vim 一番操作终于干掉了 clear, pwd 这种。

然后敲了一下 history,发现还没更新(应该是下次登录的时候重新载入),于是想到了用 source 更新一下。

高潮来了,我在命令行里敲下了 source .bash_history,一行行字符在屏幕飞速滚过,好像有什么不对。。。

左右翻看了一下,挂载到根目录下的硬盘被清空。。。

看了一下 history。。。

是不是已经凉了?还有救么?

Supplement 1  ·  Jan 17, 2019
From #22, @Liberal0
source FILENAME [arguments]:read and execute commands from FILENAME in the current shell.
Supplement 2  ·  Jan 17, 2019
我有些没理解,
为什么不是 cd 到 CrGuard 目录了吗? 为什么 rm -rf * 会删到 /下面?

source 的时候 cd 命令不起作用? 并且楼主是在 根路径下执行的 source ?

-------------------------------------------------------------
这是 N 年以前下载 CrGuard 的时候的操作,本来是手动在 Z 盘创建了一个 CrGuard 目录,然后 cd 进去的,git 下载了就拷贝出去了然后删除了 CrGuard。刚才 source 这一把执行到 cd CrGuard 这里必然是 No such file or directory,然后继续在 /z 执行了 rm -rf * -_-!!!!


这真的是美好的一天啊!!!
Supplement 3  ·  Jan 17, 2019
rm -rf 这种敏感操作,我还是很注意的。主要是没想到 source 这个浓眉大眼的也这么凶狠。。。
Supplement 4  ·  Jan 17, 2019
说用 sudo 能够拯救我的,放弃吧。你们更新环境参数 /配置的时候,也会加上 sudo 的吧,只要加了 sudo 提权,后面的都无解吧。你每次运行 source .bashrc 肯定前面会加上 sudo 的,所以这里我还是会加上 sudo 的。


====================醒!目!提!示!====================

这次事故是在 win7 系统下的 git bash 操作的, win 7 会把 C 盘, D 盘.... Z 盘挂在根目录上.
win7 下默认是管理员权限启动 git bash, 不存在 root 用户不 root 用户, 直接一把梭...
目前 Z 盘正在恢复中....

====================醒!目!提!示!====================

主要不是 sudo 的问题,也不是不注意 rm -rf 用法的问题.
是没想到 source 和.bash_history 这两个人畜无害的组合起来要了老命.
156 replies  •  2019-10-28 10:42:51 +08:00
1  2  
❮ ❯
holajamc
holajamc
Jan 17, 2019
1
陈独秀你坐下
sambawy
sambawy
Jan 17, 2019❤️6
2
快联系去越南或者泰国的船吧
CallMeReznov
CallMeReznov
Jan 17, 2019❤️58
3
hahiru
hahiru
Jan 17, 2019❤️4
4
强迫症患者的第 101 种死法。
cjlmwcy
cjlmwcy
Jan 17, 2019
5
凉凉
zhangroyaso
zhangroyaso
Jan 17, 2019❤️1
6
于是想到了用 source 更新一下
=====
这...什么神操作?!!
a41050447
a41050447
Jan 17, 2019 via iPhone
7
source 也敢乱用,佩服佩服 👍
auxox
auxox
Jan 17, 2019❤️1
8
比惨我从来没有输过谁 : )
simoncos
simoncos
Jan 17, 2019❤️1
9
又一次理解了懒惰的智慧
yuikns
yuikns
Jan 17, 2019 via iPad❤️3
10
@zhangroyaso 想要刷一下环境变量吧

楼主好好练歌,我会考虑买你握手券的
shayuvpn0001
shayuvpn0001
OP
Jan 17, 2019
11
@zhangroyaso 以为可以像 source .bashrc 那样。。。
ABenmao
ABenmao
Jan 17, 2019❤️2
12
哈哈哈,吓得我赶紧看了下 source 的用法
al0ne
al0ne
Jan 17, 2019
13
重新读取是 history -r 老哥这次要记住了
yuikns
yuikns
Jan 17, 2019 via iPad❤️2
14
不楼主你们这种动不动就是 root,还把各种服务放一起的(如果是),这种事情今天不发生明天也会的
exip
exip
Jan 17, 2019 via Android
15
source 命令敢这样用?看来您是没明白 source 到底是干什么的。
xcai
xcai
Jan 17, 2019 via Android
16
你千万别想着乘走私船到缅甸,再到越南柬埔寨。。我与 rm -rf / 不共戴天 🐶
ucanuup
ucanuup
Jan 17, 2019❤️1
17
ctrl+r 用来搜索历史命令很好用啊
4DAX07B8Kle4Dm6T
4DAX07B8Kle4Dm6T
Jan 17, 2019
18
我这里有本《 99 种跑路法》,只需要 10 块钱,楼主来一本?
Greendays
Greendays
Jan 17, 2019
19
为什么这个命令会出现在 history 里?
cmllwxxl
cmllwxxl
Jan 17, 2019
20
老哥,需要跑路一条龙吗,不要 998,只要 98,赶紧联系,晚了就跑不了了
kassadin
kassadin
Jan 17, 2019
21
吓得我也看了下 source 的用法,一直固定使用 source .zshrc,都当成固定用法了 ,原来还有这种骚操作
Liberal0
Liberal0
Jan 17, 2019 via Android
22
source FILENAME [arguments]:read and execute commands from FILENAME in the current shell.
zpf124
zpf124
Jan 17, 2019
23
我有些没理解,
为什么不是 cd 到 CrGuard 目录了吗? 为什么 rm -rf * 会删到 /下面?

source 的时候 cd 命令不起作用? 并且楼主是在 根路径下执行的 source ?
shayuvpn0001
shayuvpn0001
OP
Jan 17, 2019
24
@Greendays 这是 N 年以前下载 CrGuard 的时候的操作,本来是手动在 Z 盘创建了一个 CrGuard 目录,然后 cd 进去的,git 下载了就拷贝出去了然后删除了 CrGuard。刚才 source 这一把执行到 cd CrGuard 这里必然是 No such file or directory,然后继续在 /z 执行了 rm -rf * -_-!!!!


这真的是美好的一天啊!!!
jssyxzy
jssyxzy
Jan 17, 2019
25
hhhhhhhhhh
pexcn
pexcn
Jan 17, 2019
26
资深运维啊 XD
shayuvpn0001
shayuvpn0001
OP
Jan 17, 2019
27
不是删除了整个根目录,是删除了挂载到根目录下的 z 盘的全部内容。。。
exip
exip
Jan 17, 2019
28
数据恢复或许还来得及
whypool
whypool
Jan 17, 2019
29
优秀
richzhu
richzhu
Jan 17, 2019
30
看了下楼主的帖子😂 貌似是 JAVA 程序员,我还以为是我同行~
Yiki
Yiki
Jan 17, 2019
31
哇好骚啊..
ooeyunarika
ooeyunarika
Jan 17, 2019
32
承包了我今天的笑点
morefreeze
morefreeze
Jan 17, 2019
33
你这个需求 ctrl+r 肯定也解决了 如果还找不到 那也是 grep 命令太多了 和 pwd 这些无关
不过学到了跑路新姿势(手动滑稽
gabon
gabon
Jan 17, 2019 via Android
34
alias 了解一下
xiaket
xiaket
Jan 17, 2019❤️1
35
fzf 解决找历史命令的需求
shayuvpn0001
shayuvpn0001
OP
Jan 17, 2019
36
@morefreeze 是的,grep 太多,我知道 ctrl + r 的,这次纯粹是想回去翻某一条已经忘记的正则。
anzu
anzu
Jan 17, 2019
37
2333333
《 99 种 rm -rf 意外事故》
panyanyany
panyanyany
Jan 17, 2019
38
@zpf124 #23 在楼主执行 source 的时候,z 和 CrGuard 这 2 个目录并不存在,所以还是在根目录 / 下
SakuraKuma
SakuraKuma
Jan 17, 2019❤️1
39
... 简直惨..

source 还有个.操作, 还是小心点吧..
. .bash_history 一样效果
wenzhoou
wenzhoou
Jan 17, 2019 via Android
40
让我先笑三十分钟先。
Zzdex
Zzdex
Jan 17, 2019 via iPhone
41
@zpf124 楼主已经把 CrGuard 目录删了 cd 失败 上面还有一个 cd /
jasonyang9
jasonyang9
Jan 17, 2019
42
@panyanyany #38 不是根,`cd z`生效的,他把挂载在这个目录下的分区清空了
jzmws
jzmws
Jan 17, 2019
43
你跑把,弟妹和孩子我们会照顾好的!!
lynnX
lynnX
Jan 17, 2019
44
Windows 大法好!
HiJackXD
HiJackXD
Jan 17, 2019
45
1oNflow
1oNflow
Jan 17, 2019 via iPhone
46
那 source .bashrc 有什么风险吗…
pkookp8
pkookp8
Jan 17, 2019 via Android
47
rm $ENV -rf
的也注意了,ENV 哪天没赋值,又是 sudo 执行,就炸了
不过现在很多系统都会询问一下是否删除
不过不过不过很多人都不会看直接 yes
ymj123
ymj123
Jan 17, 2019 via Android
48
这么说来,楼主在删库前应该还下了个,gitbuh 上的库。哈哈。
wlsnx
wlsnx
Jan 17, 2019
49
exec $SHELL 了解一下
H0TSp1RnG
H0TSp1RnG
Jan 17, 2019
50
欢声笑语打出 GG
guanhui07
guanhui07
Jan 17, 2019
51
流弊
photon006
photon006
Jan 17, 2019❤️8
52
分享一个方法快速找到之前命令:
在当前用户~目录新建一个隐藏文件.inputrc,内容如下:
"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on


退出 terminal,重进,输入命令开头几个字母按“上”就出来了。
niuoh
niuoh
Jan 17, 2019
53
source .bash_history 这条命令也会保存在.bash_history 里
那么这条命令是不是会死循环...
bugsnail
bugsnail
Jan 17, 2019
54
又多了一种删库跑路的新姿势
anofac
anofac
Jan 17, 2019
55
@photon006
好用
JackieMe
JackieMe
Jan 17, 2019 via Android
56
我前几天想把别的文件一些内容添加进 ~/.vimrc,没想好正则怎么写命令都没写完脑子抽了就直接运行了,然后命令变成了 grep > ~/.vimrc ..
gethin0321
gethin0321
Jan 17, 2019
57
![AKBIG4038ABYIQUC]($1NTW.jpg]( https://i.loli.net/2019/01/17/5c400376aa6c0.jpg)
bomb77
bomb77
Jan 17, 2019
58
因为命令是顺序执行的啊,先 cd 到了 / 目录,你后面还有 cd z 和 cd CrGuard 命令,但如果 / 目录里面没有 z 目录的话,这两个 cd 命令就执行失败了,然后还是在 / 目录,后面的 rm -rf * 就默默在 / 目录里执行了啊
gaby2018
gaby2018
Jan 17, 2019
59
这么骚的操作?看来船票是买好了啊!!!
yulgang
yulgang
Jan 17, 2019
60
于是想到了用 source 更新一下.... 骚得我差点信了。🤣
wemore
wemore
Jan 17, 2019 via iPhone
61
你可以陪哥仨当偶像了😂
asdf123101
asdf123101
Jan 17, 2019 via Android
62
给大佬劈叉。。。
tabris17
tabris17
Jan 17, 2019
63
cd /
......
cd CrGuard/ # CrGuard 不存在,所以当前目录仍然是 /
cncoffer
cncoffer
Jan 17, 2019
64
刚好楼主的头像很像火箭, 看起来是准备逃去月球了么
auin
auin
Jan 17, 2019
65
真是愉快的一天
Chenamy2017
Chenamy2017
Jan 17, 2019
66
感谢你教会了我这种骚操作。
sxsexe
sxsexe
Jan 17, 2019
67
当你意识到问题的严重性时有没有一种从头凉到脚的感觉?
喂 喂 楼主还在吗
xiaket
xiaket
Jan 17, 2019
68
@niuoh 没完成的命令不会写入 history
starsky007
starsky007
Jan 17, 2019 via Android
69
666
Felldeadbird
Felldeadbird
Jan 17, 2019
70
老哥太秀了吧,rm -fr *
删除文件真的不能偷懒
BigPig666
BigPig666
Jan 17, 2019
71
你好骚啊
xi2008wang
xi2008wang
Jan 17, 2019
72
history 文件太坑了,为什么直接以命令的形式保存呢?

如果文件内容形式这样:
1 2018-10-19 10:57:47 cd /
或者前面加#号也可以
#1539915426
#pwd

那完成可以避免。。。。
9Rubi
9Rubi
Jan 17, 2019
73
是个狠人
jim9606
jim9606
Jan 17, 2019
74
我是好奇为啥你们都直接用 root 用户呢,有 sudo 就算错误执行也不会怎样啊
MarioLuisGarcia
MarioLuisGarcia
Jan 17, 2019
75
@xi2008wang 方便读取了再执行,比如 `!123` 是执行编号为 123 的 history 命令。
Govda
Govda
Jan 17, 2019
76
学到了..
Muyiafan
Muyiafan
Jan 17, 2019
77
sdijeenx
sdijeenx
Jan 17, 2019
78
其实还好啊,UNIX 认为用户知道自己在干什么,但实际上用户根本不知道自己在干什么。
loveCoding
loveCoding
Jan 17, 2019
79
是个狠人
haiyang1992
haiyang1992
Jan 17, 2019 via Android
80
楼主为什么不 history | grep 一下呢
geew
geew
Jan 17, 2019
81
抱歉 不厚道的笑了 感谢分享 还真不知道 source 原来是这个效果的...
fakefish
fakefish
Jan 17, 2019
82
厉害
laudukang
laudukang
Jan 17, 2019
83
优秀
co3site
co3site
Jan 17, 2019 via Android
84
哈哈,真是元气慢慢地一天,我 source 我的骚操作,还是 root 权限
ooooo
ooooo
Jan 17, 2019
85
论 走上跑路道路 的新姿势
CSM
CSM
Jan 17, 2019 via Android
86
不对啊,history 里那条命令是
50 rm -rf *
应该报错 command 50 not found 啊😯
missdeer
missdeer
Jan 17, 2019
87
原谅我笑出了声
abclucifer
abclucifer
Jan 17, 2019
88
不好意思,我笑了
JZ8ZW193q6W9Awgy
JZ8ZW193q6W9Awgy
Jan 17, 2019
89
@al0ne 我也记住了,哈哈
demo
demo
Jan 17, 2019
90
@CSM 50 是行号
log4geek
log4geek
Jan 17, 2019
91
幸亏你还有在 cd z,要是连这个 cd z 都没有,哈哈哈哈哈哈
sillinger
sillinger
Jan 17, 2019
92
虽然感觉是个很悲伤的故事,但为何嘴角疯狂上扬......抱歉抱歉
Applenice
Applenice
Jan 17, 2019
93
原来 source 还能这么用,我去看 source 的用法了。。。
XiaoXiaoNiWa
XiaoXiaoNiWa
Jan 17, 2019 via Android
94
。。
lemonda
lemonda
Jan 17, 2019
95
只有我觉得每条命令前输入 sudo 很麻烦吗?
改造 .bash_history 记录格式又要每台机器操作一遍
删除非空文件夹不用 rm -rf 该怎么删安全? 我现在习惯按照 v2 上某条回复 rm 路径 -rf 这样,稍稍避免了点输错路径粗手指按到回车的风险。
sikariba
sikariba
Jan 17, 2019
96
笑死了哈哈哈哈楼主拯救了我郁闷的一天
azuginnen
azuginnen
Jan 17, 2019❤️1
97
fzf 啊

lzj307077687
lzj307077687
Jan 17, 2019
98
成为地下偶像吧
allenhu
allenhu
Jan 17, 2019 via Android
99
厉害了
cppgohan
cppgohan
Jan 17, 2019
100
我不厚道的笑了..
1  2  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1886 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 210ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
♥ Do have faith in what you're doing.