คำสั่ง 'สัมผัส' เมื่อนำไปใช้กับไดเรกทอรีคืออะไร?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
คำสั่ง 'สัมผัส' เมื่อนำไปใช้กับไดเรกทอรีคืออะไร?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
คำตอบ:
ตามที่ระบุใน manpageการใช้หลักของtouch
คือ:
อัปเดตเวลาการเข้าถึงและการแก้ไขของไฟล์แต่ละไฟล์เป็นเวลาปัจจุบัน
ดังนั้นจึงอัปเดตเวลาในการเข้าถึงและแก้ไขของไดเรกทอรี
ตัวอย่างที่ด้านบนไม่ได้ทำให้ชัดเจนว่า "touch" กำหนดเวลาของไดเรกทอรี (เวลาใหม่ในรายการเหมือนกับต้นฉบับเพียงเพราะการสัมผัสนั้นไม่นานหลังจากสร้างไดเรกทอรี) . ใช่คำจำกัดความของ "ไฟล์" ในเอกสารประกอบด้วยไดเรกทอรีดังนั้นคุณสามารถใช้การสัมผัสเพื่อเปลี่ยนการประทับเวลา แต่ ...
มีบางสถานการณ์ที่คุณไม่สามารถเปลี่ยนการประทับเวลาของไดเรกทอรี (สำหรับไดเรกทอรีที่ติดตั้งแบบรีโมตบางประเภท) แม้ว่าคุณจะได้รับอนุญาตให้ทำสิ่งอื่น เช่นการเมานต์ NFS นี้:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
นอกจากนี้คุณยังสามารถพบปัญหาเกี่ยวกับวันที่เก่า ๆ ที่ไม่รองรับในบางเซิร์ฟเวอร์เช่น:
$ mkdir /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir
งานนี้:
$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr 1 2014 /Acer/kopies/test.dir
สิ่งนี้จะทำงานได้ใน dir ท้องถิ่น แต่ให้วันแปลก ๆ ภายใต้การติดตั้ง Samba:
$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26 60410 /Acer/kopies/test.dir
~~~~~~~~~~~~~
touch
เป็นโปรแกรม Unix มาตรฐานที่ใช้ในการเปลี่ยนการเข้าถึงและการแก้ไขการประทับเวลาของไฟล์ นอกจากนี้ยังใช้เพื่อสร้างไฟล์ว่างใหม่ข้อมูลจำเพาะของระบบปฏิบัติการยูนิกซ์เดี่ยว (SUS) ระบุว่าการสัมผัสควรเปลี่ยนเวลาการเข้าถึงเวลาแก้ไขหรือทั้งสองอย่างสำหรับไฟล์ ไฟล์ถูกระบุโดยชื่อพา ธ ที่ให้มาเป็นอาร์กิวเมนต์เดียว นอกจากนี้ยังระบุว่าหากไฟล์ที่ระบุไม่มีอยู่ไฟล์จะถูกสร้างขึ้นและเวลาการเข้าถึงและการแก้ไขจะถูกตั้งค่าตามที่ระบุ หากไม่ได้ระบุเวลาบันทึกใหม่ให้แตะใช้เวลาปัจจุบัน
-Wikipedia
คุณสามารถค้นหาข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับtouch
คำสั่ง (หรือคำสั่งอื่น ๆ ที่คุณต้องการทราบ) โดยใช้man
คำสั่งดังนี้:
man touch
เหตุผลทันทีสำหรับคำถามคือข้อเท็จจริงที่ว่าเวลาในการแก้ปัญหาเริ่มต้นls -l
เป็นนาทีดังนั้นรายการระบบไฟล์ที่สัมผัสภายในนาทีเดียวกันจะปรากฏขึ้นเหมือนกันในls -l
ผลลัพธ์เริ่มต้น
วิธีการนี้มีการอธิบายที่/superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp
และโดยทั่วไปเกี่ยวกับการทำงานls -l --time-style=full-iso
แทน