2016-05-12 4 views
2

Я пытаюсь сделать простую команду, чтобы удалить все файлы whatever.whatever~, то есть все скрытые файлы нежелательной почты, но я Терминал все время спрашивал меня о да или нет, и я не знаю, как жестко кодировать да в скрипт.Введите текст пользователя в .bashrc

Это то, что я собираюсь на данный момент:

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

done' 

Это приводит к терминалу прошу меня ввести да или нет для каждого объект, который нужен удалить, а затем записать бесконечное количество «у» ,

, например:

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

я пишу, да или нет, то:

y 
y 
y 
y 
etc... 

Как мне сделать мой «да» на самом деле будет предложено в терминале, как если бы это был пользователь написать его?

Первый раз документ. Спасибо заранее!

+2

Использовать 'rm -f '$ i" 'или pipe yes to rm' yes | rm "$ i" ' – andlrc

+0

@andlrc: Пожалуйста, напишите _answers_ в разделе _answer_. Как следует из названия, для этого оно и есть. –

ответ

4

Почему бы вам просто не использовать find?

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

Это то, что я использую, чтобы удалить все файлы из .pyc Python и работает очень хорошо (очевидно, с -name '*.pyc' вместо).

1

Чтобы ответить на ваш вопрос о кормлении ввода в процесс «ет» (более правильно, любого процесса), вы можете либо трубы данных из процесса, или перенаправлять из файла, например,

$ yes | rm 

Труба выдает "да" в stdin 'rm'. Это полезно для динамического вывода из процесса.

Или вы можете перенаправить из файла, например.

$ rm < 'myYesFile.txt' 

который берет содержимое myYesFile.txt и перенаправляет, что в поток ввода «тт». Это полезно для статического статических набора данных ответа/ввода. Обратите внимание, что вам не нужен отдельный файл, и вы можете использовать heredoc, например.

$ rm <<EOF 
y 
y 
y 
EOF 

и заявить свои входы явно в оболочке.

Смежные вопросы