Terminalden Snow Leopard'da Çöp Kutusuna taşı


13

Snow Leopard, kullanıcıların Finder'dan Çöp Kutusuna taşınan dosyaları "Geri Koymasına" olanak tanır. Ancak, mv <file> ~/.Trashkomut satırından yaptığımda "Geri koy" seçeneğini alamadım.

Snow Leopard'da dosyayı bize geri gönderebilmemize izin veren bir dosyayı çöp kutusuna taşıyan yerel bir komut var mı?

Yanıtlar:


2

Bir dosyayı çöp kutusuna taşıdığınızda OS X .DS_Storeiçindeki dosyayı ~/.Trash"Geri koy" bilgileriyle günceller. (Daha fazla ayrıntı için bu soruya bakın )

Bunu güncellemek için, .DS_Storedosyayı Terminal'deki Çöp Kutusuna taşıdığınızda da dosyayı güncellemeniz gerekir .


Teşekkürler. Umduğum gibi değil, ama gerçek bu.
matpie

9

Ruby gem osx-trash'i kurmanızı tavsiye ederim .

Nasıl?

sudo gem install osx-trash

Kullanımı?

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
Güzel! Rağmen, Finder ile iletişim kurarken, joker karakterle dosyaları çöpe atmak her dosya için çöp sesini çalar.
Jari Keinänen

1
Bunun hala işe yaradığını sanmıyorum. Dokümanlardan: osx-trash, Mac OS X 10.5, Leopard gerektirir. Denedim ve tüm aldığımbash: trash: command not found
yourfriendzak

OS X 10.9 üzerinde çalışmıyor Burada nasıl düzeltileceği hakkında yeni bir soru sordu superuser.com/questions/694433/…
simbo1905 29:13

2

MacOSX SDK'da işlevler FSPathMoveObjectToTrashSyncve ilgili olanları vardır . Etrafına bir Python (ya da her neyse) komut dosyası yazmak kolay olmalıdır.

Düzenleme : Sadece kodladı. Burada bulunabilir: rm-trash.py .


FYI - FSPathMoveObjectToTrashSync 10.8'de kullanımdan kaldırıldı ve dokümana göre trashItemAtURL :°ItemURL: error: yerine kullanmanız gerekecek.
Lester Cheung

2

Rmtrash programını istiyorsunuz .

Çöp Kutusuna bulucuda yapıldığı gibi öğe eklemek için kullanabilirsiniz.

Düzenleme: Sadece silmek ve kurtarmak için rmtrash kullanarak denedim. Tam olarak bulucudan silmek gibi çalışır. Çöp Kutusunda görünen dosyalar sürüklenebilir ve tamamen aynı şekilde boşaltılabilir. '06'dan beri kullanıyor.


Rmtrash kodundan, sadece eşdeğer gibi görünüyor mv file ~/.Trash/. Dosyaları bu araçtan kurtarabileceğinizden emin misiniz?
Albert

0

Alternatiflere baktıktan sonra şunu öğrendim:

  • Rmtrash programı, dosyaları sistem API'sini kullanmadan çöp dizinine taşır, böylece .DS_Store dosyası güncellenmez . Ayrıca, geri dönüşüm sesini tetiklemez.
  • Python betiği, dağ aslanı üzerinde geri dönüşüm sesini tetiklemeyen kullanımdan kaldırılmış bir yöntemi çağırır.
  • Ruby script çalışır, ancak sloooooow (python gibi).

Bu yüzden Nimrod programlama dilinde uygulanan kendi çöp komutumu yazdım , bu yüzden hızlı ve bir arka plan işleminde çöp tenekesi sesini tetikliyor. Bu, komutun yazılması ve çalıştırılmasının sesin çalmasını beklemesine gerek olmadığı için hemen çıkacağı anlamına gelir. Con nimrod ve sonra bu programı derlemek gerekir (hiçbir ikili üzgünüm!).

Not: Dürüst olmak gerekirse, en iyi uygulama düz obj -c olan Nimrod'dan kullandığım resmi API'yi kullanarak rmtrash uygulaması olacaktır .


0

Kontrol edin trash-cli. Platformlar arası çalışır, çöp sesi duymaz ve Put Back'i destekler.

İle yükleyebilirsiniz ( Node.js gerektirir ) :

$ npm install --global trash-cli

Alternatif olarak, Node.js'yi kullanmak istemiyorsanız, yerel ikili dosyayı osx-trashel ile yükleyebilirsiniz .


-1

Bugün aynı sorunu yaşadım ve yukarıda verilen rmtrash programını da kontrol ettim. Ne yazık ki şimdiye kadar görülen tüm çözümler dosyaları ev yöneticisinin .Trash'e taşıyor.

Diğer taraftan Finder, dosyayı dosya sisteminin bağlama noktasına bağlı olarak farklı -Trash klasörlerine taşır.

Bu yüzden (10.5.8'de oluşturuldu. OS X'in yeni sürümlerinde test edilecek) bulabileceğim en kolay çözüm şudur:

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

İşte bunun için oluşturdum kabuk komut dosyası:

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.