我試圖使用下面的命令,但它需要運行sudo
才能工作,我該怎麼做?如何將sudo添加到grep並刪除命令?
cd /usr/local/bin && \
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | xargs rm
我試圖使用下面的命令,但它需要運行sudo
才能工作,我該怎麼做?如何將sudo添加到grep並刪除命令?
cd /usr/local/bin && \
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | xargs rm
這是一個可怕刪除/usr/local/bin
中指向../Library/Frameworks/Python.framework/Versions/2.7
的任何符號鏈接的方法。
它分析ls
(請參閱this爲什麼你不想這樣做)。
它使用grep
從理論上講,至少會比預期的要多。
如果找到的文件名中有空格,則不安全/正常工作。
這對任務來說也過於複雜。
試試這個:
find /usr/local/bin -lname '*/../Library/Frameworks/Python.framework/Versions/2.7*'
,如果打印出您所期望的事物的名稱(添加-ls
到最後拿到ls -l
式的輸出,而不是),然後使用
find /usr/local/bin -lname '*/../Library/Frameworks/Python.framework/Versions/2.7/*' -delete
到刪除它們(假設OS X find
支持-delete
)。
如果它不使用-execdir rm {} \+
或-execdir rm {} \;
或-exec rm {} \+
或-exec rm {} \;
(按照該順序,直到找到一個有效的)。
使用-okdir
或-ok
代替-execdir
和-exec
會導致find
打印就是了運行它之前確認你運行的命令(類似於rm -i
會提示爲每個文件被刪除)。
然後,您可以在整個find
命令中使用sudo
,或者根據需要使用rm
命令。
從我的經驗來看,這是給你帶來麻煩的sudo cd
。
您可以cd /usr/local/bin
然後運行sudo ls -l ...
OR
看起來cd
因爲您指定的路徑是不是真的需要。因此,請不要使用cd
命令並在任何地方使用完整路徑。
'&&'打破了列表,所以'sudo'隻影響'cd',假設'sudo cd ... && ls ...'。 –
是的,這就是爲什麼我說要分開做。 – dan08
我的觀點是'cd'本身沒有涉及。 * &&或'||'列表中的任何內容都具有相同的效果。 –
你不能'sudo su'進入root shell嗎? – asimovwasright
我想我可以,但我想知道在哪裏添加到行中。 – Stickers
這取決於哪個命令需要它? – asimovwasright