Это друг. Это очень, очень хороший друг. Типа, которого вы приглашаете в свой дом и позволяете им оставить для вас копию ваших ключей. Команда/bin/rm
является одним из основных инструментов операционной системы и командой по умолчанию, используемой, когда вы хотите удалить файл. Его удаление, скорее всего, сломает вашу систему, так как обязательно будут различные программы, которые предполагают, что он существует, и используют его 1 .
Я предполагаю (и подчеркиваю, что это предположение, я не знаю, как работает Bitdefender ), что Bitdefender что-то заблокировал, возможно вредоносное ПО, пытающееся удалить файл с вашего компьютера. Предположительно, он пытался удалить его с помощью /bin/rm
, поэтому битдефендер заблокировал /bin/rm
.
Однако полное отключение этой важной утилиты похоже на объявление камней незаконными, потому что кто-то однажды бросил в вас один из них. Утилита rm
— это инструмент, который можно использовать безопасно или опасно, в зависимости от того, как он используется.
1На самом деле я только что попробовал это на виртуальной машине Ubuntu. К моему удивлению, удаление /bin/rm
не помешало машине нормально завершить работу и перезагрузиться. Я также могу удалять файлы из файлового менеджера с графическим интерфейсом. Тем не менее,удаление такой базовой утилиты — не очень хорошая идея, и я все еще ожидаю, что в какой-то момент это вызовет проблемы.
Следующая функция окрашивает root
в красный цвет везде, где он появляется в выводе ls
с последующим пробелом:
ls() {
if [ -t 1 ]; then
command ls --color=always "$@"| sed "s/root /$(tput setaf 1)root$(tput sgr0) /g"
else
command ls "$@"
fi
}
Это будет соответствовать root
в столбцах пользователя и группы, а также в файлах, содержащих «root
» (с пробелом ), так что это может быть не совсем то, что вам нужно. Принудительный вывод цвета, по крайней мере, гарантирует, что он не будет соответствовать файлам с именем «root».
Вызов sed
может использовать специальные функции Zsh -вместоtput
:
echoti
:sed "s/root /$(echoti setaf 1)root$(echoti sgr0) /g"
sed "s/root /${(%):-%F{red}root${(%):-%f} /g"
(да, первая скоба разбалансирована)colors
(autoload colors; colors
):sed "s/root /${fg[red]}root${reset_color} /g"
Если ваш терминал поддерживает более 16 цветов, вы можете использовать более высокие значения с помощью setaf
. %F{red}
также может использовать числовые значения. Модуль nearcolor
предоставляет простой способ найти наиболее близкий цвет, соответствующий желаемому значению RGB.
Если у вас есть существующийls
псевдоним , настройка --color=tty
, вам необходимо его отключить, иначе --color=tty
будет стоять после --color=always
в вызове ls
и ls
' собственная окраска будет отключена.
Быстрое и грязное решение:
function ls {
command ls "$@" | grep -E --color=always "^|root "
}
Для простоты это также будет окрашивать слово root
в любых именах файлов.
Я не добавлял проверку использования конвейера, но вы можете увидеть это в других ответах здесь.