คำถามติดแท็ก directory

โครงสร้างระบบไฟล์ที่ใช้เก็บไฟล์คอมพิวเตอร์

2
ไดเรกทอรีถูกลบเมื่อจำนวนฮาร์ดลิงก์เป็น 0 หรือไม่
ไดเรกทอรีถูกลบเมื่อจำนวนฮาร์ดลิงก์เป็น 0 หรือไม่ ไดเรกทอรีมักจะมีอย่างน้อย 2 .เป็นจำนวนครั้งของการเชื่อมโยงอย่างหนักเพราะ เมื่อไหร่rm -rไดเรกทอรีจะลดจำนวนของฮาร์ดลิงก์จาก 2 เป็น 0 โดย 2 แทนที่จะเป็น 1 หรือไม่ จำนวนฮาร์ดลิงก์ของไดเรกทอรีสามารถเป็น 1 ได้หรือไม่? ขอบคุณ
10 directory 

6
คุณจะตรวจสอบว่าไฟล์มีอยู่ใน awk ได้อย่างไร? [-d 'filename'] ล้มเหลว
ฉันกำลังพยายามสร้างรายชื่อผู้ใช้ที่มีชุดโฮมไดเรกทอรีซึ่งไม่มีอยู่จริง ดูเหมือนว่าฉันควรทำสิ่งนี้ด้วย awk แต่มีบางอย่างผิดปกติกับไวยากรณ์ของฉัน มันบอกฉันว่า "ไวยากรณ์ไม่ถูกต้อง" ที่] ผมทำอะไรผิดหรือเปล่า? awk -F: '{ if(![ -d "$6"]){ print $1 " " $3 " " $7}}' /etc/passwd รหัสสุดท้ายที่ฉันอาจจะใช้คือ: awk -F: '{if(system( "[ -d " $6 " ]") == 1 && $7 != "/sbin/nologin" ) {print "The directory " $6 " does not exist for …
10 bash  awk  directory 

2
กฎไวยากรณ์พา ธ
ฉันกำลังเขียนไลบรารีสำหรับจัดการสตริงเส้นทาง Unix ในกรณีนี้ฉันต้องเข้าใจบางส่วนที่ไม่ชัดเจนของไวยากรณ์ที่คนส่วนใหญ่ไม่ต้องกังวล ตัวอย่างเช่นดีที่สุดเท่าที่ฉันสามารถบอกได้ดูเหมือนว่าfoo/barและfoo//barทั้งสองชี้ไปยังสถานที่เดียวกัน นอกจากนี้~มักจะหมายถึงไดเรกทอรีบ้านของผู้ใช้ แต่ถ้ามันปรากฏขึ้นกลางเส้นทาง? จะเกิดอะไรขึ้น? คำถามอื่น ๆ ที่คลุมเครือเหล่านี้และอีกหลายโหลต้องตอบถ้าฉันจะเขียนโค้ดที่จัดการทุกกรณีที่เป็นไปได้อย่างถูกต้อง ไม่มีใครรู้ถึงการอ้างอิงที่ชัดเจนซึ่งอธิบายกฎไวยากรณ์ที่แน่นอนสำหรับสิ่งนี้หรือไม่? (น่าเสียดายที่การค้นหาคำเช่น "Unix path syntax" จะมีหน้าเว็บหลายล้านหน้าที่พูดถึง$PATHตัวแปร ... Heck ฉันกำลังดิ้นรนเพื่อหาแท็กที่เหมาะสมสำหรับคำถามนี้!)

1
ค้นหาโฟลเดอร์ทั้งหมดในไดเรกทอรีที่มีเนื้อหาเหมือนกัน
ในอูบุนตูมีใครบ้างที่จะค้นหาโฟลเดอร์ที่ซ้ำกันในไดเรกทอรี (เช่นโฟลเดอร์ที่มีเนื้อหาเดียวกัน) ฉันคิดว่ามีเครื่องมือบรรทัดคำสั่งบางตัวสำหรับค้นหาไฟล์ที่ซ้ำกัน (เช่น fdupes) แต่ฉันต้องการค้นหาโฟลเดอร์ที่ซ้ำกันแทน นั่นคือค้นหาโฟลเดอร์ที่ตรงกับเนื้อหาของไฟล์ที่มี (แม้ว่าชื่อไฟล์และข้อมูลเมตาอื่น ๆ อาจแตกต่างกัน)

3
ฉันจะ cd ไปยังไดเรกทอรี sibling ก่อนหน้า / ถัดไปได้อย่างไร
ฉันมักจะมีรูปแบบไดเรกทอรีโครงการเช่นนี้ project `-- component-a | `-- files... `-- component-b | `-- files... `-- component-c `-- files... ฉันมักจะทำงานในหนึ่งในcomponentไดเรกทอรีเพราะนั่นคือที่ที่ไฟล์อยู่ เมื่อฉันกลับไปที่เชลล์ฉันมักจะต้องย้ายไปยังไดเรกทอรี sibling โดยเฉพาะอย่างยิ่งเมื่อฉันจำเป็นต้องทำการเปลี่ยนแปลงที่ไม่สามารถเขียนสคริปต์ได้ทุกองค์ประกอบ ในกรณีเหล่านั้นฉันจะไม่สนใจสิ่งที่ไดเรกทอรีพี่น้องก่อนหน้าคือที่ฉันจะทำงานหรือไดเรกทอรีพี่น้องถัดไป ฉันสามารถกำหนดคำสั่งprevหรือnextว่าcdฉันจะเข้าไปในไดเรกทอรีก่อนหน้าหรือไดเรกทอรีถัดไป (ตามตัวอักษรหรืออะไรก็ตาม) ได้อย่างง่ายดายหรือไม่? เพราะการพิมพ์cd ../com<TAB><Arrow keys>ตลอดเวลากำลังจะแก่ลงสักหน่อย

1
ฉันจะทำให้ ls แสดงข้อมูลเกี่ยวกับไดเรกทอรีที่ระบุเท่านั้นไม่ใช่ข้อมูลเกี่ยวกับไฟล์ย่อยหรือเนื้อหาของโฟลเดอร์ได้อย่างไร
สมมติว่าฉันมีโฟลเดอร์ "foo" ซึ่งเป็นไดเรกทอรีหลัก ฉันต้องการรับข้อมูลบางอย่างเจ้าของกลุ่มสิทธิ์ ฯลฯ ... จากนั้นฉันทำสิ่งนี้เพื่อลองรับข้อมูล: cd ~ ls -l foo แน่นอนว่าตอนนี้จะแสดงข้อมูลของเนื้อหาของ "foo" จากนั้นฉันสามารถทำอะไรเช่นนี้ cd ~ dir=foo ls -l $foo/.. | awk 'BEGIN { dir="'$foo'" } { if($9 == dir) { print $0 } }' แต่ไม่มีวิธีที่ง่ายกว่าในการทำเช่นนี้?
10 directory  ls 


1
ทำไม rmdir และยกเลิกการเชื่อมโยงการเรียกระบบสองครั้งแยกกัน?
นี่คือสิ่งที่ทำให้ฉันสงสัยอยู่พักหนึ่ง: [15:40:50][/tmp]$ mkdir a [15:40:52][/tmp]$ strace rmdir a execve("/usr/bin/rmdir", ["rmdir", "a"], [/* 78 vars */]) = 0 brk(0) = 0x11bb000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff3772c3000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=245801, ...}) = 0 mmap(NULL, 245801, …

2
โฟลเดอร์ที่มีสิทธิ์ในการเขียนเท่านั้นไม่มีประโยชน์ใช่มั้ย
หลังจากทำงานกับ Linux มาหลายปีและพบว่าตัวเองมีเวลาว่างฉันก็เลยตัดสินใจทบทวนพื้นฐาน ดังนั้นฉันจึงอ่านเนื้อหาเกี่ยวกับการอนุญาต (โดยไม่ตรวจสอบซอร์สโค้ด) และกรณีพิเศษสำหรับโฟลเดอร์และมาพร้อมกับวิธีใหม่ (สำหรับฉันอย่างน้อย ... ) วิธีคิดเกี่ยวกับการอนุญาตโฟลเดอร์ (สำหรับผู้ใช้เฉพาะ / กลุ่ม / อื่น ๆ ): ฉันนึกภาพโฟลเดอร์เป็นตารางที่มีสองคอลัมน์เช่น: filename | inode foo | 111 bar | 222 อ่านได้รับอนุญาตหมายความว่าคุณสามารถอ่าน (และรายการ) คอลัมน์ด้านซ้ายของโต๊ะเขียนได้รับอนุญาตสอดคล้องกับการเพิ่มและลบรายการในตารางและดำเนินการสอดคล้องกับการอนุญาตให้ความสามารถในการแปลจากชื่อไฟล์ inode; เช่นคุณสามารถเข้าถึงเนื้อหาของโฟลเดอร์ ฉันทำการทดลองบางอย่างและผลลัพธ์ทั้งหมดสอดคล้องกับ "มุมมองโลก" ของฉันนี้ แต่ข้อสรุปหนึ่งดูเหมือนจะหลีกเลี่ยงไม่ได้: โฟลเดอร์ที่ได้รับอนุญาตd-w-------ไม่มีประโยชน์โดยสิ้นเชิง คำอธิบายเพิ่มเติม: คุณไม่สามารถแสดงรายการเนื้อหาของมันคุณไม่สามารถอ่านไฟล์ใด ๆ ที่คุณรู้ว่ามีอยู่ภายใน (เพราะคุณไม่สามารถแปลชื่อเป็น inodes) คุณไม่สามารถลบหรือเปลี่ยนชื่อหรือเพิ่มไฟล์เพราะอีกครั้งที่แปลว่าแปล และคุณไม่สามารถเพิ่มฮาร์ดลิงก์ได้ (เพราะฉันคาดเดาว่าจะหมายถึงการเพิ่มชื่อเช่นเดียวกับหมายเลขไอโหนดซึ่งหมายความว่าคุณจะรู้ทั้งคู่ซึ่งในทางกลับกันการคาดคะเนการละเมิดสิทธิ์ในการดำเนินการอีกครั้ง) . และแน่นอนถ้ามีเป็นไฟล์ในโฟลเดอร์ดังกล่าวหนึ่งแล้วคุณจะไม่สามารถลบโฟลเดอร์ที่ทั้งเพราะคุณไม่สามารถลบเนื้อหา ดังนั้น ... …


4
ค้นหาไดเรกทอรีที่ไม่มีไดเรกทอรีย่อย
ฉันกำลังเขียนสคริปต์คือ ksh จำเป็นต้องค้นหาชื่อไดเรกทอรีทั้งหมดภายใต้ไดเรกทอรีปัจจุบันซึ่งมีเฉพาะไฟล์เท่านั้นไม่ใช่ไดเรกทอรีย่อย ฉันรู้ว่าฉันสามารถใช้ls -alRและแยกวิเคราะห์เอาต์พุตแบบซ้ำ ๆ สำหรับตัวอักษรตัวแรกในฟิลด์แรก ( dสำหรับไดเรกทอรี) ฉันคิดว่าawkเป็นวิธีที่ดีที่สุดในการแยกวิเคราะห์และค้นหา ตัวอย่างเช่นls -alเอาต์พุตแบบง่ายในไดเร็กทอรีปัจจุบัน: drwxr-xr-x 22 af staff 748 18 Mar 22:21 . drwxr-xr-x 5 root admin 170 17 Mar 18:03 .. -rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public drwxr-xr-x 9 …
10 shell  find  directory  ls  ksh 

1
ทำไมขนาดของ“ จุด” ไฟล์“” เกิน 4096
วันนี้ฉันพบไดเรกทอรี "ว่าง" ที่มีขนาด 4MB ls -lahมันไม่ได้มีเนื้อหาที่มองเห็นดังนั้นฉันพยายาม นี่แสดงให้ฉันเห็นบางไฟล์ที่ซ่อนอยู่ (ไม่ใหญ่มาก) ค้นหาสาเหตุที่ทำให้ไดเรกทอรีมีขนาดใหญ่มากฉันพบว่าไฟล์ dot ( .) มีขนาด 3.9MB สิ่งที่ได้รับการจัดเก็บในไฟล์นั้น นั่นเป็นเพียงลิงค์ไปยังไดเรกทอรีเดียวกันใช่หรือไม่ นี่คือเอาต์พุตเชลล์ (ไม่ระบุชื่อ): -bash# more /proc/version Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007 -bash# pwd /data/foo/bar/tmp -bash# ls -lah total 4.1M drwxrwxrwx 3 …

6
ฉันจะใช้ค้นหาเฉพาะสำหรับไดเรกทอรีได้อย่างไร
พบไฟล์จำนวนมากที่อยู่ภายใต้ไดเรกทอรีย่อยต่างๆของ "Dropnot" $ locate Dropnot ฉันสามารถค้นหาเฉพาะตำแหน่งไดเรกทอรีด้วยได้locateหรือไม่ (ซึ่งไดเรกทอรี "Dropnot" อยู่ใน) ดังนั้นหากDropnotอยู่ใน/home/me/นั่นเป็นรายการเดียวที่ได้รับคืน ถ้าเป็นอย่างนั้นวิธีที่ง่ายที่สุด / สั้นที่สุดคืออะไร? โดยเฉพาะอย่างยิ่งผ่านการตั้งค่าสถานะหรือสัญลักษณ์แทนการ piping และ greping สำหรับมัน ฯลฯ แต่ฉันจะใช้ทุกอย่างเป็นตัวเลือก บางที Dropnot $ สำหรับการวางสายบางอย่าง? (แต่ไม่ได้ผล)
10 directory  locate 

2
มีวิธีที่ถูกต้องในการแสดงรายการไดเรกทอรีย่อยของไดเรกทอรีปัจจุบันหรือไม่?
ฉันสามารถค้นหาไดเรกทอรีย่อยของไดเรกทอรีโดย ls -d -- */ หรือ ls -l | grep "^d" แต่ทั้งคู่ดูเหมือนจะเป็นทางอ้อมและฉันคิดว่าจะมีวิธีมาตรฐานในการค้นหาเฉพาะไดเรกทอรี มีวิธีที่ถูกต้องในการทำเช่นนี้? และถ้าไม่เช่นนั้นสิ่งเหล่านี้จะนำไปสู่พฤติกรรมที่ไม่พึงประสงค์ในคดีขอบหรือไม่? (ลิงก์สัญลักษณ์ไดเรกทอรีที่ซ่อนอยู่ ฯลฯ )

2
ความแตกต่างระหว่าง rmdir และ rm -r
ฉันมักจะลบไดเรกทอรีโดยใช้rm : rm -r myDir อย่างไรก็ตามฉันตระหนักถึงคำสั่งอื่นrmdirซึ่งดูเหมือนว่าจะทำงานเช่นกัน: rmdir myDir อะไรคือความแตกต่างระหว่างสองคำสั่งนี้และเมื่อใดควรใช้แต่ละคำสั่ง
9 directory  rm  command 

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