2016-05-12 103 views
2

我試圖做一個簡單的命令來刪除所有whatever.whatever~文件,這是所有隱藏的垃圾文件,但我終端一直問我是或否,我不知道如何硬編碼是的腳本。在.bashrc中輸入用戶文本

這就是我要去迄今:

alias cleandir=' 
for i in ./*~ 
do 
rm "$i" 
yes 

done' 

這將導致終端要求我輸入yes或沒有對每個要刪除的對象,然後寫的無限量「Y」 。

例如:

joel test$ cleanup 
rm: remove regular file ‘./~main~.cpp~’? 

我寫的是或否,則:

y 
y 
y 
y 
etc... 

如何讓我的「是」實際上是在終端提示,如果它是用戶寫它?

第一次寫作。 在此先感謝!

+2

使用'rm -f「$ i」'或管道是到rm'是| rm「$ i」' – andlrc

+0

@andlrc:請在_answer section_中寫入_answers_。顧名思義,這就是它的存在。 –

回答

4

爲什麼不使用find呢?

alias cleandir="find /some/path -type f -name '*~' -delete" 

這是我用它來在Python刪除所有.pyc文件和工作得非常好(很明顯,與-name '*.pyc'代替)。

1

回答有關餵養輸入您的「RM」的過程(更正確,任何過程)你的問題,你可以管從過程數據,或從文件重定向例如

$ yes | rm 

將'yes'的標準輸出到'rm'的標準輸入中。這對於流程的動態輸出很有用。

或者您可以從文件重定向,例如

$ rm < 'myYesFile.txt' 

這需要的myYesFile.txt內容和該重定向到「RM」的標準輸入。這對於響應/輸入數據組的一個靜態有用。請注意,您不需要單獨的文件,並且您可以使用例如文本編輯器,例如文本編輯器。

$ rm <<EOF 
y 
y 
y 
EOF 

並在shell中明確聲明您的輸入。