touchสร้างไฟล์ใหม่ที่ว่างเปล่าหากไฟล์ไม่มีอยู่เพราะนั่นคือสิ่งที่มันถูกออกแบบมาให้ทำ ยูทิลิตี้จะต้องมีรหัสเพื่อจัดการกับกรณีนั้นโดยเฉพาะ ยูทิลิตี้ปรากฏในUnix V7 ; ของคู่มืออธิบายดังนี้:
touch - วันที่อัปเดตแก้ไขไฟล์ครั้งล่าสุด
touchความพยายามที่จะกำหนดวันที่แก้ไขของแต่ละไฟล์ สิ่งนี้ทำได้โดยการอ่านตัวอักษรจากไฟล์และเขียนกลับมา หากไม่มีไฟล์ ** อยู่จะมีการพยายามสร้างไฟล์ขึ้นมาเว้นแต่-cจะระบุตัวเลือกไว้
(ฉันไม่ทราบว่าเกิดอะไรขึ้นtouchถ้าไฟล์ว่างเปล่าการเรียกระบบพื้นฐานมาในภายหลัง)
ผมไม่ทราบว่าทำไมtouchได้รับการออกแบบมาเพื่อให้มีอยู่ไฟล์ makeแต่ผมสงสัยว่ามันเป็นเพราะ ทำไมคุณต้องการตั้งเวลาแก้ไขของไฟล์เป็นเวลาปัจจุบัน มีหลายกรณีที่อาจมีประโยชน์ในการตั้งค่าเวลาการแก้ไขเป็นเวลาเฉพาะ แต่ความสามารถนั้นมาในภายหลังต้นฉบับtouchสามารถตั้งค่าเวลาการแก้ไขเป็นเวลาปัจจุบันเท่านั้น เหตุผลที่ต้องทำคือเรียกใช้makeกฎที่ขึ้นอยู่กับไฟล์อีกครั้ง
นั่นคือสมมติว่าคุณมีไฟล์fooและ Makefile ที่ประกาศคำสั่งเพื่อสร้างเป็นจากbar fooเมื่อคุณพิมพ์make barคำสั่งจะถูกดำเนินการและbarถูกสร้างขึ้น ถ้าbarมีอยู่และเป็นรุ่นใหม่กว่าfoo, make barไม่ทำอะไรเลยเพราะmakeสันนิษฐานว่าbarได้รับการสร้างขึ้น อย่างไรก็ตามหากbarมีอายุมากกว่าfooให้คิดว่าbarไม่ทันสมัยและจำเป็นต้องสร้างใหม่
แต่ถ้ากฎการสร้างbarมีการเปลี่ยนแปลง? จากนั้นคุณมีสองตัวเลือก:
rm bar; make bar
touch foo; make bar
คุณจะต้องfooมีอยู่เพื่อสร้างbarมิฉะนั้นคำสั่งจะไม่ทำงาน
คำศัพท์“ สัมผัส” มีอยู่ในmakeยูทิลิตี้ด้วย: make -t barจะแกล้งทำเป็นเรียกใช้คำสั่งนั่นคือมันจะตั้งค่าเวลาการแก้ไขของbarเวลาปัจจุบันโดยไม่ต้องเรียกใช้คำสั่งเพื่อสร้างbar( จริง ๆถ้าคุณคิดว่า การเปลี่ยนแปลงที่fooไม่ควรมีผลกระทบbar) touchยูทิลิตี้จึงเป็นแบบสแตนด์อโลนของmake -tคุณลักษณะ
touch /forcefsckเพื่อสร้างไฟล์ว่างที่เรียกว่า/forcefsckเพื่อบังคับให้ระบบไฟล์ตรวจสอบข้อผิดพลาดในการรีบูตครั้งถัดไป ไฟล์นั้นไม่จำเป็นต้องมีอะไรเลยมันแค่ต้องมีอยู่ ไม่ต้องtouchฉันจะต้องใช้viหรือnanoบันทึกไฟล์เปล่าtouchเร็วมากที่จะใช้