รับ ls เพื่อแสดงรายการไดเร็กตอรี่ด้วยเครื่องหมายสแลชต่อท้ายได้อย่างไร?


13

bashเปลือกของฉันคือ ฉันจะได้รับผลลัพธ์ของlsการแสดงไดเรกทอรีที่มีเครื่องหมายสแลชต่อท้ายได้อย่างไร? เมื่อฉันทำlsในtcshจะให้ผลลัพธ์ที่ต้องการ ฉันจะทำให้เรื่องนี้เกิดขึ้นได้อย่างไรbashโดยไม่ใช้ข้อโต้แย้งใด ๆ

เช่น.

bin/
lib/
src/
file1.txt
file2.txt

7
เชลล์ของคุณไม่เกี่ยวข้องที่นี่ ... man lsจากนั้นเลื่อนลงมาที่-p
don_crissti

เป็น-Fธงไหม ฉันไม่เคยใช้มันดังนั้นฉันจำไม่ได้ ...
Jeff Schaller

1
ด้วยเครื่องหมายแบ็กสแลชต่อท้ายตามชื่อเรื่องของคุณหรือด้วยเครื่องหมายสแลชต่อท้าย (ซึ่งเหมาะสมกว่า) ตามตัวอย่างของคุณ?
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

@don_crissti ดูการแก้ไขคำถามของฉัน
CJ7

@ CJ7 - type lsเอาท์พุทคืออะไร? อาจเป็นนามแฝง
don_crissti

คำตอบ:


13

วิธีที่ง่ายที่สุด (ตามที่ได้รับแล้วโดย @don_crissti ในความคิดเห็น) คือ:

ls -p

คุณสามารถได้รับผลกระทบที่คล้ายกันด้วย:

ls -F

แต่นั่นจะเพิ่มตัวบ่งชี้อื่น ๆ ด้วย:

ต่อท้ายอักขระแต่ละชื่อไฟล์ที่ระบุประเภทไฟล์ *นอกจากนี้สำหรับไฟล์ปกติที่มีปฏิบัติการผนวก ตัวบ่งชี้ประเภทไฟล์/สำหรับไดเรกทอรี@ลิงก์สัญลักษณ์ |สำหรับ FIFO =สำหรับซ็อกเก็ต>สำหรับประตูและไม่มีอะไรสำหรับไฟล์ปกติ


แน่นอนคุณสามารถทำให้สตริงlsดำเนินการls -pบนบรรทัดคำสั่งด้วยนามแฝง:

alias ls='ls -p'

นั่นเป็นเรื่องชั่วคราวและอาจถูกลบunalias lsได้
อาจเป็นไปtcshได้ว่าคุณมีนามแฝงที่ใช้งานอยู่

ซึ่งคุณสามารถทำโดยการวางคำสั่งในหรือ~/.bashrc~/.bash_aliases


บิตสุดท้ายนั้นดึงดูดความสนใจของฉัน ฉันไม่เคยเห็นหรือได้ยินมา~/.bash_aliasesก่อน เท่านั้นและ~/.bash_profile / หรือ ~.bashrcถูกต้องหรือไม่
เสียง

1
@ tjt263 มันเป็นเรื่องธรรมดาที่จะวางนามแฝงทั้งหมดในแฟ้มพิเศษที่มาจาก bashrc เนื้อหาอาจแตกต่างกันขึ้นอยู่กับความต้องการของคุณ

เพื่อให้สี:alias ls='ls --color=auto -p'
mkczyk

2

คุณสามารถใช้ -F เช่น

$ /bin/ls -F
-/                                 diesel_folks                 grub                     presidents             user_mailer/
0/                                 dmStaffing/                  HJJJH/                   prime_scenarios   
...
# I'm using /bin/ls to make sure I run my system ls 
# (I actually have it aliased to add options automatically normally)
#
# Just read about your no argument requirement
# So you too could alias it, i.e.

alias ls='ls -F'

# Put it in your `.bashrc` or `.bash_aliases` file

คุณรู้หรือไม่ว่าเหตุใดจึงtcshให้ผลลัพธ์ที่ฉันต้องการและbashไม่ใช่
CJ7

1
@ CJ7 เนื่องจาก tcsh และ bash ใช้ไฟล์การตั้งค่าที่แตกต่างกัน (มีไวยากรณ์ต่างกัน) .cshrcคุณคงจะมีนามแฝงที่คล้ายกันในของคุณ
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

ฉันพยายามสร้าง.bashrcไฟล์ในโฮมได
เร็

@ CJ7 คุณทำการรีสตาร์ทเชลล์หลังจากทำการเปลี่ยนแปลงเหรอ?
Jochem Schulenklopper

0

ทั้ง

   ls --classify

หรือ:

   ls --indicator-style=slash

คำอธิบาย

   -F, --classify
          append indicator (one of */=>@|) to entries

   -p, --indicator-style=slash
          append / indicator to directories

คำตอบอื่น ๆ ครอบคลุมมากกว่าหรือน้อยกว่านี้ แต่ฉันชอบตัวเลือกแบบยาวของ GNU มากกว่าตัวเลือกแบบสั้นสไตล์ BSD ในคำตอบ Stack Overflow เนื่องจากมีคำอธิบายที่อธิบายตนเองและเรียนรู้ได้ดีกว่า / "memorizable" / "internalizeable"

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