Bunun bashsadece bir yürütme ortamı olduğunu anlamalısınız . Aradığınız komutları yürütür - komutun ne yaptığını bile bilmek kabuğun işi değildir, istediğiniz herhangi bir yürütülebilir dosyayı arayabilirsiniz. Çoğu durumda, bir geri almanın ne yapacağını bile net değildir - örneğin, bir filmi "oynatabilirsiniz" mı? Bir e-postayı "gönderemez" misiniz? Örneğin, "firefox'u çalıştırmayı geri al" ne anlama gelir? Kapatabilirsiniz, ancak yer işaretleri, indirmeler ve geçmiş aynı olmaz.
Bir komutu çalıştırırsanız, ne yaparsa yapın yürütülür. Ne yaptığınızı bilmek size kalmış. Bunun tek tek komutların "geri al" olmadığı anlamına gelmediğini unutmayın ... yapabilirler - sizi aptalca hatalardan korumak için bir şeyler yapan bir sarmalayıcı işlevi bile yazabilirsiniz.
Örneğin, bir mvşeyin üzerine yazmadıkça dosyayı sadece geldiği yere geri taşıyarak kolayca geri döndürülebilir. Bu yüzden -iüzerine yazmadan önce sormak için geçiş var. Teknik olarak, ters ait cpolan rmbir şey üzerine yazıldığı sürece, (yine -ibu konuda size sorar). rmdaha kalıcı, dosyaları geri almaya çalışmak için, aslında biraz daha düşük seviye hack yapmak zorundasınız (bunun için araçlar var). Dosya sistemini bir kara kutu olarak değerlendirdiyseniz, teknik olarak mümkün olmazdı (sadece mantıksal ve fiziksel veri düzeninin ayrıntıları bazı hasar kontrolleri yapmanıza izin verir). rmaraçlar rmsize "çöp" işlevselliği istiyorsanız, bu sadece aslındamvbazı önceden düzenlenmiş bir dizine (ve muhtemelen korumak veya boşaltmak için zamanlanmış bir hizmet) - bu konuda özel bir şey yok. Ancak -isilmeden önce sizi uyarmak için kullanabilirsiniz . -iBu komutlara her zaman dahil etmek için bir işlev veya takma ad kullanabilirsiniz .
Çoğu uygulamanın sizi farklı şekillerde veri kaybından koruduğunu unutmayın. Çoğu (~ tümü) metin düzenleyici ~, eski sürümü geri getirmek istediğinizde sonunda yedek dosyalar oluşturur . Bazı dağıtımlarda, lsvarsayılan -Bolarak diğer adları gizlenir, böylece onları gizler ( ), ancak oradalar. İzinleri düzgün bir şekilde yöneterek çok fazla koruma sağlanır: gerekmedikçe root olmayın, değiştirilmesini istemiyorsanız dosyaları salt okunur yapın. Bazen bir "korumalı alan" ortamına sahip olmak yararlı olabilir - bir kopya üzerinde bir şeyler çalıştırırsınız, sorun olup olmadığını görürsünüz ve sonra değişiklikleri birleştirirsiniz (veya değişiklikleri terk edersiniz). chrootveya lxcbetiklerinizin bir dizinden kaçmasını ve zarar vermesini önleyebilir.
Bir şeyleri toplu olarak yürütmeye çalıştığınızda - örneğin, karmaşık bir find komutunuz varsa, while döngüsü, uzun bir boru hattı veya bunun gibi bir şey varsa, önce sadece echoçalıştırılacak komutları kullanmak iyi bir fikirdir . Ardından, komutlar makul görünüyorsa, kaldırın echove gerçekte çalıştırın. Ve elbette, ne yaptığınızdan gerçekten emin değilseniz, önce bir kopya alın. Bazen geçerli dizinin bir tarball'ını oluşturuyorum.
Tarballlardan bahsetmek - tarbombs ve zipbombs maalesef oldukça yaygındır (insanlar uygun bir alt dizin olmadan bir arşiv oluşturduğunda ve paketin açılması dosyaları etrafa saçar, büyük bir karmaşaya neden olur). Sadece (ben açmadan önce bir alt dizin kendim yapmaya alıştım olabilir içeriğini listelemek ama tembelim). Sadece içeriği bir alt dizin olmadan arşivlendiğinde bir alt dizin oluşturacak bir komut dosyası yapmayı düşünüyorum. Ancak gerçekleştiğinde, ls -lrtait oldukları yere koymak için en son dosyaları bulmaya yardımcı olur. Bunu sadece bir örnek olarak verdim - bir programın kabuğun bilmediği birçok yan etkisi olabilir (Nasıl denebilir? Bu farklı bir program olarak adlandırılır!) Hatalardan kaçınmanın tek kesin yolu dikkatli olmaktır (düşünmek iki kez, bir kez çalıştırın).
Muhtemelen en tehlikeli komutlar dosya sistemi ile ilgilenenlerdir: mkfs, fdisk / gdisk ve benzeri. Dosya sistemini tamamen yok edebilirler (uygun adli yazılıma rağmen, en azından kısmi tersine mühendislik mümkündür). Komutu çalıştırmadan önce biçimlendirdiğiniz cihazı ve bölümlendirmenin doğru olup olmadığını her zaman iki kez kontrol edin.