¿Cómo hago para que ls enumere directorios con una barra diagonal final?

12

Mi caparazón es bash. ¿Cómo puedo obtener la salida de lsmostrar directorios con una barra diagonal final? Cuando lo haga ls, en tcshque da la salida deseada. ¿Cómo puedo lograr que esto ocurra bashsin usar ningún argumento?

p.ej.

bin/
lib/
src/
file1.txt
file2.txt
CJ7
fuente
77
Su caparazón no es relevante aquí ... man lsluego desplácese hacia abajo hasta-p
don_crissti
es la -Fbandera? Nunca lo uso, así que no puedo recordar ...
Jeff Schaller
1
¿Con una barra diagonal inversa según su título, o con una barra diagonal posterior (que tiene más sentido) según su ejemplo?
Gilles 'SO- deja de ser malvado'
@don_crissti Vea mi edición de la pregunta.
CJ7
@ CJ7: ¿cuál es la type lssalida? Tal vez un alias?
don_crissti

Respuestas:

12

La solución más simple (como ya ha sido dada por @don_crissti en los comentarios) es:

ls -p

Puede obtener un efecto similar con:

ls -F

Pero eso también agregará algunos otros indicadores:

Agregue un carácter a cada nombre de archivo que indique el tipo de archivo. Además, para los archivos normales que son ejecutables, agregue *. Los indicadores de tipo de archivo son /para directorios, @para enlaces simbólicos, |para FIFOs, =para sockets, >para puertas y nada para archivos normales.


Por supuesto, puede hacer que la cadena se lsejecute ls -pen la línea de comando con un alias:

alias ls='ls -p'

Eso es temporal y podría borrarse unalias ls.
Probablemente tcshtenga un alias activo en su lugar.

Lo que puedes hacer colocando el comando en ~/.bashrco ~/.bash_aliases.


fuente
Eso último me llamó la atención. Nunca he visto ni oído hablar de un ~/.bash_aliasesantes; solo ~/.bash_profiley / o ~.bashrc. ¿Es correcto?
voces
1
@ tjt263 Es una práctica común colocar todos los alias en un archivo especial de bashrc . El contenido puede variar según sus necesidades .
Para mantener los colores:alias ls='ls --color=auto -p'
mkczyk
2

Puede usar -F, p. Ej.

$ /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
fuente
¿Sabes por qué tcshme está dando la salida deseada y bashno?
CJ7
1
@ CJ7 Porque tcsh y bash usan diferentes archivos de configuración (con diferente sintaxis). Presumiblemente ya tienes un alias similar en tu .cshrc.
Gilles 'SO- deja de ser malvado'
Traté de hacer un .bashrcarchivo en mi directorio de inicio pero no funcionó
CJ7
@ CJ7, ¿reinició su shell después de hacer ese cambio?
Jochem Schulenklopper
0

Ya sea

   ls --classify

O:

   ls --indicator-style=slash

Explicación

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

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

Las otras respuestas cubren más o menos esto, pero prefiero las opciones largas de estilo GNU a las opciones cortas de estilo BSD en las respuestas de desbordamiento de pila, ya que son más autoexplicativas y aprendebles / "memorizables" / "internalizables".

Sridhar Sarnobat
fuente