Comment obtenir ls pour répertorier les répertoires avec une barre oblique finale?

12

Ma coquille est bash. Comment puis-je obtenir la sortie de lspour afficher les répertoires avec une barre oblique finale? Quand je fais lsen tcshdonne la sortie désirée. Comment puis-je obtenir que cela se produise bashsans utiliser d'arguments?

par exemple.

bin/
lib/
src/
file1.txt
file2.txt
CJ7
la source
7
Votre shell n'est pas pertinent ici ... man lspuis -p
faites
est-ce le -Fdrapeau? Je ne l'utilise jamais, donc je ne me souviens pas ...
Jeff Schaller
1
Avec une barre oblique inverse selon votre titre, ou avec une barre oblique finale (ce qui est plus logique) selon votre exemple?
Gilles 'SO- arrête d'être méchant'
@don_crissti Voir ma modification de la question.
CJ7
@ CJ7 - quelle est la type lssortie? Peut-être un alias?
don_crissti

Réponses:

12

La solution la plus simple (comme déjà donnée par @don_crissti dans les commentaires) est:

ls -p

Vous pouvez obtenir un effet similaire avec:

ls -F

Mais cela ajoutera également d'autres indicateurs:

Ajoutez un caractère à chaque nom de fichier indiquant le type de fichier. En outre, pour les fichiers réguliers exécutables, ajoutez-les *. Les indicateurs de type de fichier /concernent les répertoires, les @liens symboliques, les |FIFO, les =sockets, les >portes et rien pour les fichiers normaux.


Bien sûr, vous pouvez faire lsexécuter la chaîne ls -psur la ligne de commande avec un alias:

alias ls='ls -p'

C'est temporel et pourrait être effacé avec unalias ls.
Votre tcshalias est probablement en place.

Ce que vous pouvez faire en plaçant la commande dans ~/.bashrcou ~/.bash_aliases.


la source
Ce dernier morceau a attiré mon attention. Je n'ai jamais vu ni entendu parler d'un ~/.bash_aliasesavant; uniquement ~/.bash_profileet / ou ~.bashrc. Est-ce correct?
voix
1
@ tjt263 Il est courant de placer tous les alias dans un fichier spécial provenant de bashrc . Le contenu peut varier en fonction de vos besoins .
Pour garder les couleurs:alias ls='ls --color=auto -p'
mkczyk
2

Vous pouvez utiliser -F, par exemple

$ /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
la source
Savez-vous pourquoi tcshme donne la sortie souhaitée et bashnon?
CJ7
1
@ CJ7 Parce que tcsh et bash utilisent des fichiers de configuration différents (avec une syntaxe différente). Vous avez probablement déjà un alias similaire dans votre .cshrc.
Gilles 'SO- arrête d'être méchant'
J'ai essayé de créer un .bashrcfichier dans mon répertoire personnel, mais cela n'a pas fonctionné
CJ7
@ CJ7, avez-vous redémarré votre shell après avoir effectué ce changement?
Jochem Schulenklopper
0

Soit

   ls --classify

Ou:

   ls --indicator-style=slash

Explication

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

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

Les autres réponses couvrent plus ou moins cela, mais je préfère les options longues de style GNU aux options courtes de style BSD dans les réponses Stack Overflow car elles sont plus explicites et apprennent / "mémorisables" / "internalisables".

Sridhar Sarnobat
la source