Przenieś plik do Kosza na Snow Leopard z Terminala

13

Snow Leopard pozwala użytkownikom „odłożyć” pliki, które zostały przeniesione do Kosza z Findera. Jednak gdy robię to mv <file> ~/.Trashz wiersza poleceń, nie dostaję opcji „Odłóż”.

Czy w systemie Snow Leopard istnieje natywne polecenie, które przenosi plik do kosza, jednocześnie umożliwiając nam „odłożenie”?

matpie
źródło

Odpowiedzi:

2

Kiedy przenosisz plik do kosza OS X aktualizuje .DS_Storeplik wewnątrz informacją ~/.Trash„Odłóż”. (Zobacz to pytanie, aby uzyskać więcej informacji )

Aby to zaktualizować, musisz także zaktualizować .DS_Storeplik po przeniesieniu pliku do Kosza w terminalu.

Josh K.
źródło
Dzięki. Nie na to liczyłem, ale to prawda.
matpie
9

Polecam instalację Ruby gem osx-trash .

W jaki sposób?

sudo gem install osx-trash

Stosowanie?

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
źródło
2
Ładny! Chociaż podczas komunikacji z Finderem koszenie plików ze znakiem wieloznacznym odtwarza dźwięk koszenia dla każdego pliku.
Jari Keinänen,
1
Nie sądzę, że to nadal działa. Z dokumentacji: osx-trash wymaga Mac OS X 10.5, Leopard. Próbowałem i wszystko, co dostaję, tobash: trash: command not found
yourfriendzak
Nie działa w systemie OS X 10.9, zadał nowe pytanie, jak to naprawić tutaj superuser.com/questions/694433/…
simbo1905
2

W MacOSX SDK są funkcje FSPathMoveObjectToTrashSynci powiązane. Napisanie wokół niego skryptu w języku Python (lub cokolwiek innego) powinno być łatwe.

Edycja : Właśnie zakodowałem. Można znaleźć tutaj: rm-trash.py .

Albert
źródło
FYI - FSPathMoveObjectToTrashSync jest przestarzałe w wersji 10.8 i zgodnie z dokumentem będziesz musiał użyć trashItemAtURL: resultItemURL: error: zamiast.
Lester Cheung,
2

Chcesz program rmtrash .

Możesz go używać do dodawania elementów do Kosza, tak jakby to zrobiono w wyszukiwarce.

Edycja: Właśnie próbowałem użyć rmtrash do usunięcia i odzyskania. Działa dokładnie tak, jak usuwanie z wyszukiwarki. Pliki wyświetlane w Koszu, można przeciągnąć i opróżnić dokładnie tak samo. Używam go od około '06.

sal
źródło
Z kodu rmtrash wygląda na to, że jest to po prostu odpowiednik mv file ~/.Trash/. Czy na pewno możesz odzyskać pliki z tego narzędzia?
Albert
0

Po przeanalizowaniu alternatyw odkryłem, że:

  • Program rmtrash przenosi pliki do katalogu kosza bez użycia systemowego interfejsu API, więc plik .DS_Store nie zostanie zaktualizowany . Ponadto nie wyzwala dźwięku recyklingu.
  • Skrypt Pythona wywołuje przestarzałą metodę na lwie górskim, która również nie wyzwala dźwięku kosza.
  • Skrypt ruby ​​działa, ale jest bardzo luźny (podobnie jak skrypt python).

Napisałem więc własne polecenie kosza zaimplementowane w języku programowania Nimrod, więc jest szybkie i wyzwala dźwięk kosza w tle. Oznacza to, że wpisanie polecenia i uruchomienie go kończy się natychmiast, ponieważ nie trzeba czekać na odtwarzanie dźwięku. Wadą jest to, że musisz skompilować nimrod, a następnie ten program (bez binarnego przepraszam!).

PS: Szczerze mówiąc, najlepszą implementacją byłaby rmtrash przy użyciu oficjalnego API, którego używam z Nimrod, co jest zwykłym celem-c .

Grzegorz Adam Hankiewicz
źródło
0

Sprawdź trash-cli. Działa na wielu platformach, nie ma dźwięku śmieci i obsługuje funkcję Put Back.

Możesz go zainstalować za pomocą (wymaga Node.js ) :

$ npm install --global trash-cli

Alternatywnie, jeśli nie chcesz używać Node.js, możesz osx-trashręcznie zainstalować natywny plik binarny .

Sindre Sorhus
źródło
-1

Miałem dzisiaj ten sam problem i sprawdziłem również program rmtrash podany powyżej. Niestety wszystkie dotychczas zaobserwowane rozwiązania przenoszą pliki do katalogu .Trash katalogu domowego.

Finder z drugiej strony przenosi go do różnych folderów -Trash, w oparciu o punkt montowania systemu plików pliku.

Tak więc najprostszym rozwiązaniem, jakie mogę wymyślić (stworzonym w 10.5.8. Do przetestowania na nowszych wersjach OS X) jest:

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

Oto skrypt powłoki, który dla niego stworzyłem:

#!/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
źródło