Pertanyaan Bagaimana saya bisa menulis skrip kecil untuk membersihkan setiap file direktori saat komputer dijalankan?


Saya memiliki komputer tamu hanya untuk penggunaan internet. Beberapa pengguna mengunduh beberapa file dan meninggalkannya di desktop tetapi komputer tidak memiliki cukup ruang untuk semua tamu dan tidak diperbolehkan menaruh file di sana.

Yang ingin saya lakukan adalah membersihkan setiap file di dalam direktori home ketika komputer dijalankan, tetapi menjaga struktur direktori seperti Music, Pictures, Documents & Downloads.

Bagaimana saya bisa mencapai ini?


9
2017-08-29 14:48


asal


Untuk hampir semua: jawaban Anda - maaf - payah dan Anda tahu itu. Bagaimana jika tamu memilih bahasa lain? Bagaimana dengan semua konfigurasi tersembunyi dan file cache (riwayat browser, sampah, ...)? Sebaiknya ada daftar putih file yang tidak akan dihapus (menurut Roland Taylor). Selanjutnya Anda harus mempertimbangkan untuk menggunakannya xdg-user-dir dan ~/.config/user-dirs.dirs untuk direktori default. - dAnjou
@dAnjou: dengan solusi saya, folder standar di rumah akan dibuat sesuai dengan bahasa yang dipilih. Juga, OP tampaknya meminta lingkungan yang bersih, jadi saya tidak bisa mengerti mengapa memiliki apa yang Anda sebut "daftar putih". - enzotib
@enzotib: Ok, maaf. Rupanya Roland Taylor (dan saya) salah. Saya tidak tahu apa yang menabrak saya. Dapatkah Anda mengedit jawaban Anda dan menambahkan kemungkinan untuk memasukkan skrip Anda /etc/gdm/PostSession atau /etc/gdm/PreSession sehingga saya dapat mengambil kembali downvote saya? - dAnjou
@dAnjou: Saya menambahkan saran Anda. Terima kasih. - enzotib


Jawaban:


Anda dapat menghapusnya dengan aman semua data di direktori home, karena mereka diciptakan kembali, selain dari file yang disalin pada pembuatan pengguna dari /etc/skel, jadi

#!/bin/bash

shopt -s dotglob 
rm -rf /home/username/*
sudo -u username cp -a /etc/skel/* /home/username/

dimana username harus diganti dengan sesuatu yang berarti.

Per permintaan Anda ("ketika komputer mulai") ini dapat dijalankan dari /etc/rc.local. Lebih mungkin, Anda ingin menjalankannya di antara masing-masing untuk masuk, jadi letakkan di bawah /etc/gdm/PostSession atau /etc/gdm/PreSession.


14
2017-08-29 14:59



Anda tahu ada beberapa file yang jika dihapus itu akan menghentikan Anda dari dapat masuk? - RolandiXor♦
@Roland Taylor: file mana? Saya baru saja menguji menghapus semua file - enzotib
@danjjl: opsi ini membuat pertandingan bash * dengan semua file dan direktori, bahkan yang tersembunyi. - enzotib
tidak, file yang hilang tidak akan mencegah Anda masuk. Direktori home yang hilang, mungkin menyebabkan masalah atau file dengan set izin yang salah. Tetapi program tidak boleh, dalam keadaan apa pun, menganggap bahwa file ada. Jika tidak ada, maka itu harus dibuat. - Jo-Erlend Schinstad
Saya tidak menyarankan untuk memasukkannya ke dalam "aplikasi startup", yang mungkin dijalankan setelah itu user-dirs-update-gtk skrip startup global. Untuk pengguna lain, Anda harus mengubah username dalam naskah. Akhirnya, tamu akun tidak memiliki direktori home yang persisten, sehingga skrip tidak diperlukan untuk akun ini. - enzotib


Anda menjelaskan sesi tamu. Saya tidak sepenuhnya yakin cara kerjanya, tetapi pada 11.10 ini ditampilkan secara default di layar selamat datang. Akun itu persis seperti yang Anda inginkan, jadi pertanyaannya adalah jika Anda ingin menghabiskan waktu mencoba membuatnya ulang pada 11.04, atau jika Anda lebih suka menunggu sampai Anda merasa nyaman dengan peningkatan ke 11.10. Ini memasuki Beta 1 pada hari Kamis. Bagaimanapun, tidak ada salahnya untuk mengunduh dan mem-boot sesi langsung dan melihat bagaimana Anda menyukainya. Jika itu persis seperti yang Anda inginkan, maka Anda akan tahu cara membuatnya kembali.


6
2017-08-29 16:13





Buat skrip dengan nama yang Anda pilih dan tambahkan konten ini:

rm -r ~/Music/*
rm -r ~/Pictures/*
rm -r ~/Documents/*
rm -r ~/Videos/*
rm -r ~/Downloads*
rm -r ~/Desktop/*

Simpan file ini, tandai sebagai dapat dieksekusi, dan tambahkan ke aplikasi start up Anda (untuk akun yang perlu dibersihkan).

Ini akan menghapus semua file di direktori tersebut. Namun, untuk membersihkan konten ~/ itu sendiri sedikit lebih rumit, dan saya akan memperbarui jawaban saya jika saya menemukan cara yang aman untuk melakukan itu.


2
2017-08-29 14:56





Anda bisa melakukan sesuatu seperti

#!/bin/bash

rm -rf /home/Guest/Desktop/*
rm -rf /home/Guest/Documents/*
rm -rf /home/Guest/Downloads/*
rm -rf /home/Guest/Music/*
rm -rf /home/Guest/Pictures/*
rm -rf /home/Guest/Videos/*

Simpan ini sebagai sesuatu seperti cleanup.sh dan membuatnya bisa dieksekusi chmod +x cleanup.sh. Maka Anda bisa menelepon ./cleanup. Perhatikan bahwa ini menghapus segala sesuatu dalam folder ini, gunakan dengan hati-hati. Pastikan untuk mengubah "Tamu" menjadi nama pengguna Anda.

Anda dapat membuat ini berjalan saat startup dengan menambahkannya ke preferensi Startup Applications.

Anda juga bisa menambahkan skrip ini sebagai tugas cron pada sistem Anda sehingga berjalan setiap malam. Lihat disini untuk informasi lebih lanjut tentang tugas cron.


1
2017-08-29 14:55



lol jawaban Anda lebih baik dari saya: D! Btw ubah -rf ke -r karena itu lebih aman. - RolandiXor♦
@Roland: belum tentu lebih aman dan bahkan kemungkinan jebakan: -f mencegah meminta penghapusan file read-only (file tanpa set bit tulis) dan menghapusnya tanpa konfirmasi. Dengan menghapus -f, pengguna dapat mencegah file apa pun dihapus dengan membuat /home/Guest/Desktop/000000000 file dan membuatnya hanya-baca. Ini akan membuat naskah hang dengan konfirmasi tersembunyi dan dengan demikian tidak melanjutkan dengan menghapus file. Firefox dikenal untuk membuat unduhan hanya-baca. - Lekensteyn
Inilah mengapa saya awalnya memasukkannya. Saya tidak ingin skrip gagal dalam hal file hanya-baca. Saya juga mengira karena skrip yang cukup merusak, menambahkan -f Bendera tidak akan terlalu sakit. Saya dapat menambahkannya kembali. - Kris Harper