Как интерактивно использовать rm в цикле чтения while?

#bash #rm

#bash #rm

Вопрос:

Я немного застрял в скрипте, который используется для поиска и удаления определенных файлов. Я хочу предоставить пользователю возможность перебирать список и удалять каждый файл только после одобрения человеком.

Тем не менее, я нахожу скрипт, который пропускает взаимодействие с пользователем и не удаляет.

 cat $fileToBeDeleted | while read in; do

    rm -i "$in"
    echo "deleted: $in"

done;
 

Ответ №1:

Вместо использования rm -i вы можете использовать оператор if, чтобы запросить подтверждение перед удалением файла. В этом примере я использовал текстовый файл (to_delete_list.txt ), который содержит список файлов, которые я буду удалять.

read -u 1 answer позволит вам запрашивать ввод данных пользователем в цикле.

 #!/bin/bash
while IFS= read -r file; do
  echo "do you want to delete $file (y/n)?"
  read -u 1 answer
  if [[ $answer = y ]]
  then
        rm $file
        echo "deleted: $file"
  else
        continue
  fi
done < "to_delete_list.txt"
 

Комментарии:

1. На самом деле это не решает, как обращаться с rm -i в скрипте, но ваше предложение фактически решает мою проблему. Спасибо!