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


13

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

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

Ответы:


2

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

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


Благодарю. Не то, на что я надеялся, но это правда.
Matpie

9

Я рекомендую установить 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.

2
Ницца! Тем не менее, поскольку он связывается с Finder, при удалении файлов с подстановочными знаками воспроизводится звук уничтожения для каждого файла.
Яри ​​Кейнянен

1
Я не думаю, что это все еще работает. Из документации: для osx-trash требуется Mac OS X 10.5, Leopard. Я попробовал это, и все, что я получаю,bash: trash: command not found
yourfriendzak

Не работает на OS X 10.9 задал свежий вопрос о том, как это исправить здесь superuser.com/questions/694433/…
simbo1905

2

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

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


FYI - FSPathMoveObjectToTrashSync устарела в 10.8, и в соответствии с документом вам нужно будет использовать trashItemAtURL: resultItemURL: error: вместо этого.
Лестер Чунг

2

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

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

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


Из кода rmtrash это выглядит как эквивалент mv file ~/.Trash/. Вы уверены, что можете восстановить файлы с помощью этого инструмента?
Альберт

0

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

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

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

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


0

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

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

$ npm install --global trash-cli

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


-1

У меня была та же проблема сегодня, и я проверил также программу 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.