Quelle est la signification de ls -d?

J'ai entré la page man de ls, l'input pour l'option -d est la suivante:

-d, – directory répertorie les inputs du directory au lieu du contenu, et ne déréférençant pas les liens symboliques

Donc, je pensais que ls -d affichera tous les directorys dans un directory donné. Cependant, je suis entré dans un directory et j'ai essayé deux commands différentes:

  1. get des directorys avec: ls -l | grep ^ d
    Celui-ci fonctionnait, les 7 directorys étant affichés

  2. get des directorys avec ls -d Cela n'affiche pas les 7 directorys, seulement un point "."

Je ne comprends pas si j'utilise l'option à tort ou si je ne comprends pas sa signification, quelle est la signification et l'utilisation réelle de l'option -d?

ls -d montre des informations sur un directory ou un lien symbolique – avec cette information étant (en termes simples) son path respectif. L'hypothèse logique est que d représente le directory , étant donné que c'est la définition la plus élémentaire dans la terminologie UNIX que j'ai rencontrée: directorys de lists.

Cela peut sembler superficiel pour ne pas être aussi utile; dites que vous résidez actuellement dans un directory avec 2 sous-directorys:

documents music

L'utilisation de ls documents sans options vous donnerait une list du contenu des documents comme vous l'avez indiqué correctement ci-dessus. L'utilisation des ls -d documents imprimera simplement le nom – puisque le path vers ce dossier, par rapport à l'endroit où vous résidez actuellement – est le même que son nom – documents ! Cela peut être étendu à ls -d $PWD/* (bien que quelque peu redondant dans son utilisation de base) qui affichera tous les files et dossiers, mais avec leurs directorys de travail (d'où le PWD – précédents directorys de travail).

Il a une fonction utile lorsqu'il est combiné avec l'opérateur * – ls -d */ affichera SEULEMENT les directorys à partir de votre directory de travail actuel.

En vous concentrant sur la partie de lien symbolique de la définition, si vous deviez utiliser ls -d ~ – une extension tilde -, le path du directory HOME actuel serait imprimé. Cela pourrait alors être utilisé avec des applications différentes (dépendant du operating system) et a un usage pratique; vous pouvez modifier votre instruction en ls -d ~your-username , ls -d ~another-username ou ls -d ~root et être fourni avec le path HOME pour ces users. Un autre exemple de ceci peut être vu dans l'environnement du server Apache, avec l'utilisation d'un nom d'user affichant de la même manière le path vers leur espace d'hébergement (leur directory HOME, relativement parlant).

Il y a plusieurs fonctions qui peuvent être utilisées en combinaison avec ceci, mais ce qui précède couvre la fonction principale derrière l'opérateur – en bref, -d est un opérateur pour afficher spécifiquement des informations de directory / path. Il y a un générateur de code sympa pour jouer avec la fonction ls (y compris certaines fonctionnalités -d) si vous voulez étudier plus loin: ls générateur de code .

Je ne suis pas sûr de la terminologie, mais ls -d ne fait que répertorier des informations sur la chose qui suit et rien de plus, c'est-à-dire qu'il ne développe pas les lists de directorys, donc:

 ls -ld /usr/bin 

va juste vous donner une ligne de sortie sur / usr / bin lui-même.

Et

 ls -ld * 

vous donnera simplement des informations sur chaque file ou directory dans le pwd mais ne développera pas non plus les directorys pour listr leur contenu.

Comme déjà mentionné, vous pouvez utiliser find pour listr les directorys et utiliser toujours ls -d si vous le souhaitez:

 find /usr/bin -type d -exec ls -ld {} \; 

c'est pour find tous les directorys sous / usr / bin au cas où ce n'est pas clair.

ls par lui-même, sans options ou quoi que ce soit, "listra le directory courant". Par défaut, "listr un directory" fait reference aux files qui y sont contenus.

Le drapeau -d change de ne pas listr les files dans le directory spécifié, mais de listr les informations sur le directory lui-même. Il ne s'agit pas, comme vous le pensiez à tort, de "directorys dans le directory courant". Il ne fait reference qu'à "le directory courant".

C'est pourquoi ls -d ne revient que . .