Команда rm -rf является одним из самых мощных и одновременно опасных инструментов в арсенале системного администратора Linux. Одно неверное движение или опечатка — и важные данные, а то и вся система, могут быть безвозвратно утеряны. Например, вместо rm -rf /var/ случайное добавление пробела (rm -rf /var /) может привести к удалению корневого каталога.

Чтобы избежать подобных катастроф и привнести привычную функциональность «корзины» из графических оболочек в командную строку, существует утилита trash-cli. Она не удаляет файлы навсегда, а перемещает их в специальный каталог, откуда их легко восстановить. Это обеспечивает дополнительный уровень безопасности, сравнимый с работой в графическом интерфейсе.

Установка trash-cli

Утилита trash-cli доступна для большинства популярных дистрибутивов Linux и macOS. Выберите подходящий метод установки:

Для Ubuntu/Debian

sudo apt install trash-cli

Для Arch Linux

sudo pacman -S trash-cli

Для macOS

Хотя macOS уже имеет свою корзину, trash-cli можно установить или обновить через Homebrew:

brew install trash-cli

Установка через pip (для любого Linux)

Если предпочитаете установку через Python-менеджер пакетов pip, это универсальный метод:

pip install trash-cli

Основные команды trash-cli

После установки вы можете использовать следующие команды для управления файлами и корзиной:

Перемещение файла или папки в корзину

Используйте trash-put вместо rm для «удаления» файлов и каталогов:

trash-put dangerous-file.txt

Просмотр содержимого корзины

Чтобы увидеть, какие файлы находятся в корзине:

trash-list

Восстановление файлов из корзины

Утилита trash-restore предлагает интерактивный режим для восстановления удаленных файлов. Она покажет список файлов и предложит выбрать, какой из них вернуть:

trash-restore

Очистка корзины

Вы можете удалить файлы из корзины, старше определенного количества дней, или полностью очистить ее:

Удаление файлов старше N дней (например, 7 дней)

trash-empty 7

Полная очистка корзины

Эта команда безвозвратно удалит все содержимое корзины:

trash-empty

Ключевая функция: Замена команды rm

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

Добавьте следующую строку в ваш файл ~/.bashrc (или аналогичный для вашей оболочки, например, ~/.zshrc):

echo "alias rm='trash-put'" >> ~/.bashrc
source ~/.bashrc

После этого, команда rm будет перемещать файлы в корзину. Если вам действительно нужно удалить файл без возможности восстановления, используйте полный путь к исполняемому файлу /bin/rm или добавьте обратную косую черту перед командой: \rm.

Преимущества использования trash-cli

  • Повышенная безопасность: Файлы не удаляются навсегда, их можно восстановить. Это критически важно для production-серверов или в скриптах, где ошибка может быть дорогостоящей.
  • Привычный интерфейс: Концепция корзины интуитивно понятна пользователям, переходящим с графических ОС.
  • Автоматизированная очистка: Возможность настроить автоматическую очистку старых файлов из корзины помогает управлять дисковым пространством.
  • Спокойствие: Зная, что у вас есть «второй шанс», работа становится менее стрессовой, даже при дрожащих пальцах.

Недостатки и особенности

  • Занимает место: Как и любая корзина, trash-cli хранит удаленные файлы, потребляя дисковое пространство. Это требует периодической очистки.
  • Ограничения на файловых системах: Может не работать корректно на смонтированных файловых системах с отличающимися правами или специфическими конфигурациями.
  • Привыкание: Для опытных пользователей, привыкших к немедленному удалению через rm -rf, потребуется некоторое время, чтобы адаптироваться к новому поведению команды.

Использование trash-cli значительно снижает риск случайной потери данных, особенно в критически важных средах. Это простая, но мощная утилита, которая может спасти вашу систему от нежелательных последствий. Дополнительная информация и исходный код проекта доступны на GitHub.