簡體   English   中英

使用 rm 和 ls 時無法通過 SSH 刪除目錄

[英]Cannot remove directories via SSH when use rm and ls

我在將代碼部署到服務器時嘗試清理發布目錄,但我需要至少保留 5 個。

現在我使用這個命令來做我提到的。

rm -rf $(ls -1t /path/to/deploy/release | tail -n +6)

當我在服務器上運行它時,一切看起來都很好,但是當我嘗試通過 ssh 運行時它不起作用。 . .

ssh user@123.456.789.100 'rm -rf $(ls -1t /path/to/deploy/release | tail -n +6)'

任何人請幫助或建議我。 我做錯了什么?

警告:就像所有涉及rm -Rf和“應該工作”的事情一樣,下面的內容實際上可能會刪除計算機上的所有文件(因為涉及ssh ,這既是本地計算機又是遠程計算機),並可能使您的廚房着火。 我對損壞等不承擔任何責任...備份(存儲在廚房以外的其他地方)總是一件好事,也許您應該先用rm -Ri測試?

你沒有說失敗是什么,但我注意到的一件事是ls命令將在/path/to/deploy/release目錄中生成一個文件名列表,但rm不會在該目錄中運行,所以它是將嘗試刪除主目錄中這些名稱的文件,而不是/path/to/deploy/release 這很容易通過首先cd進入該目錄來修復(盡管一定要寫命令,所以如果cd失敗,它不會只是隨機刪除錯誤目錄中的文件)。

另一個問題是命令依賴分詞來轉ls ... | tail ...的輸出。 ls ... | tail ...進入文件名列表,如果任何文件名包含空格和/或通配符,則該列表將失敗。 這個問題比較難解決,所以我會忽略這個問題,希望它永遠不會對你造成影響。

無論如何,通過cd修復(以及未修復的空白錯誤),這就是我得到的:

ssh user@123.456.789.100 'cd /path/to/deploy/release && rm -Rf $(ls -1t | tail -n +6)'

同樣,建議使用rm -Ri (並有良好的備份)進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM