ไฟล์ปกติคืออะไร?


12
$ rm foobar
rm: remove regular file `foobar'?

ไฟล์หมายถึงอะไร "ปกติ" และทำไมจึงrmถือว่าไฟล์ดังกล่าวเป็นกรณีพิเศษ

คำตอบ:


8

ฉันคิดว่าrmเป็นนามแฝงอาจเป็นไปrm -iได้ ส่วน "ปกติ" ไม่ได้มีความหมายอะไรเป็นพิเศษโดยเฉพาะหมายความว่าไม่ใช่ท่ออุปกรณ์ซ็อกเก็ตหรือ "พิเศษ" อื่น ๆ


ah, คุณสิทธิกำลัง - rm -iมันนามแฝง
Cory Klein

5
ดังนั้นมันจึงมีความหมายโดยเฉพาะอย่างยิ่ง อันที่จริงมันเป็นสิ่งสำคัญมากของวัตถุที่จะลบ ...
Bananguin

ดังที่ @alexander กล่าวว่าหมายความว่าไฟล์ไม่ใช่ symlink, pipe, rand, null, cpu เป็นต้นบางทีคุณอาจเคยได้ยินปรัชญาของ linux ว่า ​​"ทุกอย่างเป็นไฟล์ข้อความ" สิ่งนี้ไม่เป็นความจริง แต่แนะนำบริบทการดำเนินงานที่โดดเด่นซึ่งสามารถใช้เครื่องมือการประมวลผลสตริงกับองค์ประกอบของระบบไฟล์ได้โดยตรง ในกรณีนี้ก็หมายความว่าในความเป็นตัวอักษรมากขึ้น หากต้องการดูขั้นตอนการตรวจสอบในการแยกลองคำสั่งไฟล์เป็นในหรือfile /etc/passwd file /dev/null
Joe Atzberger

8

คำสั่งทดสอบ

ไฟล์ใด ๆ ที่ผ่านการทดสอบ ( -f) เป็นไฟล์ปกติ:

$ test -f afile.zip && echo regular
regular

หากคุณดูในหน้า man testคุณจะเห็นไฟล์ประเภทต่างๆทั้งหมด

คำสั่ง stat

คุณสามารถตรวจสอบว่าไฟล์เป็นปกติหรือไม่โดยใช้statคำสั่ง:

$ stat afile.zip 
  File: `afile.zip'
  Size: 1512        Blocks: 8          IO Block: 4096   regular file
Device: fd02h/64770d    Inode: 10370668    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-11-07 15:52:06.719632792 -0500
Modify: 2013-11-07 15:52:00.949760104 -0500
Change: 2013-11-07 15:52:00.949760104 -0500

ฟังก์ชั่น stat ()

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

$ man 2 stat

ส่วนนี้จะแสดงไฟล์ประเภทต่างๆโดยเฉพาะ:

   The following flags are defined for the st_mode field:

       S_IFMT     0170000   bit mask for the file type bit fields
       S_IFSOCK   0140000   socket
       S_IFLNK    0120000   symbolic link
       S_IFREG    0100000   regular file
       S_IFBLK    0060000   block device
       S_IFDIR    0040000   directory
       S_IFCHR    0020000   character device
       S_IFIFO    0010000   FIFO
       S_ISUID    0004000   set UID bit
       S_ISGID    0002000   set-group-ID bit (see below)
       S_ISVTX    0001000   sticky bit (see below)
       S_IRWXU    00700     mask for file owner permissions
       S_IRUSR    00400     owner has read permission
       S_IWUSR    00200     owner has write permission
       S_IXUSR    00100     owner has execute permission
       S_IRWXG    00070     mask for group permissions
       S_IRGRP    00040     group has read permission
       S_IWGRP    00020     group has write permission
       S_IXGRP    00010     group has execute permission
       S_IRWXO    00007     mask for permissions for others (not in group)
       S_IROTH    00004     others have read permission
       S_IWOTH    00002     others have write permission
       S_IXOTH    00001     others have execute permission
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.