`rm` подсказывает, когда дано более одного файла [дубликат]

См. Мой ответ здесь . Короче говоря, если на компьютере уже нет операционной системы, просто отключите устаревший режим и примените его, иначе проверьте, установлена ​​ли текущая операционная система в режиме uefi или в устаревшем режиме. В первом случае вы получили зеленый свет, во втором, извините, вам также придется установить debian в устаревшем режиме (вы можете стереть диск и установить debian в режиме uefi, если хотите). Обратите внимание, что в руководстве по установке указано, что в зависимости от фазы луны все может пойти не так. :-я. Также рекомендуется установить uefi, он предлагает множество преимуществ и новых функций. Я думаю, что проблема, о которой я упоминал выше, возникает очень редко, судя по отсутствию результатов Google по конкретной проблеме. Подробности см. В руководстве.

1
14.03.2016, 15:54
2 ответа

Делайте частые резервные копии, используйте снимки (а-ля машина времени), если ваша файловая система - ZFS или btrfs, тренируйте пальцы, чтобы использовать правильные команды, но я бы посоветовал избегать изменения поведения и семантики rm.

Это рано или поздно приведет к обратному результату, как и несносный alias rm="rm -i"...

В вашем случае я бы посоветовал при запуске интерактивных оболочек отключать rm и заменять его пользовательским rm, который будет выполнять свою первоначальную работу. Например. добавьте эти строки в ваш .bashrc

rm() {
    echo "rm disabled, use myRM instead"
}
alias myRM="command rm"

Раздражение, вызванное новой функцией rm, будет более эффективно помогать вам избавиться от опечаток, и вы, вероятно, быстро перестанете набирать rm.

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

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

Наконец, если вы все же захотите перегрузить команду rm, вот лаконичный способ сделать это:

rm() {
  echo command rm $([ ${#} -gt 1 ] && echo \-i) "$@"
}
0
27.01.2020, 23:26

определите функцию rm в вашем bash и проверьте количество аргументов. Если есть только 1 аргумент, то выполните команду rm для вызова исходной команды. В противном случае выведите предупреждение.

Что-то вроде:

function rm()
{
    if (( $# > 1 )); then
        read -r -p "sure? [y/n] " response
        case $response in
            [yY])
                command rm "$@"
                ;;
            *)
                echo "ignored"
                ;;
        esac
    else
        command rm "$@"
    fi
}

Одна вещь, которую нужно улучшить в моей функции, это сначала просканировать все параметры и если параметр начинается с -, то рассматривать параметр как опцию. Таким образом, функция rm обрабатывает ввод как rm -f 1.txt.

3
27.01.2020, 23:26

Теги

Похожие вопросы