Есть некоторые терминальные команды, которые способны эффективно уничтожать большие массивы данных. Например: sudo rm -rf /* или rm -rf /* . Я хочу настроить предупреждение, которое будет отображаться при каждом вводе этих деструктивных команд. Что-то вроде этого:

sudo rm -rf /*
Are you sure you want to remove all files from your root 
directory recursively? This operation will remove all files from the root 
directory, any mounted filesystems attached to it and essential operating 
system files. 
Are you sure you want to proceed? [Y/n]

rm -rf /*
Are you sure you want to remove all files owned by $USER 
recursively? This operation will remove all your files on the root 
filesystem and any filesystems mounted to it.
Are you sure you want to proceed? [Y/n]

Как написать сценарий, который делает это?

1 ответ1

0

rm есть опция -i которая запрашивает каждый раз перед удалением файла. Я думаю, что это не то, что вам нужно, потому что он запрашивает КАЖДЫЙ раз, прежде чем удалять файл, который часто будет содержать сотни подтверждений, если вы хотите рекурсивно удалить, например, git-репо.

Вероятно, вам нужен простой скрипт, который "заменяет" rm как этот

#!/bin/bash
if [ "$(ls -l $1 | wc -l)" = "1" ]; then
  rm $1 $@
else
  echo "You are going to delete these ($(ls -l $1 | wc -l)) files/directories via shell globbing" 
  ls $1
  read -p "Do you really want to delete these files? [y/n]" yn
  if [ $yn = [Yy] ]; then
    rm $1 $@
  fi
fi

Примечание: вы должны использовать скрипт типа "rm FILE ARGUMENTS".

Этот скрипт выглядит, если вы выбираете более одного файла (каталога) с глобализацией оболочки, но удаляет файл, если он только один.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .