Bagaimana saya bisa menulis skrip kecil untuk membersihkan file setiap direktori ketika komputer dimulai?

9

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

Yang ingin saya lakukan adalah membersihkan setiap file di dalam direktori home ketika komputer dinyalakan, tetapi simpan struktur direktori seperti Musik, Gambar, Dokumen & Unduhan.

Bagaimana saya bisa mencapai ini?

Achu
sumber
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 (histori browser, trash, ...)? Seharusnya ada daftar putih file yang tidak akan dihapus (menurut Roland Taylor). Selanjutnya Anda harus mempertimbangkan untuk menggunakan xdg-user-dirdan ~/.config/user-dirs.dirsuntuk 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 mengerti mengapa memiliki apa yang Anda sebut "daftar putih".
enzotib
1
@enzotib: Oke, maaf. Rupanya Roland Taylor (dan saya) salah. Saya tidak tahu apa yang menimpa saya. Bisakah Anda mengedit jawaban Anda dan menambahkan kemungkinan untuk memasukkan skrip Anda ke dalam /etc/gdm/PostSessionatau /etc/gdm/PreSessionsehingga saya dapat mengambil kembali downvote saya?
dAnjou

Jawaban:

14

Anda dapat menghapus semua file dengan aman di direktori home, karena itu dibuat ulang, selain dari file yang disalin pada pembuatan pengguna /etc/skel, jadi

#!/bin/bash

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

di mana usernameharus diganti dengan sesuatu yang bermakna.

Sesuai permintaan Anda ("saat komputer mulai") ini dapat dijalankan dari /etc/rc.local. Kemungkinan besar, Anda ingin menjalankannya di antara masing-masing untuk login, jadi letakkan di bawah /etc/gdm/PostSessionatau /etc/gdm/PreSession.

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

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

Jo-Erlend Schinstad
sumber
2

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 file yang 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 kontennya ~/sendiri sedikit lebih rumit, dan saya akan memperbarui jawaban saya jika saya menemukan cara yang aman untuk melakukannya.

RolandiXor
sumber
1

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 seperti sesuatu cleanup.shdan buat itu bisa dieksekusi chmod +x cleanup.sh. Maka Anda bisa menelepon ./cleanup. Perhatikan bahwa ini menghapus semua yang ada di folder ini, gunakan dengan hati-hati. Pastikan untuk mengubah "Tamu" menjadi nama pengguna Anda.

Anda dapat menjalankan ini saat startup dengan menambahkannya ke preferensi Aplikasi Startup.

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

Kris Harper
sumber
lol jawaban Anda lebih baik daripada jawaban saya: D! Btw ganti -rf ke -r karena itu lebih aman.
RolandiXor
@Roland: belum tentu lebih aman dan bahkan kemungkinan jebakan: -fmencegah meminta menghapus 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/000000000file dan membuatnya hanya-baca. Ini akan membuat skrip hang dengan konfirmasi tersembunyi dan karenanya tidak melanjutkan menghapus file. Firefox dikenal membuat unduhan hanya-baca.
Lekensteyn
Inilah sebabnya saya awalnya memasukkannya. Saya tidak ingin skrip gagal jika file hanya baca. Saya juga mengira karena itu adalah script yang cukup destruktif, menambahkan -fbendera tidak akan terlalu menyakitkan. Saya dapat menambahkannya kembali.
Kris Harper