OS X `rm` için güvenli alternatif?


9

Daha rmgüvenli bir şey takma yapmaya alışkınım .

Ben kullanıyorum osx-trash, ama Ruby 1.9.2 yükseltme işleminden sonra, bu çalışma durur.

trash-cliPython hakkında biliyorum , ama çok başka bir dizin yerine OS X'te Çöp Kutusu klasörüne dosyaları taşıyan bir şey tercih ediyorum.

Herkes iyi bir çözüm var mı?


9
Lütfen, takma adı kullanmaya alışmayın rm, alışmaya alışın mv files/to/be/deleted ~/.Trash. Sistemler arasında güvenli ve tutarlıdır.
Asmus

Asmus: Sadece mac'unuzda sadece 1 bölüm varsa işe yaradığını görürsünüz. Başka bir bölümünüz varsa, ~ / .Trash öğesine geçmek gerçekten doğru değil (bölümüm yeterince büyük değil).
disappearedng

1
Sorunuzda birden fazla bölümünüz olduğunu söylemeliydiniz!
slhck

1
disappearedng: iyi, bence mvhala en güvenli bahis. Diğer bölümünüzde Trash(veya istediğiniz gibi) yeni bir klasör ve ardından mvoradaki dosyaları kolayca oluşturabilirsiniz . Silinebileceğinden emin olduktan sonra, bu klasörü silin ve yeniden oluşturun.
Asmus

ve sonra ~ / .Trash, yeterli boşluğa sahip olan bölümdeki Çöp Kutusu klasörüne yumuşak bir bağlantı olabilir
AlcubierreDrive

Yanıtlar:


8

OSX için şunları kullanabilirsiniz: safe-rm

brew install safe-rm

Varsayılana göre tercih etmek için fazladan bir adım atmanız gerekir rm- bir sembolik bağlantı ekleyin.

echo $PATH

Benim için, /usr/local/bin:önce, safe-rmkurulumla aynı direk var

Simgesine simge bağlantısı ekle safe-rm

ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

Varsayılanı kaldırmak ve geri yüklemek rmiçin sembolik bağlantısı kaldırabilirsinizrm /usr/local/bin/rm

Yapılandırma dosyası şuradan eklenebilir: /etc/safe-rm.conf

Örneğin:

/private
/Applications
/Developer
/Library
/Network
/System
/Users
/Volumes
/test

Onunla sınama rm -rf /test,safe-rm.conf


/klasik rm -fr'yi önlemek için silinmemesi gereken yollar listesine de eklemek iyi olabilir /
Mikael Lepistö

3

hasseg.org/trash osx-trash gibi Objective-C yardımcı programıdır .

Ben gibi dosyaların üzerine yazmayan bir kabuk fonksiyonu yazdım mv * ~/.Trash. Yine de her zaman öğeleri başlangıç ​​hacmine taşır.

trash() {
    for f in "$@"; do
        bn=$(basename "$f")
        while [ -e ~/.Trash/"$bn" ]; do
            bn="$bn $(date +%H.%M.%S %p)"
        done
        mv "$f" ~/.Trash/"$bn"
    done
}

Evet 1'den fazla bölüm var ve silinen dosyaları onları taşımak yerine aynı bölümde tutmak istiyorum
disappearedng

Diğer iki yardımcı programa ve başka bir işleve bağlantılar ekledim. Her biri dosyaları aynı bölümde tutmalıdır.
Lri

2

Giriş (atlayabilirsiniz)

Benim rm -iiçin yeterli olurdu, çünkü herhangi bir dosyayı silmeden önce sizi uyarır. Ancak, bazı ekstra güvenlik safe-rmkötü bir fikir değildir.

Basit bir aliasşey yeterli rm=safe-rm -i olabilir , ancak rm -rfişe yaramaz, çünkü -igeçersiz kılınmıştır -f.

Yani, bunun -iher zaman peşinden gittiğinden emin olmalıyız -f!


Benim çözümüm (3 adım):

  • Safe-rm yükleyin: brew install safe-rm

    Hala üzerinde çalışabilirsiniz rm, ancak RM_BINsonraki adımda

  • Düzenleme senin ~/.profile(veya bash_profile ya da her türlü) ve (bir içerirler Aşağıdaki kod parçacığını, koyun aliasve function):

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • Son olarak , logoutve loginböylece .profile güncelleştirmeleri uygulanır. Oturumu kapatmadan / oturum açmadan önce KULLANMAYIN !


Notlar:

  • Küçük değişikliklerle herhangi bir Linux dağıtımına uygulanabilir.
  • Personelinizi thrash'e taşımaz. Sadece her dosyayı silmeden önce sorar!
  • Normal -rfifadelerle ve normal ifadelerle çalışır .
  • Eğer hala kullanabileceğiniz her bir dosya / klasör için rm -rf OLMADAN gerçekten kullanmak istiyorsanız /bin/rm -rf(veya safe-rm -rfyüklediyseniz).
  • Artık istemeden rm -rf veya rm * ;)
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.