我正試圖編寫一個腳本,在OSX Lion登錄時重命名一個文件。bash腳本mv命令不起作用
這是到目前爲止我的腳本:
我創建了一個LoginHook執行該腳本。我知道它會在登錄時執行,因爲計算機會在發現「ksadmin」文件時發出提示。我知道它會找到「ksadmin」文件,因爲計算機顯示「成功」。我也手動重命名了文件,退出登錄,並且計算機顯示「不成功」。
問題是腳本沒有將「ksadmin」重命名爲「ksadmin1」。我寫過正確的命令嗎?
任何想法都會很棒。
摩根
我正試圖編寫一個腳本,在OSX Lion登錄時重命名一個文件。bash腳本mv命令不起作用
這是到目前爲止我的腳本:
我創建了一個LoginHook執行該腳本。我知道它會在登錄時執行,因爲計算機會在發現「ksadmin」文件時發出提示。我知道它會找到「ksadmin」文件,因爲計算機顯示「成功」。我也手動重命名了文件,退出登錄,並且計算機顯示「不成功」。
問題是腳本沒有將「ksadmin」重命名爲「ksadmin1」。我寫過正確的命令嗎?
任何想法都會很棒。
摩根
什麼是對ksadmin的權限?如果僅讀取您的登錄ID並且ksadmin1已經存在,那麼您可能需要mv -f。 另外,您可能需要將「〜」擴展到絕對路徑。不知道什麼時候你的腳本被執行,但是bash可能還沒有擴展它。
感謝cdarke,Miquel和mVChr的幫助。這個問題的解決方案如下:
#!/bin/bash
if [ -f /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ]; then
mv /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin1
say "Successful"
else
say "Unsuccessful"
fi
版本我使用的部署:
#!/bin/bash
if [ -f /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin ]; then
mv /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin /Users/$1/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin1
fi
您可以添加,在mv命令的結束,部分如下:'2>&1> 1/tmp/mverror',然後檢查它是否在抱怨什麼。也許甚至用-v運行mv,所以你可以確定它實際上是執行的 – Miquel
謝謝,我會嘗試它 – MorganR
@Miquel我試着做這兩個命令,但兩者似乎什麼都不做。在/ tmp /目錄中沒有創建文件,也沒有任何提醒我該文件已被移動。 – MorganR