GNU/Linux >> Tutoriels Linux >  >> Linux

Maîtrisez la commande Linux ls

Les ls La commande répertorie les fichiers sur un système POSIX. C'est une commande simple, souvent sous-estimée, non pas dans ce qu'elle peut faire (car elle ne fait vraiment qu'une chose), mais dans la façon dont vous pouvez en optimiser l'utilisation.

Parmi les 10 commandes de terminal les plus essentielles à connaître, l'humble ls la commande est dans les trois premières, car ls ne juste lister les fichiers, il vous donne des informations importantes à leur sujet. Il vous dit des choses comme qui possède un fichier ou un répertoire, quand chaque fichier a été perdu ou modifié, et même de quel type de fichier il s'agit. Et puis il y a sa fonction accessoire de vous donner une idée de l'endroit où vous vous trouvez, des objets à proximité qui traînent et de ce que vous pouvez en faire.

Si votre expérience avec ls est limité à tout ce que votre distribution lui attribue dans .bashrc , alors vous passez probablement à côté.

GNU ou BSD ?

Avant de regarder les pouvoirs cachés de ls , vous devez déterminer quel ls commande que vous exécutez. Les deux versions les plus populaires sont la version GNU, incluse dans les coreutils GNU package et la version BSD. Si vous utilisez Linux, vous avez probablement ls installée. Si vous utilisez BSD ou MacOS, vous avez la version BSD. Il existe des différences dont cet article tient compte.

Vous pouvez savoir quelle version est sur votre ordinateur avec le --version choix :

$ ls --version

Si cela renvoie des informations sur GNU coreutils, alors vous avez la version GNU. S'il renvoie une erreur, vous utilisez probablement la version BSD (exécutez man ls | head pour être sûr).

Vous devriez également rechercher les préréglages que votre distribution peut avoir en place. Les personnalisations des commandes du terminal sont fréquemment placées dans $HOME/.bashrc ou $HOME/.bash_aliases ou $HOME/.profile , et ils sont accomplis en aliasant ls à un ls plus complexe commande. Par exemple :

alias ls='ls --color'

Les préréglages fournis par les distributions sont très utiles, mais ils rendent difficile de discerner ce que ls fait par lui-même et ce que ses options supplémentaires offrent. Si jamais vous voulez exécuter ls et non l'alias, vous pouvez "échapper" la commande avec une barre oblique inverse :

$ \ls

Classer

Exécuter seul, ls répertorie simplement les fichiers dans autant de colonnes que peut contenir votre terminal :

$ ls ~/example
bunko        jdk-10.0.2
chapterize   otf2ttf.ff
despacer     overtar.sh
estimate.sh  pandoc-2.7.1
fop-2.3      safe_yaml
games        tt

Ce sont des informations utiles, mais tous ces fichiers se ressemblent fondamentalement sans la commodité des icônes pour indiquer rapidement ce qui est un répertoire, un fichier texte, une image, etc.

Utilisez le -F (ou --classer sous GNU) pour afficher des indicateurs après chaque entrée qui identifient le type de fichier dont il s'agit :

$ ls ~/example
bunko         jdk-10.0.2/
chapterize*   otf2ttf.ff*
despacer*     overtar.sh*
estimate.sh   pandoc@
fop-2.3/      pandoc-2.7.1/
games/        tt*

Avec cette option, les éléments répertoriés dans votre terminal sont classés par type de fichier en utilisant ce raccourci :

  • Une barre oblique (/ ) désigne un répertoire (ou "dossier").
  • Un astérisque (* ) désigne un fichier exécutable. Cela inclut un fichier binaire (code compilé) ainsi que des scripts (fichiers texte disposant d'une autorisation exécutable).
  • Un arobase (@ ) désigne un lien symbolique (ou "alias").
  • Un signe égal (= ) désigne une socket.
  • Sur BSD, un signe de pourcentage (% ) indique un voile blanc (une méthode de suppression de fichiers sur certains systèmes de fichiers).
  • Sur GNU, un crochet (> ) désigne une porte (communication inter-processus sur Illumos et Solaris).
  • Une barre verticale (| ) désigne un FIFO.

Une version plus simple de cette option est -p , qui différencie uniquement un fichier d'un répertoire.

Longue liste

Obtenir une "longue liste" de ls est si commun que de nombreuses distributions alias ll à ls -l . Le formulaire de liste longue fournit de nombreux attributs de fichier importants, tels que les autorisations, l'utilisateur propriétaire de chaque fichier, le groupe auquel appartient le fichier, la taille du fichier en octets et la date à laquelle le fichier a été modifié pour la dernière fois :

$ ls -l
-rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh
[...]

Si vous ne pensez pas en octets, ajoutez le -h drapeau (ou --humain sous GNU) pour traduire la taille des fichiers en une notation plus conviviale :

$ ls --human
-rwxrwx---. 1 seth users    455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth seth     662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20M Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth seth    6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth users    177 Nov 12  2018 html4mutt.sh

Vous pouvez voir un peu moins d'informations en affichant uniquement la colonne propriétaire avec -o ou uniquement la colonne de groupe avec -g :

$ ls -o
-rwxrwx---. 1 seth    455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth    662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth    20M Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth   6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth    177 Nov 12  2018 html4mutt.sh

Combinez les deux options pour n'afficher aucune.

Format de l'heure et de la date

Le format de liste longue de ls ressemble généralement à ceci :

-rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
-rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh

Les noms des mois ne sont pas faciles à trier, à la fois par calcul ou (selon que votre cerveau a tendance à préférer les chaînes ou les nombres entiers) par reconnaissance. Vous pouvez changer le format de l'horodatage avec le --time-style option plus le nom d'un format. Les formats disponibles sont :

  • plein iso (1970-01-01 21:12:00)
  • long-iso (1970-01-01 21:12)
  • iso (01-01 21:12)
  • locale (utilise vos paramètres régionaux)
  • posix-STYLE (remplacez STYLE par une définition locale)

Vous pouvez également créer un style personnalisé en utilisant la notation formelle de la date commande.

Trier par heure

Habituellement, le ls commande trie par ordre alphabétique. Vous pouvez faire en sorte qu'il soit trié en fonction du fichier qui a été modifié le plus récemment (le plus récent est répertorié en premier) avec le -t option.

Par exemple :

$ touch foo bar baz
$ ls
bar  baz  foo
$ touch foo
$ ls -t
foo bar baz

Type de liste

La sortie standard de ls équilibre la lisibilité avec l'efficacité de l'espace, mais parfois vous voulez que votre liste de fichiers soit organisée de manière spécifique.

Pour une liste de fichiers séparés par des virgules, utilisez -m :

ls -m ~/example
bar, baz, foo

Pour forcer un fichier par ligne, utilisez le -1 option (c'est le numéro un, pas un L minuscule):

$ ls -1 ~/bin/
bar
baz
foo

Pour trier les entrées par extension de fichier plutôt que par nom de fichier, utilisez -X (c'est un X majuscule):

$ ls
bar.xfc  baz.txt  foo.asc
$ ls -X
foo.asc  baz.txt  bar.xfc

Masquer le fouillis

Il y a quelques entrées dans certains ls des listes dont vous ne vous souciez peut-être pas. Par exemple, les métacaractères . et .. représentent "ici" et "un niveau en arrière", respectivement. Si vous êtes familier avec la navigation dans un terminal, vous savez probablement déjà que chaque répertoire se réfère à lui-même en tant que . et à son parent comme .. , vous n'avez donc pas besoin de le rappeler constamment lorsque vous utilisez le -a option pour afficher les fichiers cachés.

Pour afficher presque tous les fichiers cachés (le . et .. exclus), utilisez le -A choix :

$ ls -a
.
..
.android
.atom
.bash_aliases
[...]
$ ls -A
.android
.atom
.bash_aliases
[...]

Avec de nombreux bons outils Unix, il existe une tradition d'enregistrer les fichiers de sauvegarde en ajoutant un caractère spécial au nom du fichier en cours d'enregistrement. Par exemple, dans Vim, les sauvegardes sont enregistrées avec le ~ caractère ajouté au nom.

Ces types de fichiers de sauvegarde m'ont évité des erreurs stupides à plusieurs reprises, mais après des années à profiter du sentiment de sécurité qu'ils procurent, je ne ressens plus le besoin d'avoir des preuves visuelles de leur existence. Je fais confiance aux applications Linux pour générer des fichiers de sauvegarde (si elles prétendent le faire), et je suis heureux de croire qu'ils existent.

Pour masquer les fichiers de sauvegarde, utilisez -B ou --ignore-backups pour masquer les formats de sauvegarde courants (cette option n'est pas disponible dans BSD ls ):

$ ls
bar.xfc  baz.txt  foo.asc~  foo.asc
$ ls -B
bar.xfc  baz.txt  foo.asc

Bien sûr, le fichier de sauvegarde existe toujours; il est simplement filtré pour que vous n'ayez pas à le regarder.

GNU Emacs enregistre les fichiers de sauvegarde (sauf configuration contraire) avec un caractère dièse (# ) au début et à la fin du nom du fichier (#file# ). D'autres applications peuvent utiliser un style différent. Peu importe le modèle utilisé, car vous pouvez créer vos propres exclusions avec le --hide choix :

$ ls
bar.xfc  baz.txt  #foo.asc#  foo.asc
$ ls --hide="#*#"
bar.xfc  baz.txt  foo.asc

Répertorier les répertoires avec récursivité

Le contenu des répertoires n'est pas listé avec le ls commande sauf si vous exécutez ls spécifiquement sur ce répertoire :

$ ls -F 
example/  quux*  xyz.txt
$ ls -R
quux  xyz.txt

./example:
bar.xfc  baz.txt  #foo.asc#  foo.asc

Rendre le permanent avec un alias

Les ls command est probablement la commande utilisée le plus souvent au cours d'une session shell donnée. Ce sont vos yeux et vos oreilles, qui vous fournissent le contexte et confirment les résultats des commandes. Bien qu'il soit utile d'avoir beaucoup d'options, une partie de la beauté de ls est sa brièveté :deux caractères et la touche Retour, et vous savez exactement où vous êtes et ce qu'il y a à proximité. Si vous devez vous arrêter pour réfléchir (beaucoup moins taper) à plusieurs options différentes, cela devient moins pratique, donc généralement même les options les plus utiles sont laissées de côté.

La solution est d'aliaser votre ls afin que lorsque vous l'utilisez, vous obteniez les informations qui vous intéressent le plus.

Pour créer un alias pour une commande dans le shell Bash, créez un fichier dans votre répertoire personnel appelé .bash_aliases (vous devez inclure le point au début). Dans ce fichier, indiquez la commande pour laquelle vous souhaitez créer un alias, puis l'alias que vous souhaitez créer. Par exemple :

alias ls='ls -A -F -B --human --color'

Cette ligne amène votre shell Bash à interpréter le ls commande comme ls -A -F -B --human --color .

Vous n'êtes pas limité à redéfinir les commandes existantes. Vous pouvez créer vos propres alias :

alias ll='ls -l'
alias la='ls -A'
alias lh='ls -h'

Pour que les alias fonctionnent, votre shell doit savoir que les .bash_aliases fichier de configuration existe. Ouvrez le .bashrc fichier dans un éditeur (ou créez-le, s'il n'existe pas), et incluez ce bloc de code :

if [ -e $HOME/.bash_aliases ]; then
    source $HOME/.bash_aliases
fi

Chaque fois .bashrc est chargé (à chaque fois qu'un nouveau shell Bash est lancé), Bash chargera .bash_aliases dans votre environnement. Vous pouvez fermer et relancer votre session Bash ou simplement la forcer à le faire maintenant :

$ source ~/.bashrc

Si vous oubliez si vous avez aliasé une commande, le qui commande vous indique :

$ which ls
alias ls='ls -A -F -B --human --color'
        /usr/bin/ls

Si vous avez aliasé le ls commande à elle-même avec des options, vous pouvez remplacer votre propre alias à tout moment en faisant précéder ls avec une barre oblique inverse. Par exemple, dans l'exemple d'alias, les fichiers de sauvegarde sont masqués à l'aide de -B option, ce qui signifie qu'il n'y a aucun moyen de sauvegarder des fichiers avec le ls commande. Remplacez l'alias pour voir les fichiers de sauvegarde :

$ ls
bar  baz  foo
$ \ls
bar  baz  baz~  foo

Faites une chose et faites-la bien

Les ls La commande a un nombre impressionnant d'options, dont beaucoup sont de niche ou dépendent fortement du terminal que vous utilisez. Jetez un oeil à info ls sur les systèmes GNU ou man ls sur les systèmes GNU ou BSD pour plus d'options.

Vous pourriez trouver étrange qu'un système célèbre pour la prémisse que chaque outil "fait une chose et le fasse bien" alourdirait sa commande la plus courante avec 50 options. Mais ls ne fait qu'une chose :il liste les fichiers. Et avec 50 options pour vous permettre de contrôler la façon dont vous recevez cette liste, ls fait son travail très, très bien.


Linux
  1. Commande Linux mv

  2. Linux du command

  3. Commande IP Linux

  4. Commande cd Linux

  5. La commande locate sous Linux

La commande timer sous Linux

La commande Linux curl

Exemples essentiels de la commande ps sous Linux

Qu'est-ce que la commande kill sous Linux ?

Comprendre la commande time sous Linux

Utilisation de la commande grep sous Linux