Anda harus memahami bahwa bashitu hanya lingkungan eksekusi. Itu mengeksekusi perintah yang Anda panggil - itu bukan urusan shell untuk bahkan tahu apa perintahnya, Anda dapat memanggil setiap executable yang Anda inginkan. Dalam kebanyakan kasus, bahkan tidak jelas apa yang akan dilakukan undo - misalnya, dapatkah Anda "membatalkan pemutaran" film? Bisakah Anda "tidak mengirim" email? Apa artinya "membatalkan menjalankan firefox", misalnya? Anda mungkin menutupnya, tetapi bookmark, unduhan, dan riwayat tidak akan sama.
Jika Anda menjalankan perintah, itu dieksekusi, apa pun fungsinya. Terserah Anda untuk mengetahui apa yang Anda lakukan. Perhatikan bahwa ini tidak berarti perintah individual tidak memiliki "undo" ... bisa - Anda bahkan dapat menulis fungsi pembungkus yang melakukan sesuatu untuk melindungi Anda dari kesalahan bodoh.
Misalnya, mvmudah dibalik dengan hanya memindahkan file ke tempat asalnya, kecuali Anda telah menimpa sesuatu. Itu sebabnya -iberalih ada, untuk meminta Anda sebelum menimpa. Secara teknis, kebalikannya cpadalah rm, kecuali ada sesuatu yang ditimpa (sekali lagi, -ibertanya tentang hal itu). rmlebih permanen, untuk mencoba mendapatkan file kembali, Anda harus benar-benar melakukan peretasan tingkat rendah (ada alat untuk itu). Jika Anda menganggap sistem file sebagai kotak hitam, secara teknis tidak akan mungkin sama sekali (hanya detail tata letak data logis dan fisik yang memungkinkan Anda melakukan beberapa kontrol kerusakan). rmberarti rm, jika Anda ingin fungsionalitas "sampah", itu sebenarnya adilmvke beberapa direktori yang telah diatur sebelumnya (dan mungkin layanan terjadwal untuk mempertahankan atau mengosongkannya) - tidak ada yang istimewa tentang itu. Tetapi Anda dapat menggunakan -iuntuk meminta Anda sebelum penghapusan. Anda dapat menggunakan fungsi atau alias untuk selalu disertakan -idalam perintah ini.
Perhatikan bahwa sebagian besar aplikasi melindungi Anda dari kehilangan data dengan berbagai cara. Kebanyakan (~ semua) editor teks membuat file cadangan ~di akhir jika Anda ingin mengembalikan versi yang lama. Pada beberapa distro, lsalias secara default sehingga menyembunyikannya ( -B), tetapi ada di sana. Banyak perlindungan diberikan dengan mengelola izin dengan benar: jangan menjadi root kecuali Anda perlu, buat file hanya-baca jika Anda tidak ingin mereka berubah. Terkadang berguna untuk memiliki lingkungan "kotak pasir" - Anda menjalankan berbagai hal pada salinan, melihat apakah itu baik-baik saja, dan kemudian menggabungkan perubahan (atau mengabaikan perubahan). chrootatau lxcdapat mencegah skrip Anda untuk melarikan diri dari direktori dan merusak.
Ketika Anda mencoba untuk mengeksekusi hal-hal dalam jumlah besar - misalnya, jika Anda memiliki perintah find yang kompleks, sementara loop, pipeline panjang, atau hal-hal seperti itu, adalah ide yang baik untuk terlebih dahulu hanya echoperintah yang akan dieksekusi. Kemudian, jika perintah terlihat masuk akal, hapus echodan jalankan itu nyata. Dan tentu saja, jika Anda benar-benar tidak yakin dengan apa yang Anda lakukan, buat salinannya terlebih dahulu. Saya terkadang hanya membuat tarball dari direktori saat ini.
Berbicara tentang tarballs - tarbombs dan zipbombs cukup umum sayangnya (ketika orang membuat arsip tanpa subdirektori yang tepat, dan membongkar mencerai-beraikan file di sekitar, membuat kekacauan besar). Saya terbiasa membuat subdirektori sendiri sebelum membongkar (saya bisa daftar isinya, tapi saya malas). Saya sedang berpikir untuk membuat skrip yang akan membuat subdirektori hanya jika konten diarsipkan tanpa subdirektori. Tetapi ketika hal itu terjadi, ls -lrtmembantu untuk menemukan file terbaru untuk meletakkannya di tempat. Saya baru saja memberikan ini sebagai contoh - sebuah program dapat memiliki banyak efek samping yang shell tidak memiliki cara untuk mengetahui tentang (Bagaimana mungkin? Ini adalah program yang berbeda dipanggil!) Satu-satunya cara pasti untuk menghindari kesalahan adalah dengan berhati-hati (pikirkan dua kali, jalankan sekali).
Mungkin perintah yang paling berbahaya adalah yang berhubungan dengan sistem file: mkfs, fdisk / gdisk dan sebagainya. Mereka benar-benar dapat menghancurkan sistem file (walaupun dengan perangkat lunak forensik yang tepat, setidaknya rekayasa balik sebagian mungkin dilakukan). Selalu periksa ulang perangkat yang Anda format dan partisi sudah benar, sebelum menjalankan perintah.