สำหรับยูทิลิตี้ GNU เอกสารฉบับเต็มอยู่ในinfo
หน้าซึ่งคุณสามารถอ่านได้:
-f
ละเว้น; สำหรับความเข้ากันได้กับ `touch 'รุ่น BSD
ดูหน้าประวัติศาสตร์ BSD สำหรับการสัมผัสซึ่ง-f
จะบังคับให้มีการสัมผัส
ถ้าคุณดูที่แหล่งที่มาของ BSDs เก่าเหล่านั้นไม่มีการutimes()
เรียกระบบจึงtouch
จะเปิดไฟล์ในโหมด + เขียนอ่านอ่านหนึ่งไบต์แสวงหากลับและเขียนอีกครั้งเพื่อที่จะปรับปรุงการเข้าถึงล่าสุดและเวลาที่แก้ไขล่าสุด
เห็นได้ชัดว่าคุณต้องการสิทธิ์ในการอ่านและเขียน ( touch
จะหลีกเลี่ยงการพยายามทำเช่นนั้นหากaccess(W_OK|R_OK)
ส่งคืนเท็จ ) -f
พยายามหลีกเลี่ยงสิ่งนั้นโดยเปลี่ยนการอนุญาตเป็นการชั่วคราวเป็น 0666 !
0666 หมายถึงสิทธิ์ในการอ่านและเขียนสำหรับทุกคน จะต้องเป็นเช่นนั้น (เช่นได้รับอนุญาตที่เข้มงวดมากขึ้นเช่น 0600 ที่ยังคงอนุญาตให้ใช้การสัมผัส ) ซึ่งอาจหมายถึงในช่วงเวลาสั้น ๆ นั้นกระบวนการที่จะอนุญาตให้อ่านหรือเขียนไฟล์ไม่สามารถทำได้อีกต่อไป ทำลายการทำงาน
นั่นหมายความว่าอย่างไรว่ากระบวนการที่จะไม่เป็นอย่างอื่นได้เข้าถึงไฟล์ในขณะนี้มีโอกาสที่สั้นที่จะเปิดมันทำลายการรักษาความปลอดภัย
นั่นไม่ใช่สิ่งที่สมเหตุสมผลที่จะทำ touch
การใช้งานที่ทันสมัยไม่ได้ทำอย่างนั้น ตั้งแต่นั้นมาการutime()
เรียกของระบบได้รับการแนะนำให้เปลี่ยนการแก้ไขและเวลาเข้าถึงแยกกันโดยไม่ต้องปะปนกับเนื้อหาของไฟล์ (ซึ่งหมายความว่ามันยังทำงานได้กับไฟล์ที่ไม่ปกติ) และต้องการการเข้าถึงเพื่อเขียนเท่านั้น
GNU touch
ยังคงไม่ล้มเหลวหากผ่าน-f
ตัวเลือก แต่เพียงข้ามแฟล็ก ด้วยวิธีนี้สคริปต์ที่เขียนขึ้นสำหรับ BSD เวอร์ชันเก่าเหล่านี้จะไม่ล้มเหลวเมื่อถูกย้ายไปยังระบบ GNU ไม่ค่อยมีความเกี่ยวข้องในทุกวันนี้
-f
เป็นตัวเลือกจะถูกละเว้น บางทีอาจมีการแยกวิเคราะห์ผ่านตัวแยกวิเคราะห์และนั่นคือมัน