環境:操作系統:CentOS7.6;shell:zsh5.0.2晚上搬磚到凌晨2點多時,一時糊涂,竟然莫名其妙地在shell命令行中敲下了如下讓我后悔莫及的命令:mv/*/www/wwwroot從而將系統根目錄下面的/bin、/etc、/sbin、/usr、/var、/root、/home等目錄移動到了/www/wwwroot目錄下,于是導致很多命令都無法正常執行。整個人都懵了的情況之下,手忙腳亂中又關閉了連線中的shell終端會話窗口,于是再也連不上服務器了。由于根本連不上服務器,之后找云服務商幫忙也表示愛莫能助,只能重裝系統。這次教訓過于慘痛,痛定思痛之余,為了以后避免類似事件,想編寫一個攔截mv命令的同名函數,當發現mv后面輸入的是/*或/bin、/etc、/sbin、/usr、/var、/root、/home時,echo一個警告信息出來,然后退出執行。但我發現在條件表達式中無法匹配到參數“/*”中的星號*,因為星號*在作為參數輸入之前已被展開,因此實際上輸入的參數是星號*展開后的值。由于在下水平有限,這里請教一下各位shell高手,能否根據上述要求,編寫一個攔截mv命令的同名函數。誠摯感謝!
一次慘痛的教訓后,向各位shell高手求一個Linux mv命令的同名攔截函數謝謝哈~
函數式編程
2019-09-19 22:10:43