CentOS修改rm命令的折騰

2022-09-11 02:36:12 字數 2769 閱讀 1361

因為前段時間網線被人給換了,導致我的內網ip變換,因此需要重新設定nfs,結果發現從機上一直掛載不上,然後發現無法ls的目錄下設定的data資料夾竟然還存在,因此想要刪除它,就直接使用了rm -rf命令,因為ls都能宕機,因此想當然就認為沒有掛載上,結果刪了好多nfs上的內容。

因此今天就想修改一下rm命令,使得以後執行這種操作的時候可以自動進行備份,同時,我不想像絕大多數人一下直接使用變相的mv命令,於是根據網上的方式修改了mv和rm命令。

修改rm命令的shell**如下所示,我是乙個運維菜鳥,shell指令碼功底差因此是根據別人的改的。

#! /usr/bin/bash

if [ -f "$1" ]; then

get_char()

path=/bak/$

if [ ! -d "/bak/$" ]; then

mkdir -p /bak/$

chmod -r a+w /bak/$

fiecho $1 | grep "/" >/dev/null

if [ "`echo $?`" = "0" ]; then

cd $

fidatenow=`date +%y%m%d`

timenow=`date +%h%m%s`

/usr/bin/cp -r $1 $/$.$.$

echo "target file\"$1\"

has been copied to $/$.$$"

echo "now going to "rm $1", press any key to continue..."

char=`get_char`

rm $1

fiif [ -f "$2" ]; then

get_char()

path=/bak/$

if [ ! -d "/bak/$" ]; then

mkdir -p /bak/$

chmod -r a+w /bak/$

fiecho $2 | grep "/" >/dev/null

if [ "`echo $?`" = "0" ]; then

cd $

fidatenow=`date +%y%m%d`

timenow=`date +%h%m%s`

/usr/bin/cp -r $2 $/$.$.$

echo "target file\"$2\"

has been copied to $/$.$$"

echo "now going to "rm $1 $2", press any key to continue..."

char=`get_char`

rm $1 $2

fi

上述的shell**大家可以在centos下直接使用,原本寫成函式可以減少許多行,但是對於shell我初來乍到,因此沒有貿然改,而且當時用的vim寫,複製老方便了,就造成了這種不美觀的現象。

**的基本意思就是在根目錄下建立乙個bak資料夾,這個資料夾是777許可權的,可以方便大家在不使用sudo的時候也能夠把要刪除的檔案和資料夾放入進來,而且會按照使用rm命令的使用者名稱來備份檔案。

到了目前的情況,還遠不算折騰,上面的**要進行修改,修改的操作如下:

刪除get_char函式

把**中的rm修改為你原來的rm重新命名之後的名稱

因為get_char函式會讓你用任意鍵繼續,如果直接用上面的**替換,你會發現你再也無法登入了。因此登入的時候好像會呼叫rm或者mv命令,我當時把rm和mv都換了,導致我現在也不清楚到底是哪個命令導致的問題,使得輸入密碼正確後也無法登陸成功,直接卡死。黑色terminal需要你的輸入。

第二點主要是因為避免進入無線死迴圈,一旦沒有進行更換,你除非在本地上重啟進入單使用者模式進行維護,不然就一輩子別想登陸這台機子了。

這裡面還有幾個問題需要我以後去驗證,目前沒有時間去做,以後希望可以進行驗證和修改。

目前只能想到這些,以後再行修改和細化,修改後的**如果我測試之後ok了,也會再放上來,如果有朋友修改了,也希望可以告訴我,讓我這個運維渣渣可以學到更多。

如果文中有錯別字,請見諒,win10半個多月沒重啟了,卡得不要不要的,打字如放幻燈片。

下面貼上關於mv的shell**,與rm的**大同小異,使用的時候要進行的改動也一樣。

#! /usr/bin/bash

if [ -f "$2" ]; then

get_char()

path=/bak/$

if [ ! -d "/bak/$" ]; then

mkdir -p /bak/$

chmod -r a+w /bak/$

fiecho $2 | grep "/" >/dev/null

if [ "`echo $?`" = "0" ]; then

cd $

fidatenow=`date +%y%m%d`

timenow=`date +%h%m%s`

/usr/bin/cp $2 $/$.$.$

echo "target file\"$2\"

has been copied to $/$.$$"

echo "now going to "mv $1 $2", press any key to continue..."

char=`get_char`

fimv $1 $2

linux下修改rm命令防止誤刪除

前言 相信很多朋友都遇到過在linux下用rm命令誤刪除檔案的時候,此刻的心中彷彿有無數的羊駝在奔騰。那麼怎麼防止這種情況發生呢?當然是有方法的,我們可以寫乙個shell指令碼,改變一下rm命令的作用。第一步 先在home目錄下建立乙個叫username名字的目錄 當然名字可以自定義 具體命令為 s...

Linux必會的命令 rm

rm是常用的命令,該命令的功能為刪除目錄 檔案 可同時刪除,多個檔案 多個命令 rm rf此命令慎用 1.刪除 tmp istester 目錄下的檔案xiaoxiao.ini 系統會詢問是否刪除 rm 路徑 被刪除檔名 2.強行刪除 tmp istester 目錄下的檔案xiaoxiao 直接刪除,...

CentOS修改網路引數命令

1.修改主機名稱 root centos vim etc sysconfig network 開啟檔案,修改以下內容並儲存 networking yes 使用網路 hostname centos 設定主機名稱 root centos hostname centos 立即生效 2.修改網絡卡 root...