web-dev-qa-db-fra.com

Comment afficher les en-têtes de colonne pour la commande 'ls -l' sous unix / linux?

Je souhaite afficher tous les en-têtes de colonne lorsque je tape ls -l commande dans bash Shell sous unix/linux

Lorsque nous tapons ls -ltr à l'invite de commande, nous obtenons quelque chose comme ceci.

-r--r--r--  2   makerpm   root   1898   Jan 28 14:52   sample3
-r--r--r--  2   makerpm   root   1898   Jan 28 14:52   sample1

Ce que je veux, c'est de savoir si ls a des options à afficher avec les en-têtes de colonne:

File_Permissions  Owner Group   Size   Modified_Time  Name
-r--r--r--  2  makerpm   root   1898   Jan 28 14:52   sample3
-r--r--r--  2  makerpm   root   1898   Jan 28 14:52   sample1
17
sunil_rbc

Non, il n'y a pas une telle option dans ls.

Vous pouvez cependant l'ajouter avec quelque chose comme:

alias ll="ls -l | sed '1iFile_Permissions Owner Group Size Modified_Time Name'"

Ll affichera alors le résultat de ls -l avec un en-tête. Mais cela ne semble pas bon car il n'est pas aligné sur les colonnes ...

10
Colin Pitrat

La dernière réponse en utilisant sed était lisse, mais malheureusement, si vous avez ajouté de la couleur à votre sortie (ce que la plupart des gens font), cela supprime toutes les couleurs. Je voudrais suggérer une meilleure façon, et ironiquement, plus simple aussi.

Tout d'abord, mon .bashrc UTILISÉ pour avoir les éléments suivants:

 enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
fi

alias ls='ls -AFhls --color --group-directories-first'

Pour être honnête, vous n'avez pas besoin de la partie dircolors, c'est juste un petit supplément que j'utilise, vous pourriez avoir quelque chose d'aussi simple que:

alias ls='ls --color=auto'

Je voulais aussi des en-têtes de colonne, je l'ai recherché sur Google et je me suis retrouvé ici. Cependant, après avoir essayé ce que l'utilisateur précédent a suggéré, avec sed et réalisant que tout était blanc, et mes couleurs ont toutes disparu.

C'est alors que j'ai essayé quelque chose de différent dans mon fichier bashrc, et cela a fonctionné.

Simplement alias ls, écho d'abord, puis placez un point-virgule, puis votre commande ls. Mon fichier .bashrc a maintenant la ligne suivante.

alias ls='echo "Dir Size|Perms|Link Count|Owner|Group|Size|Mod. Time|Name"; ls -AFhls --color --group-directories-first'

Lorsque vous le faites de cette façon, en utilisant l'écho au lieu de sed, toutes les couleurs continuent de fonctionner.

5
PyTis

exa est un remplacement/amélioration de ls. Si vous transmettez les arguments -lh avec exa, il inclura une ligne d'en-tête affichant les noms des colonnes comme ceci:

exa -lh

Exemple de sortie:

Permissions Size User     Date Modified Name
.rwx------    19 username 29 Sep 11:25  dont_cra.sh
drw-r-----     - username 29 Sep 11:26  f1
.rw-r--r--@ 811k username 29 Sep 11:25  row_count.dat
.rw-r--r--    54 username 29 Sep 11:25  some_text.txt

Vous pouvez configurer un alias dans .bashrc qui remplace ls par exa.

5
Bart Schuijt

Je ne sais pas si cela est spécifique à la sortie de mon terminal, mais cela a fonctionné pour moi.

enter image description here

Et c'est la sortie qu'elle donne. Comme vous pouvez le voir, il conserve la couleur en utilisant cette méthode. Assurez-vous simplement de conserver le ${1} variable entre guillemets afin que les fichiers et répertoires avec des espaces dans le nom ne provoquent pas d'erreur.

enter image description here

Voici le code pour que vous puissiez copier et coller pour les tests.

long_ls() {

local VAR="Permissions|Owner|Group|Size|Modified|Name"

if [ ! "${1}" ]; then
   echo -e "$VAR" | column -t -s"|" && ls -l
else
   echo -e "$VAR" | column -t -s"|" && ls -l "${1}"
fi

}

alias lls=$"long_ls ${1}"
2
Yokai