'Rm' nin dosyaları çöp kutusuna taşımasını nasıl sağlayabilirim?


62

Terminali günlük kullanıyorum, sıklıkla kullanacağım rm DirectoryName. Bazen biraz deli oluyorum ve yapıyorum rm *. Tahmin edebileceğiniz gibi, bu shenananlar bazen geri döndü ve yüzüme vurdu. Nasıl bir harita oluşturduğumu bilen var mı, bu yüzden rm whateverher şeyi el ile sildiğim çöp kutusuna taşıyor.


3
yapabilirsinmv /file/to/delete ~./Trash

6
Diğer jantları kırmadan, eğitim tekerleklerini rm gibi hassas bir alete koymak zordur. Bunun gibi bir şey , sizi çılgınlığınızdanalias rm=/bin/rm -i güvenle eğitmenizi sağlamalıdır . Ayrıca - hangi Çöp dizinini kullanmak istiyorsunuz? Mac OS X, her birim için bir kullanıcı dizininde bir çöp tenekesi olduğu için bir çöp dizin dizinine sahip olduğu için sıkışık oluyor.
bmike

1
Eğer zsh kullanıyorsanız, varsayılan olarak ne zaman yapacağınızı rm *rm /path/*
soracaktır

1
Bunun cevaplanması çok tehlikeli bir soru olduğunu düşünenlerin listesine beni ekleyin. Eğer benim için çalıştıysanız, ASLA bir "kabuklu" anında "biraz delirmek" ve 'rm' gibi komutlar vermek için söz verene kadar sizi tokatlamamaya çalışırdım. Ayrıca, kullandığım veya sorumluluğumda olan herhangi bir makine için sudo idari ayrıcalıklarınızın olmadığından iki kat emin olabilirim. "Rm" veya "sudo" yazmadan önce, fiziksel olarak ayağa kalktım ve yapmak üzere olduğum şeyin yanıltısını anladığımdan% 100 emin olup olmadığımı kendime soruyorum. Belki sadece bir "rm -rf" yapmalısın ve bir süre acı çekmelisin.
Wilfred Smith,

Benim yorumum acımasız görünüyorsa şimdiden özür dilerim, ama asıl soru beni korkutuyor.
Wilfred Smith,

Yanıtlar:


79

Kötü bir fikir

rmDosyaları çöp kutusuna taşımak için kullanmak ot gibidir. Yaygın ve sevindirici, ancak gelecekte sizin için kötü olabilir . ;)

Kullanırken gerçekten kendinizi kontrol etmeniz gerekir rm.


Rm kullanma

Hayal et , çöpe gitmeye alışmaya alışır ve alışkanlık edinirsiniz . Elbette, sisteminiz güvende ancak bir arkadaşınızın (veya karınızın veya patronunuzun) not defterine giriş yaptığınızda ve bir şeyleri silmek zorunda kaldığınızda? Aslında gerçekleri kullanıyor olacaksınız rm- bu dosyaları sonsuza dek silmek. Kötü bir alışkanlık ve bunu bilmen gerekiyor.

Bu nedenle, kurun rmtrashve kullanma alışkanlığı edinin:

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

Kötü alışkanlıkları düzeltme

Kendini kullanmak rmtrashyerine kullanmaya zorlamak için yapabileceğin bir diğer şey , rmiçindeki özel mesaja takma ad vermek .profile.

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

Bu yüzden ne zaman kullanırsanız rmkullanın rmtrashya da kullanmanız istenir /bin/rm. Unutmayın, bu yalnızca geçicidir, bir süre sonra takma adı kaldırmanız gerekir.


Asla, böyle bir şey yapma:

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

Pop Quiz: rmKomut hangi dizinde çalışacak? :)

Ps: Bu gönderiye yapılan bazı istenmeyen düzenlemeleri kaldırdım.


14
&&senin yaşam çizgin. ;şeytan. PS cevabı yukarıdaki örnekte, sisteminizdeki hemen hemen her şey kaybolur olmasıdır.
Jason Salaz

Yine de, rm güvenli silme yapmıyor, ancak çöp kutusuna / boşa doğru hareket ediyor (kurulumumda).
Mike Graf

1
Debian / Ubuntu kullanıcıları trash-clibunun yerine eskileri kurarlar. aptitude install trash-cli- bkz github.com/andreafrancia/trash-cli
Daniel Sokolowski

@ jm666 Ayrıca çöp kutusuna göz atın ( blog yazısı ve kaynak ). Finder'dan dosya dökümü yapmasını ister. Ayrıca, standart Objective C dosya sistemi API'lerini (daha hızlı) kullanabilir ve eğer hakların yetersiz olması durumunda Finder'a geri dönebilir. brew install trash
parth

rmtrash2003’te en son güncellenen ve çok eski olan bir programdır. Şundan çok daha az seçeneğe sahiptir rmve rmtrashikincil bir ciltte söylerseniz , bu dosyaları kullanıcının sistem sürücüsündeki çöp klasörüne taşır; bu, büyük dosyalar için uzun zaman alabilir. trashParth tarafından önerilen seçenektir birçok tutmak on Aynı hacimli problem çözme, ama yine de eksik iyidir rmseçenekleri.
Warren Young,

25

Bunu kodlamanın bir düzine yolunu düşünebiliyorum, ancak kategorik olarak cevaplardan herhangi birini yazmayı reddediyorum. Ben kuvvetle sen senin alışkanlığı frenlemek tavsiye biraz çılgına dönüyor . rmDüzgün kullanamıyorsanız hiç kullanma alışkanlığı içinde olmamalısınız.

Buradaki temel sorun, kendi sisteminize bir güvenlik ağı kursanız bile, yalnızca kötü alışkanlıklarınızı korumanıza yardımcı olacak ve bir gün aynı özel korumaya sahip olmayan başka bir makinede olduğunuzda, epeyce kötü bir şey yap.

Uygun çözüm, bir globun nasıl genişleyeceği konusunda şüpheniz olduğunda rm, -iargümanın elle eklenmesi de dahil olmak üzere kullanılmasıdır ve ciddi kullanıcı hatası durumunda geri yükleyebileceğiniz iyi sistem yedeklemelerine sahip olmaktır . Evrenin geri kalanında kullanmayan komutlara “çöp” eklemeye çalışmak, her iki dünyanın da en kötüsü olan yarı yolda bir adımdır.

Çöpü kullan ya da kullanma. Kullanmakrmçöp kutusuna gitmez, kaldırır.

Çöp kutusunu kullanmak istiyorsan, yanlış bir şey yok. Sadece rmtrashkomutu yerine kullanma alışkanlığı alın rm. Bu, beyninizin neler olduğunu anlamalarına yardımcı olacak ve sizi daha sonra kedere neden olacak kötü bir alışkanlığa sokmayacak.


1
Amacınız bu örnekte hesaplanmaz. İnsanlar işleri günlük olarak yanlışlıkla siliyorlar, sistem yedeklemeleri, bir ev bilgisayarı durumunda (ki benimki) çalışmıyor, kaynaklar sınırlı olduğundan, çöp tenekesine bir hamle, bu silme işlemlerini benim için kullanmanın çok daha etkili bir yoludur. dava kullan.
steve

5
@ steve noktayı tamamen kaçırdın. rmtanımı gereği diskten bir dosyayı kaldırır. Çöp kutusuna göndermez. Çöp kutusuna göndermeyirm kastettiğinizde kullanmayı öğretmek felakete yol açar . Çöpe göndermek, kullanmak rmtrashveya iş için tasarlanmış bir program göndermek istiyorsanız , daha sonra kabuslarla karşılaşmazsınız. Çöpü kullanmanın doğal olarak yanlış olduğunu söylemedim, ama kullanmak istiyorsanız, kullanma amacı olmayan bir şeye bağlamayın!
Caleb,

2
brew install rmtrashve kullanmayı bırakınrm
GabLeRoux

Bu harika bir cevap, benim için birkaç şeyi temizledim. Bunun rmtrashyerine kullanma alışkanlığı oluşturmaya çalışacağım rm.
Sheharyar

sudo eklenti apt-repository ppa: nateshmbhat / rm-trash. Ardından "rm-çöp" install
Natesh bhat

3

Kendinizi korkunç sonuçlardan korumanın yolları var rm. Ancak, buradaki diğer yorumcularla aynı fikirdeyim: çok az kişi iyi.

Bir dakika boyunca komut ortamını değiştirmenin size yardımcı olacağına inanmayın. Örneğin, her yerde çevrimiçi olarak bu tür şeyler yapmayı öneren kişileri bulacaksınız:

alias rm="rm -i"

veya

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

Bu işe yaramayacak. Dönemi. Bu küçük salon numaralarının sizi perişan edemediği birçok kullanım durumu var.

Kendimi tehlikeden korumak için kullandığım en sağlam yol rm, çalıştığım dizinler üzerinden cron üzerinden düzenli bir yedekleme işlemi oluşturmaktır. Raw UNIX, belirli bir süre içinde veya o zamandan beri güncellenen dosyaları kontrol etmek için findbirlikte kullanarak , çok basit bir şekilde, sizin için güzel bir şekilde yapar -mtime.


cronYalnız için +1 . Thanks :)
bmike

2

Rmtrash gibi bir komut satırı aracı kullanın ya da bir tat olanı silmek için Finder'ı çağırmak için appscript'i kullanır.

/ Usr / local / bin / rmtrash komutuna rmtras kurduktan sonra, bash için bir takma ad olan creat

alias rm='rmtrash'

Doğrudan rm'yi çağırmak ve diğer adı yok saymak için \ rm kullanabilirsiniz.


14
Eğer böyle bir araç kullanıyorsanız rmtrash, lütfen kendinize bir iyilik yapın ve kendi ismiyle kullanın . Olmayan asla takma şeyler rmiçin rm, bazı gün seni ısıracak.
Caleb,

1
rmtrashuyumlu değil rm(aynı komut satırı parametrelerini desteklemiyor -r) bu nedenle bir diğer ad her durumda gerçekten işe yaramaz
Perry

Takma ad rmtrashvermek kötü bir fikir rm. Sadece uyumlu değiller, aynı zamanda kötü alışkanlığı zorlarlar ve yanlışlıkla rmsadece kullandığınızı düşünerek başka bir sistemde kullanırsınız rmtrash.
Fayaz

1

Sadece bunu yapmayanlar için yararlı bir alışkanlık eklemek istiyorum. Rm'yi herhangi bir şey için kullanmadan önce üzerinde 'yap'. Bu şekilde silmek istediğiniz tüm dosyaları görebilirsiniz. Sonra yeniden yazmak yerine, önceki 'ls' komutunu yukarı çekin ve rs için ls'yi değiştirin. Bu alışkanlık, rm'yi çağırırken çok fazla endişe yarattı.


-1

Giriş (bunu atlayabilirsiniz)

Benim rm -iiçin yeterli olurdu, çünkü herhangi bir dosyayı silmeden önce sizi yönlendirir. Ancak, sağladığı bazı ekstra güvenlik safe-rmhiç de kötü bir fikir değildir.

Basit bir aliasbenzer yeterli rm=safe-rm -i olabilir , ancak rm -rfişe -iyaramazdı çünkü geçersiz kılındı -f.

Bu yüzden, -idaima sonra geleceğinden emin olmalıyız -f!


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

  • Safe-rm'i kurun: brew install safe-rm

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

  • Senin düzenleyin ~/.profile(bash_profile ya da her neyse ya) ve aşağıdaki kod parçacığını, koyun (bir içerirler 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 login, .profile güncellemelerin uygulanır böylece. YAPMAYIN bir çıkış / giriş önce kullanın!


Notlar:

  • Hafif değişikliklerle herhangi bir Linux dağıtımına uygulanabilir.
  • Çalışanlarınızı hurdaya taşımıyor. Sadece her dosyayı silmeden önce size sorar!
  • -rfRegexlerle ve regexlerle çalışır .
  • Gerçekten her bir dosya / klasör sorulmaksızın rm -rf İSTENMEYEN kullanmak istiyorsanız hala kullanabilirsiniz /bin/rm -rf(ya da safe-rm -rfkurmuşsanız).
  • Artık istemeden rm -rf veya rm * ;)

5
Rm'yi kendisinden daha büyük olan herhangi birşeye hizalamak (örneğin alias rm='sudo rm') bir Uzi'yi bir mutfak bıçağına bağlamak gibi bir şey : bir gün o ananası kesmek için pazarlık yaptığınızdan daha fazlasını alacaksınız. Rm'yi kendisinden daha küçük olan herhangi birşeye hizalamak alias rm='rmtrash'gibi (örneğin ) çocuklarınızın silahsız el bombalarıyla oynamasına izin vermek ve onlara gerçekte ne olduklarını öğretmemek gibidir: bir gün gerçek bir taneyle karşılaştıklarında uygun bir dikkatle davranmayacaklardır. Her iki şekilde de - takma rm kişisel güvenliğiniz ve halk sağlığınız için kötü!
Caleb

2
Safe-rm gibi bir şey kullanmak makul bir tavsiyedir. Rm'ye diğer adı vermek değildir. Kendi adı veya benzersiz bir takma adla kullanın, böylece her zaman orada olmayacak bir güvenlik ağı verilmez.
Caleb

Senin değinmek istediğin noktayı anlıyorum. AMA, bunu yapmamın nedeni, birçok terminalle çalışmam ... bazı uzak terminaller ve bazı yerliler. Uzak terminallere çok el bombası atmak istiyorum , ancak yerel terminaldeki güvenlik mührünü yanlışlıkla çektiğimde patlama meydana gelmeden önce bir uyarı görmek istiyorum .
Paschalis

@Paschalis ve bir komut dosyası veya kurulu bir programın kullanılması gerekiyorsa ne olur rm? Ayrıca, Caleb'in noktası daha da geçerlidir - güvenli rm takma adı olan bir sisteme alışırsanız, dikkatsizleşebilir ve nihayetinde unaliased rm olan bir sistemde kullanabilirsiniz.
Manishearth
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.