Как очистить корзину в терминале macOS?

Вопрос или проблема

sudo rm -rf ~/.trash/

Не работает для меня. Я получаю это сообщение об ошибке:

/Users/userName/.trash: Operation not permitted
and no matches found: /Users/UserName/.trash/*

Попробуйте изменить эту команду на следующую:

sudo rm -rf ~/.Trash/*

И чтобы удалить так называемые невидимые файлы и директории с точкой, сделайте это:

sudo rm -rf ~/.Trash/.*

Обратите внимание на заглавные буквы, ~/.Trash, а также добавленные /* и /.*, которые обеспечат удаление содержимого ~/.Trash, а не всей директории ~/.Trash целиком. Вы этого не хотите.

Это работает на моем Mac.

osascript -e 'try' -e 'tell application "Finder" to empty' -e 'end try'

Если корзина уже пуста, то tell application "Finder" to empty вызывает ошибку. Команды try и end try устраняют любые ошибки.

Например, когда корзина пуста, происходит следующее.

% osascript -e 'tell application "Finder" to empty'; echo $? 
29:34: execution error: Finder got an error: The operation can’t be completed. (-128)
1

Я полагаю, вы могли бы просто поймать ошибку -128, используя следующее.

osascript -e 'try' -e 'tell application "Finder" to empty' -e 'on error number -128' -e 'end try'

Ответ или решение

Операционная система macOS предоставляет пользователям возможность управления файлами и каталогами как через графический интерфейс, так и через командную строку. Одной из задач, которую иногда требуется выполнить через терминал, является очистка корзины. Пользователи часто сталкиваются с трудностями при использовании команды для удаления файлов из корзины непосредственно из терминала, особенно если команда сталкивается с ограничениями прав доступа или некорректно указаны пути. Давайте разберёмся, как правильно и безопасно очистить корзину с помощью терминала на macOS.

Теоретическая часть

Корзина в macOS представлена в системе как директорий ~/.Trash для каждого пользователя, где ~ обозначает домашний каталог пользователя. Если вы хотите удалить файлы из корзины через терминал, вам необходимо обратить внимание на права доступа и корректно указать путь.

Ошибка, с которой вы столкнулись, связана с двумя аспектами: неверный путь и ограничения доступа. Путь, указанный в вашей команде (~/.trash/), является ошибочным, так как macOS использует ~/.Trash — с большой буквы «T». Более того, начиная с более новых версий macOS, из-за более строгой политики безопасности пользователям может быть отказано в операциях с критически важными для системы директориями.

Пример

Предположим, что вы ввели следующую команду:

sudo rm -rf ~/.Trash/

и столкнулись с ошибкой:

/Users/userName/.trash: Operation not permitted
and no matches found: /Users/UserName/.trash/*

Ошибки здесь вызваны не только неправильным регистром в имени директории (.trash вместо .Trash), но и тем, что попытка использования rm -rf может не иметь достаточных разрешений без явной потребности.

Чтобы решить эту проблему, используйте команду:

sudo rm -rf ~/.Trash/*

Однако стоит быть предельно осторожным при использовании sudo rm -rf, так как эта команда удаляет файлы без возможности их восстановления.

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

sudo rm -rf ~/.Trash/.*

Эта команда удалит также невидимые «точечные» файлы, которые могут находиться в корзине.

Применение

Если команда rm не срабатывает или вы хотите использовать более безопасный метод, вы можете использовать команду Apple Script для автоматического обращения к Finder и выполнения задачи очистки:

osascript -e 'try' -e 'tell application "Finder" to empty' -e 'end try'

Это скрипт AppleScript, выполняемый через терминал, который взаимодействует с приложением Finder и даёт команду очистить корзину. Использование блока try защищает вас от ошибок, которые могут возникнуть, если корзина уже пуста.

Вы можете более изящно обработать возникающую ошибку отсутствия файлов для удаления (ошибка номер -128), используя:

osascript -e 'try' -e 'tell application "Finder" to empty' -e 'on error number -128' -e 'end try'

Таким образом, ваш скрипт не выведет ошибку, если корзина уже пуста.

Заключение

При работе с файловой системой через терминал на macOS всегда помните о безопасности. Используйте команды с правами администратора (sudo) только в случае крайней необходимости и всегда следите за правильностью ввода путей и имен директорий. Несоответствие в верхнем и нижнем регистре может привести к ошибкам в доступе. Если же нужно обойти ограничения терминальных команд, всевозможные AppleScriptы могут стать спасительным решением, особенно когда они взаимодействуют непосредственно с системными приложениями. Внимательно следуйте приведённым рекомендациям и основополагающим принципам, чтобы работать эффективно и безопасно.

Оцените материал
Добавить комментарий

Капча загружается...