Verschieben Sie die Datei vom Terminal in den Papierkorb von Snow Leopard

13

Mit Snow Leopard können Benutzer Dateien, die aus dem Finder in den Papierkorb verschoben wurden, zurücksetzen. Wenn ich dies jedoch mv <file> ~/.Trashüber die Befehlszeile tue, wird die Option "Zurücksetzen" nicht angezeigt.

Gibt es in Snow Leopard einen nativen Befehl, der eine Datei in den Papierkorb verschiebt, während ich trotzdem in der Lage bin, sie wieder in den Papierkorb zu verschieben?

Matpie
quelle

Antworten:

2

Wenn Sie eine Datei in den Papierkorb verschieben, aktualisiert OS X die darin enthaltene .DS_StoreDatei ~/.Trashmit den Informationen zum Zurücksetzen. (Siehe diese Frage für weitere Details )

Um dies zu aktualisieren, müssten Sie auch die .DS_StoreDatei aktualisieren , wenn Sie eine Datei in den Papierkorb im Terminal verschieben.

Josh K
quelle
Vielen Dank. Nicht das, was ich mir erhofft hatte, aber es ist die Wahrheit.
Matpie
9

Ich empfehle die Installation des Ruby Gems osx-trash .

Wie?

sudo gem install osx-trash

Verwendung?

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.
Hobodave
quelle
2
Nett! Bei der Kommunikation mit Finder wird jedoch beim Löschen von Dateien mit einem Platzhalter der Papierkorb für jede Datei abgespielt.
Jari Keinänen
1
Ich glaube nicht, dass das noch funktioniert. In den Dokumenten: osx-trash erfordert Mac OS X 10.5, Leopard. Ich habe es versucht und alles, was ich bekomme, istbash: trash: command not found
dein Freundzak
Funktioniert nicht auf OS X 10.9 fragte eine neue Frage , wie es zu beheben hier superuser.com/questions/694433/...
simbo1905
2

Im MacOSX SDK gibt es die Funktionen FSPathMoveObjectToTrashSyncund verwandten. Es sollte einfach sein, ein Python-Skript (oder was auch immer) darum zu schreiben.

Edit : Hab es einfach codiert. Hier zu finden: rm-trash.py .

Albert
quelle
FYI - FSPathMoveObjectToTrashSync ist in 10.8 veraltet und gemäß dem Dokument müssen Sie stattdessen trashItemAtURL: resultsItemURL: error: verwenden.
Lester Cheung
2

Sie möchten das Programm rmtrash .

Sie können es verwenden, um Objekte in den Papierkorb zu verschieben, als wäre dies im Finder geschehen.

Bearbeiten: Ich habe gerade versucht, mit rmtrash zu löschen und wiederherzustellen. Dies funktioniert genauso wie das Löschen aus dem Finder. Dateien werden im Papierkorb angezeigt und können genauso herausgezogen und geleert werden. Benutzt es seit '06 oder so.

sal
quelle
Aus dem Code von rmtrash sieht es so aus, als ob es nur äquivalent zu ist mv file ~/.Trash/. Sind Sie sicher, dass Sie die Dateien mit diesem Tool wiederherstellen können?
Albert
0

Nachdem ich mir die Alternativen angesehen hatte, stellte ich fest, dass:

  • Das Programm rmtrash verschiebt Dateien in das Papierkorbverzeichnis, ohne die System-API zu verwenden, sodass die Datei .DS_Store nicht aktualisiert wird . Löst auch nicht den Recycle-Sound aus.
  • Das Python-Skript ruft eine veraltete Methode für den Berglöwen auf, die auch den Recycling-Sound nicht auslöst.
  • Das Ruby-Skript funktioniert, ist aber langsam (wie das Python-Skript).

Also habe ich meinen eigenen Papierkorbbefehl geschrieben , der in der Programmiersprache Nimrod implementiert ist. Er ist also schnell und löst den Ton des Papierkorbs im Hintergrund aus. Das bedeutet, dass das Eingeben und Ausführen des Befehls sofort beendet wird, da nicht gewartet werden muss, bis der Sound abgespielt wird. Der Nachteil ist, dass Sie nimrod und dann dieses Programm kompilieren müssen (keine Binärdatei, sorry!).

PS: Um die beste Umsetzung wäre, dass von rmtrash mit der offiziellen API von Nimrod, verwende ich ehrlich zu sein , die Ebene Objective-C ist .

Grzegorz Adam Hankiewicz
quelle
0

Auschecken trash-cli. Es funktioniert plattformübergreifend, ohne Trash-Sound und unterstützt Put Back.

Sie können es mit (erfordert Node.js ) installieren :

$ npm install --global trash-cli

Wenn Sie Node.js nicht verwenden möchten, können Sie die native Binärdatei auch osx-trashmanuell installieren .

Sindre Sorhus
quelle
-1

Ich hatte heute das gleiche Problem und überprüfte auch das oben angegebene rmtrash-Programm. Leider verschieben alle bisher gesehenen Lösungen Dateien in den .Trash des Home-Verzeichnisses.

Der Finder hingegen verschiebt es in verschiedene -Trash-Ordner, basierend auf dem Mount-Punkt des Dateisystems der Datei.

Die einfachste Lösung, die ich finden kann (erstellt am 10.5.8. Um sie auf neueren Versionen von OS X zu testen), ist folgende:

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

Hier ist das Shell-Skript, das ich dafür erstellt habe:

#!/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
Skeeve
quelle