Làm thế nào để có được ls để liệt kê các thư mục với dấu gạch chéo phía trước?


12

Vỏ của tôi là bash. Làm cách nào tôi có thể nhận được kết quả đầu ra lsđể hiển thị các thư mục với dấu gạch chéo phía trước? Khi tôi làm lstrong tcshnó cho đầu ra mong muốn. Làm thế nào tôi có thể có được điều này xảy ra bashmà không sử dụng bất kỳ đối số?

ví dụ.

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

7
Vỏ của bạn không liên quan ở đây ... man lssau đó cuộn xuống-p
don_crissti 23/2/2016

Có phải là -Fcờ không? Tôi không bao giờ sử dụng nó, vì vậy tôi không thể nhớ ...
Jeff Schaller

1
Với dấu gạch chéo ngược theo tiêu đề của bạn hoặc bằng dấu gạch chéo (có ý nghĩa hơn) theo ví dụ của bạn?
Gilles 'SO- ngừng trở nên xấu xa'

@don_crissti Xem chỉnh sửa của tôi cho câu hỏi.
CJ7

@ CJ7 - type lsđầu ra là gì? Có lẽ là một bí danh?
don_crissti

Câu trả lời:


12

Giải pháp đơn giản nhất (như đã được @don_crissti đưa ra trong các bình luận) là:

ls -p

Bạn có thể nhận được một hiệu ứng tương tự với:

ls -F

Nhưng điều đó cũng sẽ thêm một số chỉ số khác:

Nối một ký tự cho mỗi tên tệp cho biết loại tệp. Ngoài ra, đối với các tệp thông thường có thể thực thi được, hãy nối thêm *. Các chỉ báo loại tệp /dành cho các thư mục, @cho các liên kết tượng trưng, |cho FIFO, =cho ổ cắm, >cho cửa ra vào và không có gì cho các tệp thông thường.


Tất nhiên, bạn có thể làm cho chuỗi lsthực thi ls -ptrên dòng lệnh bằng một bí danh:

alias ls='ls -p'

Đó là tạm thời và có thể được xóa với unalias ls.
Có lẽ bạn tcshcó một bí danh hoạt động tại chỗ.

Mà bạn có thể làm bằng cách đặt lệnh trong ~/.bashrchoặc ~/.bash_aliases.


Đó là chút cuối cùng thu hút sự chú ý của tôi. Tôi chưa bao giờ nhìn thấy hoặc nghe nói về một ~/.bash_aliasestrước đây; chỉ ~/.bash_profilevà / hoặc ~.bashrc. Nó có đúng không?
tiếng nói

1
@ tjt263 Đó là một thực tế phổ biến để đặt tất cả các bí danh trong một tệp đặc biệt có nguồn gốc từ bashrc . Các nội dung có thể thay đổi tùy thuộc vào nhu cầu của bạn .

Để giữ màu:alias ls='ls --color=auto -p'
mkchot

2

Bạn có thể sử dụng -F, vd

$ /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

Bạn có biết tại sao tcshlại cho tôi đầu ra mong muốn và bashkhông?
CJ7

1
@ CJ7 Vì tcsh và bash sử dụng các tệp cấu hình khác nhau (với cú pháp khác nhau). Bạn có lẽ đã có một bí danh tương tự trong của bạn .cshrc.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đã thử tạo một .bashrctệp trong thư mục nhà của mình nhưng nó không hoạt động
CJ7

@ CJ7, bạn đã khởi động lại vỏ của mình sau khi thực hiện thay đổi đó chưa?
Joool Schulenklopper

0

Hoặc

   ls --classify

Hoặc là:

   ls --indicator-style=slash

Giải trình

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

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

Các câu trả lời khác ít nhiều bao hàm điều này, nhưng tôi thích các tùy chọn dài kiểu GNU hơn các tùy chọn ngắn kiểu BSD trong các câu trả lời Stack Overflow vì chúng dễ giải thích hơn và có thể học được / "dễ nhớ" / "có thể hiểu được".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.