86 votes

Différence entre les commandes terminales 'dir' et 'ls' ?

J'ai essayé de trouver la différence entre l'utilisation de la fonction dir et ls dans le terminal. Je sais ls est la méthode traditionnelle d'UNIX pour visualiser les fichiers d'un répertoire, et que dir est l'équivalent de l'invite de commande de Windows, mais les deux commandes fonctionnent dans le terminal.

Si je tape dans dir il affiche les fichiers et les dossiers du répertoire, et si je tape ls il fait la même chose, mais avec une mise en évidence du contenu. Les deux commandes acceptent des options (i.e. ls -a et dir -a Les deux renvoient tous les fichiers et dossiers et les fichiers cachés.

Alors, quelqu'un sait-il quelle est la différence et pourquoi les deux dir et ls sont utilisés ?

80voto

Rinzwind Points 270388

dir et ls font partie de coreutils et dir est presque identique à ls mais avec des options par défaut différentes.

Les utilitaires de base GNU sont les utilitaires de base de fichiers, Shell et de manipulation de texte du système d'exploitation GNU. Ce sont les utilitaires de base qui sont censés exister sur chaque système d'exploitation.

info dir dit :

dir est équivalent à ls -C -b c'est-à-dire que, par défaut, les fichiers sont listés dans des colonnes, triés verticalement, et les caractères spéciaux sont représentés par des séquences d'échappement backslash.

Oh et il y a aussi vdir ! info vdir dit :

vdir est équivalent à ls -l -b c'est-à-dire que, par défaut, les fichiers sont sont listés au format long et les caractères spéciaux sont représentés par des des séquences d'échappement de type backslash.

Très probablement dir existe pour des raisons de rétrocompatibilité ou pour des raisons historiques.

5voto

Je serais enclin à penser que dir est-ce qu'il y a juste pour le retour en arrière compatibilité ascendante .

De GNU Coreutils :

dir est équivalent à ls -C -b ; c'est-à-dire que par défaut, les fichiers sont listés en colonnes, triés verticalement, et les caractères spéciaux sont représentés par des séquences d'échappement backslash. par des séquences d'échappement backslash.

Au fait, ls ne colorie pas la sortie par défaut : c'est parce que la plupart des distros aliasent ls a ls --color=auto sur /etc/profile.d . Pour un test, tapez unalias ls alors essayez ls : il sera incolore.

Source : Renan 's réponse a Quelle est la différence entre "dir" et "ls" ? ?

3voto

user2394284 Points 265

En cas de doute, comparez type ls vs type dir (voir aussi Différence entre ls et la ) :

$ type dir
dir is aliased to `ls -l'

$ type ls
ls is aliased to `_ls'

$ type _ls
_ls is a function
_ls ()
{
    local IFS=' ';
    command ls $LS_OPTIONS ${1+"$@"}
}
$ echo command ls $LS_OPTIONS ${1+"$@"}
command ls -N --color=tty -T 0

La différence se résume à des options différentes pour ls dans mon cas --color=tty serait le plus visible, votre système peut être différent.

2voto

Francisco Valdez Points 185

Réponse courte : Aucune, dir est le même code source que ls , ls binaire ont --color par défaut. (1 ligne de code diff)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X