Jak skłonić ls do listy katalogów z końcowym ukośnikiem?

13

Moja skorupa jest bash. Jak mogę uzyskać wynik lspokazujący katalogi z końcowym ukośnikiem? Kiedy ja lsw tcshto daje pożądany wynik. Jak mogę to zrobić bashbez użycia argumentów?

na przykład.

bin/
lib/
src/
file1.txt
file2.txt
CJ7
źródło
7
Twoja skorupa nie ma tu znaczenia ... man lsprzewiń w dół do-p
don_crissti
czy to jest -Fflaga? Nigdy go nie używam, więc nie pamiętam ...
Jeff Schaller
1
Z końcowym ukośnikiem odwrotnym jak w tytule lub z ukośnikiem końcowym (co ma większy sens) jak w twoim przykładzie?
Gilles „SO- przestań być zły”
@don_crissti Zobacz moją edycję pytania.
CJ7
@ CJ7 - co to jest type lswyjście? Może alias?
don_crissti

Odpowiedzi:

13

Najprostszym rozwiązaniem (podanym już przez @don_crissti w komentarzach) jest:

ls -p

Możesz uzyskać podobny efekt dzięki:

ls -F

Ale to doda również kilka innych wskaźników:

Do każdej nazwy pliku dodaj znak wskazujący typ pliku. Ponadto w przypadku zwykłych plików wykonywalnych dołączaj *. Wskaźniki typu pliku dotyczą /katalogów, @dowiązań symbolicznych, |FIFO, =gniazd, >drzwi i nic dla zwykłych plików.


Oczywiście, można zrobić łańcuch lswykonać ls -pw linii poleceń z aliasu:

alias ls='ls -p'

To jest tymczasowe i można je usunąć unalias ls.
Prawdopodobnie masz tcshaktywny alias na swoim miejscu.

Co możesz zrobić, umieszczając polecenie w ~/.bashrclub ~/.bash_aliases.


źródło
Ten ostatni kawałek przykuł moją uwagę. Nigdy wcześniej nie widziałem ani nie słyszałem ~/.bash_aliases; tylko ~/.bash_profilei / lub ~.bashrc. Czy to jest poprawne?
głosy
1
@ tjt263 Powszechną praktyką jest umieszczanie wszystkich aliasów w specjalnym pliku pochodzącym z bashrc . Zawartość może się różnić w zależności od potrzeb .
Aby zachować kolory:alias ls='ls --color=auto -p'
mkczyk
2

Możesz użyć -F, np

$ /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
Michael Durrant
źródło
Czy wiesz, dlaczego tcshdaje mi pożądaną wydajność, a bashnie jest?
CJ7
1
@ CJ7 Ponieważ tcsh i bash używają różnych plików konfiguracyjnych (o różnej składni). Prawdopodobnie masz już podobny alias w swoim .cshrc.
Gilles „SO- przestań być zły”
Próbowałem utworzyć .bashrcplik w moim katalogu domowym, ale nie zadziałał
CJ7,
@ CJ7, czy zrestartowałeś powłokę po dokonaniu tej zmiany?
Jochem Schulenklopper
0

Zarówno

   ls --classify

Lub:

   ls --indicator-style=slash

Wyjaśnienie

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

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

Inne odpowiedzi mniej więcej to obejmują, ale wolę długie opcje w stylu GNU niż krótkie opcje w stylu BSD w odpowiedziach Przepełnienie stosu, ponieważ są one bardziej zrozumiałe i możliwe do nauczenia / „zapamiętalne” / „możliwe do internalizacji”.

Sridhar Sarnobat
źródło