`ls - ไดเรกทอรี 'หมายถึงอะไร


17

ในรุ่น Ubuntu ของฉันชาย ls มีข้อมูลต่อไปเกี่ยวกับ - ไดเรกทอรี:

list directory entries instead of contents, and do not dereference symbolic links

ดังนั้นฉันสับสนเล็กน้อยว่ามันทำงานอย่างไร ฉันใช้คำสั่งls --directoryและฉันคาดหวังรายการที่มีไดเรกทอรีทั้งหมด แต่ฉันได้รับ.

ดังนั้นls --directoryหรือls -dทำอะไร?

คำตอบ:


24
$ man ls
...
-d, --directory
              list directories themselves, not their contents

ไดเรกทอรีปัจจุบันถูกแสดง.เพื่อให้ls -dเป็นรายการ

ไดเรกทอรีภายในไดเรกทอรีปัจจุบันเป็นเนื้อหาของไดเรกทอรีและดังนั้นจึงไม่แสดงพร้อมตัวเลือกนี้

ฉันใช้-dตัวเลือกในนามแฝงเพื่อแสดงไฟล์และไดเรกทอรีที่ซ่อนอยู่

alias l.='ls -dC .* --color'

หากไม่มี-dนี่จะแสดงรายการเนื้อหาของไดเรกทอรีที่ซ่อนอยู่ด้วยซึ่งไม่ใช่สิ่งที่ฉันต้องการ

การใช้งานอื่นคือเมื่อฉันต้องการดูข้อมูลเมตาของไดเรกทอรีโดยใช้-lตัวเลือกไม่ใช่เนื้อหา:

$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar  1 23:10 playground

หากคุณต้องการรายชื่อของไดเรกทอรีในไดเรกทอรีปัจจุบันคุณสามารถใช้

ls -d */

ls -dC .* --colorยังแสดงรายการไฟล์ที่ซ่อนไม่เพียงแค่ไดเรกทอรี
โป Chorro

1
ใช่ @PauChorro ที่จริงฉันพูดในคำตอบของฉัน ฉันใช้เพื่อแสดงไฟล์และไดเรกทอรีที่ซ่อนอยู่ทั้งหมด
Zanna

1
@PauChorro ฉันเพิ่มวิธีในการแสดงรายการเฉพาะไดเรกทอรี
Zanna

1
ในรุ่นอูบุนตูของฉันมีข้อมูลต่อไปนี้:man ls list directory entries instead of contents, and do not derefer‐ ence symbolic linksดังนั้นในเวอร์ชั่นของคุณคำอธิบายที่ดีกว่าคืออะไร
โป Chorro

1
@ Pilot6 มันจะแสดงรายการไฟล์ด้วย
Zanna

11

การใช้lsเฉพาะกับ-dไร้ประโยชน์เกือบ มันให้ข้อมูลเกี่ยวกับไดเรกทอรีเอง มันไม่ได้แสดงรายการเนื้อหา

นั่นคือเหตุผลที่คุณไม่เห็นรายการไดเรกทอรี ไดเรกทอรีที่คุณคาดว่าจะเห็นคือ "เนื้อหา" ของไดเรกทอรีปัจจุบัน

หากคุณทำงานเพียงแค่มันแสดงให้เห็นไดเรกทอรีปัจจุบันโดยls -d.

ถ้าทำให้ความรู้สึกที่เรียกใช้งานด้วยปุ่มอื่น ๆ -lเช่น

ls -ld จะแสดงสิทธิ์ของไดเรกทอรีปัจจุบัน

pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar  4 12:14 .

คุณยังสามารถดูการอนุญาตของไดเรกทอรีอื่น ๆ เช่น

ls -ld /bin

pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin

หากคุณทำงานls -lโดยไม่มี-dคุณจะมีรายการสิทธิ์ทั้งหมดสำหรับไฟล์และโฟลเดอร์ในไดเรกทอรีปัจจุบัน หากคุณไม่ต้องการมันเป็นตัวอย่างที่ดีสำหรับls -ldการใช้งาน

คุณสามารถแสดงรายการไดเรกทอรีในไดเรกทอรีปัจจุบันได้

ls -d */

6

ใช้ด้วยตัวเองค่อนข้างไร้ประโยชน์เพราะไม่มีพารามิเตอร์มันผลตอบแทนเสมอls -d .หลังจากที่คุณระบุพารามิเตอร์มันสมเหตุสมผลแล้ว ตัวอย่างเช่นหากชื่อผู้ใช้ของคุณคือrickและคุณต้องการที่จะเห็นไดเรกทอรีทั้งหมดในการใช้งานที่บ้านของคุณ:

$ ls -d /home/rick/*/
/home/rick/AAC/        /home/rick/EnhanceIO/         /home/rick/silentcast/
/home/rick/assembly/   /home/rick/EnhanceIO-master/  /home/rick/Templates/
/home/rick/bin/        /home/rick/log/               /home/rick/test/
/home/rick/Desktop/    /home/rick/Music/             /home/rick/tmpe/
/home/rick/Documents/  /home/rick/Pictures/          /home/rick/Videos/
/home/rick/Downloads/  /home/rick/Public/

5

ให้ฉันอธิบายด้วยตัวอย่าง:

  1. ls: รายการเนื้อหาของไดเรกทอรี

  2. ls -dหรือls --directory: ทำรายการไดเรกทอรีด้วยตนเองไม่ใช่เนื้อหา

ตัวอย่าง:

ls -d android-sdk-linux/

# result
android-sdk-linux/

ls android-sdk-linux/

# result
add-ons  build-tools  platforms  platform-tools  SDK Readme.txt  temp  tools

กรณีของคุณls -dนี้กล่าวไปยังรายการเท่านั้นแสดงให้ฉันไดเรกทอรีฉันอยู่ในเนื้อหาไม่ได้ (เช่น.ในแง่ลินุกซ์) .ดังนั้นผลที่ได้คือ:

แต่ถ้าคุณได้กล่าวว่า: แล้วคุณจะดูทั้งหมดที่มีอยู่ในไดเรกทอรีปัจจุบันls.


4

ls -dรายการไดเรกทอรีพวกเขาด้วยตนเองแทนเนื้อหาของพวกเขา ไฟล์ถูกแสดงตามปกติ ดูman lsคำอธิบายของตัวเลือกทั้งหมด

. เป็นไดเรกทอรีที่เป็นของตนเองเหมือนกับที่คุณใช้เมื่อเรียกใช้คำสั่งจากไดเรกทอรีปัจจุบัน ./runscript.sh

..เป็นพาเรนต์ไดเร็กทอรีพาเรนต์ไปยัง directore ปัจจุบันเช่นเดียวcd ..กับการย้ายที่ขั้นตอนขึ้นไปในลำดับชั้นไดเร็กทอรี

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