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
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 ...
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.
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.
Je ne sais pas si cela est spécifique à la sortie de mon terminal, mais cela a fonctionné pour moi.
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.
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}"