Si ls répertorie le contenu du répertoire actuel, existe-t-il une commande similaire qui répertorie le contenu d'un répertoire non actuel, sans utiliser cd?
Après avoir ls
simplement tapé le chemin du répertoire que vous souhaitez lister et vous l'obtiendrez. Imaginez que vous êtes dans votre répertoire personnel mais que vous souhaitez en faire la liste /etc
. Il suffit de courir ls /etc
et vous l'aurez répertorié.
ls
fera cela.
La syntaxe de ls
est:
ls flags file-or-directory-names
Pour ce que j'appelle file-or-directory-names
, vous pouvez lister les fichiers dans le répertoire courant, pour avoir seulement certains fichiers listés. Par exemple, ls -l foo bar
listera des informations sur juste foo
et bar
(sous forme longue, comme je l'ai donné le -l
drapeau). ls baz*go
répertorie tous les fichiers dont les noms commencent par baz
et se terminent par go
(le cas échéant).
Mais lorsque vous donnez un nom de répertoire à ls
, il répertorie le contenu de ce répertoire au lieu du répertoire actuel.
Donc, pour lister le contenu de /var/log
, vous exécuteriez simplement:
ls /var/log
Si vous donnez un chemin relatif pour le répertoire - c'est-à-dire un chemin qui ne commence pas par un - /
alors il recherchera ce répertoire dans le répertoire courant (tout comme il recherche des fichiers). Mais il répertoriera toujours le contenu du répertoire, comme vous le souhaitez.
En remarque, vous constaterez parfois que vous ne souhaitez pas répertorier le contenu d'un répertoire, mais simplement répertorier le répertoire de la même manière qu'un fichier serait répertorié. Pour ce faire, vous pouvez passer le -d
drapeau. Par exemple, cela montre /var/log
sous forme longue (pas son contenu , mais /var/log
lui-même):
ls -ld /var/log
ls
n'est pas responsable de l'extensionbaz*go
à tous les fichiers qui commencentbaz
et se terminent pargo
- c'est le shell qui fait cela.ls baz*go
est un exemple dels
réception (potentiellement) de plusieurs arguments pourfile-or-directory-names
(et de cette manière est similaire àls foo bar
).