Переместить файл в корзину на Snow Leopard из терминала

Snow Leopard позволяет пользователям "положить обратно" файлы, которые были перемещены в корзину из Finder. Тем не менее, когда я делаю mv <file> ~/.Trash из командной строки я не получаю опцию "положить обратно".

Есть ли в Snow Leopard встроенная команда, которая перемещает файл в корзину, позволяя мне по-прежнему использовать команду "Вернуть назад"?

7 ответов

Решение

Когда вы перемещаете файл в корзину, OS X обновляет .DS_Store файл внутри ~/.Trash с информацией "Вернуть". (Смотрите этот вопрос для более подробной информации)

Чтобы обновить это, вам также необходимо обновить .DS_Store файл при перемещении файла в корзину в терминале.

Я рекомендую установить Ruby gem osx-trash.

Как?

sudo gem install osx-trash

Использование?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.

В MacOSX SDK есть функции FSPathMoveObjectToTrashSync и связанные. Должно быть легко написать сценарий Python (или любой другой) вокруг него.

Изменить: Просто закодировал это. Можно найти здесь: rm-trash.py.

Вы хотите программу rmtrash.

Вы можете использовать его для добавления элементов в корзину, как если бы это было сделано в Finder.

Изменить: я только что попытался использовать rmtrash для удаления и восстановления. Это работает точно так же, как удаление из поиска. Файлы отображаются в корзине, могут быть вытащены и очищены точно так же. Использую его с 06 года или около того.

Проверять, выписываться trash-cli, Он работает кроссплатформенный, без мусора и поддерживает Put Back.

Вы можете установить его с помощью (требуется Node.js):

$ npm install --global trash-cli

Кроме того, если вы не хотите использовать Node.js, вы можете установить собственный двоичный файл osx-trash вручную.

Посмотрев на альтернативы, я обнаружил, что:

  • Программа rmtrash перемещает файлы в каталог корзины без использования системного API, поэтому файл.DS_Store обновляться не будет. Кроме того, не запускает звук перезапуска.
  • Скрипт python вызывает устаревший метод на горном льве, который также не запускает звук перезапуска.
  • Сценарий ruby ​​работает, но имеет значение sloooooow (как и python).

Поэтому я написал свою собственную команду мусора, реализованную на языке программирования Nimrod, поэтому она быстра и запускает звук мусорного бака в фоновом режиме. Это означает, что ввод команды и ее выполнение немедленно завершаются, так как не нужно ждать воспроизведения звука. Дело в том, что вам нужно скомпилировать nimrod, а затем эту программу (без двоичного кода, извините!).

PS: Честно говоря, лучшая реализация была бы для rmtrash с использованием официального API, который я использую от Nimrod, что является простой целью -c.

У меня была та же проблема сегодня, и я проверил также программу rmtrash, приведенную выше. К сожалению, все найденные решения перемещают файлы в.Trash домашнего каталога.

С другой стороны, Finder перемещает его в разные папки -Trash, основываясь на точке монтирования файловой системы файла.

Поэтому самое простое решение, которое я могу придумать (создано на 10.5.8. Для тестирования на более новых версиях OS X), это:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

Вот сценарий оболочки, который я создал для него:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
Другие вопросы по тегам