Come faccio a far elencare le directory con una barra rovesciata?


12

La mia shell è bash. Come posso ottenere l'output di lsmostrare le directory con una barra rovesciata? Quando faccio lsnel tcshdà l'output desiderato. Come posso ottenere che ciò accada bashsenza usare alcun argomento?

per esempio.

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

7
La tua shell non è rilevante qui ... man lsquindi scorri verso il basso fino a-p
don_crissti,

è la -Fbandiera? Non lo uso mai, quindi non ricordo ...
Jeff Schaller

1
Con una barra rovesciata come da titolo o con una barra rovesciata (che ha più senso) come nel tuo esempio?
Gilles 'SO- smetti di essere malvagio' il

@don_crissti Vedi la mia modifica alla domanda.
CJ7,

@ CJ7 - che cos'è l' type lsoutput? Forse un alias?
don_crissti,

Risposte:


12

La soluzione più semplice (come già indicato da @don_crissti nei commenti) è:

ls -p

Puoi ottenere un effetto simile con:

ls -F

Ma questo aggiungerà anche altri indicatori:

Aggiungi un carattere a ciascun nome di file indicando il tipo di file. Inoltre, per i file regolari eseguibili, aggiungi *. Gli indicatori del tipo di file sono /per le directory, @per i collegamenti simbolici, |per i FIFO, =per i socket, >per le porte e niente per i file regolari.


Ovviamente, puoi far lseseguire la stringa ls -pdalla riga di comando con un alias:

alias ls='ls -p'

Questo è temporale e potrebbe essere cancellato unalias ls.
Probabilmente il tuo tcshha un alias attivo in atto.

Cosa che puoi fare inserendo il comando in ~/.bashrco ~/.bash_aliases.


Quest'ultimo pezzo ha attirato la mia attenzione. Non ho mai visto o sentito parlare di un ~/.bash_aliasesprima; solo ~/.bash_profilee / o ~.bashrc. È corretto?
Voci del

1
@ tjt263 È pratica comune inserire tutti gli alias in un file speciale proveniente da bashrc . I contenuti possono variare a seconda delle esigenze .

Per mantenere i colori:alias ls='ls --color=auto -p'
mkczyk

2

Puoi usare -F, ad es

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

Sai perché tcshmi sta dando l'output desiderato e bashnon lo è?
CJ7,

1
@ CJ7 Perché tcsh e bash usano file di configurazione diversi (con sintassi diversa). Presumibilmente hai già un alias simile nel tuo .cshrc.
Gilles 'SO- smetti di essere malvagio' il

Ho provato a creare un .bashrcfile nella mia directory home ma non ha funzionato
CJ7,

@ CJ7, hai riavviato la shell dopo aver apportato quella modifica?
Jochem Schulenklopper,

0

O

   ls --classify

O:

   ls --indicator-style=slash

Spiegazione

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

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

Le altre risposte coprono più o meno questo, ma preferisco le opzioni lunghe in stile GNU rispetto alle opzioni brevi in ​​stile BSD nelle risposte Stack Overflow poiché sono più autoesplicative e apprendibili / "memorizzabili" / "interiorizzabili".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.