ฉันจะเขียนสคริปต์ขนาดเล็กเพื่อล้างไฟล์ทุกไดเรกทอรีเมื่อคอมพิวเตอร์เริ่มต้นได้อย่างไร


9

ฉันมีคอมพิวเตอร์สำหรับแขกเพื่อใช้อินเทอร์เน็ตเท่านั้น ผู้ใช้บางคนดาวน์โหลดไฟล์บางไฟล์และวางไว้บนเดสก์ท็อป แต่คอมพิวเตอร์มีพื้นที่ไม่เพียงพอสำหรับแขกทุกคนและไม่ได้รับอนุญาตให้วางไฟล์ไว้ที่นั่น

สิ่งที่ฉันต้องการทำคือทำความสะอาดทุกไฟล์ในโฮมไดเร็กตอรี่เมื่อคอมพิวเตอร์เริ่มทำงาน, แต่ให้โครงสร้างไดเรกทอรีเช่นเพลง, รูปภาพ, เอกสาร & ดาวน์โหลด

ฉันจะทำสิ่งนี้ได้อย่างไร


สำหรับทุกคน: คำตอบของคุณ - ขอโทษ - ดูดแล้วคุณก็รู้ เกิดอะไรขึ้นถ้าแขกเลือกภาษาอื่น แล้วการกำหนดค่าและแคชไฟล์ที่ซ่อนอยู่ทั้งหมด (ประวัติเบราว์เซอร์ถังขยะ ... ) ควรมีรายการแฟ้มที่จะไม่ถูกลบ (ตามข้อมูลของ Roland Taylor) นอกจากนี้คุณควรพิจารณาใช้xdg-user-dirและ~/.config/user-dirs.dirsสำหรับไดเรกทอรีเริ่มต้น
dAnjou

@dAnjou: ด้วยโซลูชันของฉันโฟลเดอร์มาตรฐานในบ้านจะถูกสร้างขึ้นตามภาษาที่เลือก นอกจากนี้ OP ดูเหมือนว่าจะขอสภาพแวดล้อมที่สะอาดดังนั้นฉันไม่เข้าใจว่าทำไมต้องมีสิ่งที่คุณเรียกว่า "รายการสีขาว"
enzotib

1
@enzotib: โอเคขอโทษ เห็นได้ชัดว่า Roland Taylor (และฉัน) ผิด ฉันไม่รู้ว่าอะไรจะกระทบฉัน คุณสามารถแก้ไขคำตอบของคุณและเพิ่มความเป็นไปได้ที่จะใส่สคริปต์ของคุณลงไป/etc/gdm/PostSessionหรือ/etc/gdm/PreSessionเพื่อที่ฉันจะได้นำการโหวตกลับของฉันไปใช้
dAnjou

คำตอบ:


14

คุณสามารถลบไฟล์ทั้งหมดในไดเรกทอรีบ้านเพราะพวกเขาถูกสร้างนอกเหนือจากไฟล์ที่คัดลอกในการสร้างผู้ใช้จาก/etc/skelดังนั้น

#!/bin/bash

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

ที่usernameควรได้รับการแทนที่ด้วยบางสิ่งบางอย่างที่มีความหมาย

ตามคำขอของคุณ ("เมื่อคอมพิวเตอร์เริ่มต้น") สิ่งนี้สามารถดำเนินการ/etc/rc.localได้ มีแนวโน้มที่คุณต้องการที่จะดำเนินการได้ระหว่างแต่ละคนที่จะเข้าสู่ระบบเพื่อวางไว้ใต้หรือ/etc/gdm/PostSession/etc/gdm/PreSession


คุณรู้หรือไม่ว่ามีบางไฟล์ที่ลบไปแล้วจะทำให้ไม่สามารถเข้าสู่ระบบได้?
RolandiXor

@Roland Taylor: ไฟล์ไหน? ฉันเพิ่งทดสอบการลบไฟล์ทั้งหมด
enzotib

1
@danjjl: ตัวเลือกนี้ทำให้ bash จับคู่*กับไฟล์และไดเรกทอรีทั้งหมดแม้กระทั่งที่ซ่อนอยู่
enzotib

1
ไม่ไฟล์ที่หายไปจะไม่ป้องกันคุณจากการเข้าสู่ระบบโฮมไดเร็กตอรี่ที่หายไปอาจทำให้เกิดปัญหาหรือไฟล์ที่ตั้งค่าการอนุญาตไม่ถูกต้อง แต่โปรแกรมไม่ควรภายใต้สถานการณ์ใด ๆ สมมติว่ามีไฟล์อยู่ หากไม่มีอยู่ก็ควรจะสร้างขึ้น
Jo-Erlend Schinstad

1
ผมไม่แนะนำให้ใส่ไว้ในโปรแกรม "การเริ่มต้น" ที่จะดำเนินการอาจจะหลังจากuser-dirs-update-gtkสคริปต์เริ่มต้นทั่วโลก สำหรับผู้ใช้รายอื่นคุณต้องเปลี่ยนusernameสคริปต์ สุดท้ายบัญชีผู้เยี่ยมชมไม่มีโฮมไดเร็กตอรี่แบบถาวรดังนั้นจึงไม่จำเป็นต้องใช้สคริปต์สำหรับบัญชีนี้
enzotib

6

คุณกำลังอธิบายเซสชั่นแขก ฉันไม่แน่ใจทั้งหมดว่าวิธีการทำงาน แต่ใน 11.10 มันจะปรากฏตามค่าเริ่มต้นในหน้าจอต้อนรับ บัญชีนั้นทำสิ่งที่คุณต้องการอย่างแท้จริงคำถามคือถ้าคุณต้องการใช้เวลาพยายามสร้างมันใหม่ในวันที่ 11.04 หรือถ้าคุณอยากจะรอจนกว่าคุณจะอัปเกรดเป็น 11.10 กำลังเข้าสู่ Beta 1 ในวันพฤหัสบดี ไม่ว่าจะในกรณีใดดาวน์โหลดและบู๊ตเซสชันสดและดูว่าคุณชอบอย่างไร ถ้ามันเป็นอย่างที่คุณต้องการคุณจะรู้วิธีสร้างมันขึ้นมาใหม่


2

สร้างสคริปต์ด้วยชื่อที่คุณเลือกและเพิ่มเนื้อหานี้:

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

บันทึกไฟล์นี้ทำเครื่องหมายว่าสามารถใช้งานได้และเพิ่มลงในแอปพลิเคชันเริ่มต้นของคุณ (สำหรับบัญชีที่ต้องล้างข้อมูล)

จะเป็นการล้างไฟล์ทั้งหมดในไดเรกทอรีเหล่านั้น อย่างไรก็ตามการทำความสะอาดเนื้อหาของ~/ตัวเองนั้นค่อนข้างซับซ้อนและฉันจะอัปเดตคำตอบถ้าพบวิธีที่ปลอดภัยในการทำเช่นนั้น


1

คุณสามารถทำสิ่งที่ชอบ

#!/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/*

บันทึกสิ่งนี้เป็นสิ่งที่ชอบcleanup.shและทำให้มันใช้งานchmod +x cleanup.shได้ ./cleanupจากนั้นคุณสามารถโทรหา โปรดทราบว่าสิ่งนี้จะลบทุกอย่างในโฟลเดอร์เหล่านี้ใช้ด้วยความระมัดระวัง อย่าลืมเปลี่ยน "ผู้เยี่ยมชม" เป็นชื่อผู้ใช้ของคุณ

คุณสามารถทำให้การทำงานนี้เมื่อเริ่มต้นโดยการเพิ่มลงในการตั้งค่าเริ่มต้นแอปพลิเคชัน

คุณสามารถเพิ่มสคริปต์นี้เป็นงาน cron ในระบบของคุณเพื่อให้มันทำงานทุกคืน ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับงาน cron


ฮ่า ๆ คำตอบของคุณดีกว่าของฉัน: D! Btw เปลี่ยน -rf เป็น -r ตามที่ปลอดภัยยิ่งขึ้น
RolandiXor

@Roland: ไม่จำเป็นต้องปลอดภัยกว่าและอาจเป็นอันตรายได้: -fป้องกันการขอให้ลบไฟล์แบบอ่านอย่างเดียว (ไฟล์ที่ไม่มีการตั้งค่าบิตการเขียน) และลบไฟล์เหล่านั้นโดยไม่มีการยืนยัน โดยการลบ-fผู้ใช้สามารถป้องกันไฟล์ใด ๆ จากการถูกลบโดยการสร้าง/home/Guest/Desktop/000000000ไฟล์และทำให้มันเป็นแบบอ่านอย่างเดียว สิ่งนี้จะทำให้สคริปต์หยุดทำงานพร้อมกับการยืนยันที่ซ่อนอยู่ดังนั้นจึงไม่ดำเนินการลบไฟล์ต่อไป Firefox เป็นที่รู้จักกันในการดาวน์โหลดแบบอ่านอย่างเดียว
Lekensteyn

นี่คือเหตุผลที่ฉันรวมไว้ในตอนแรก ฉันไม่ต้องการให้สคริปต์ล้มเหลวในกรณีที่เป็นไฟล์แบบอ่านอย่างเดียว ฉันคิดด้วยเพราะมันเป็นสคริปต์ที่ค่อนข้างทำลายล้างอยู่ดีการเพิ่ม-fธงไม่ทำให้เจ็บมาก ฉันอาจจะเพิ่มมันเข้าไปอีก
คริสฮาร์เปอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.