Hemos estado buscando en todo el mundo online y así tener para ti la respuesta para tu duda, si tienes alguna duda déjanos la pregunta y contestaremos sin falta, porque estamos para servirte.
Solución:
dir
y ls
son parte de coreutils
y dir
es casi lo mismo que ls
, solo con diferentes opciones predeterminadas.
Las GNU Core Utilities son las utilidades básicas de manipulación de archivos, shell y texto del sistema operativo GNU. Estas son las utilidades principales que se espera que existan en todos los sistemas operativos.
info dir
dice:
dir
es equivalente als -C -b
; es decir, de forma predeterminada, los archivos se enumeran en columnas, ordenados verticalmente, y los caracteres especiales se representan mediante secuencias de escape con barra invertida.
Oh y también hay vdir
! info vdir
dice:
vdir
es equivalente als -l -b
; es decir, de forma predeterminada, los archivos se enumeran en formato largo y los caracteres especiales se representan mediante secuencias de escape con barra invertida.
Más probable dir
existe por compatibilidad con versiones anteriores o por razones históricas.
La relación entre ls
y dir
ls
y dir
son programas separados que se comportan de manera similar. Como se explica y se hace referencia a continuación, el propósito de dir
es proporcionar un comando como ls
cuya salida no varía en función de si va o no a un terminal. Para lograr esto de manera útil, dir
debe formatear su salida de una manera que sea razonable y útil tanto para ver en una terminal como para escribir en un archivo o tubería.
Hay dos conceptos erróneos comunes sobre dir
:
- Mucha gente cree
dir
es un alias dels
, Pero ese no es el caso. Ninguno de los comandos es un alias del otro y, de forma predeterminada, en Ubuntu,dir
no es un alias en absoluto.ls
ydir
son proporcionados por ejecutables separados, no idénticos. - Mucha gente cree
dir
existe por razones históricas oscuras o para proporcionar compatibilidad con algún estándar u otro sistema operativo. Ese tampoco es el caso.ls
se comporta de la manera que lo hace por compatibilidad.dir
, que no tiene que ser compatible porque no es un comando estándar de Unix, se comporta de una manera alternativa que los desarrolladores consideran valiosa por derecho propio y posiblemente incluso preferible.
OK, pero exactamente como ls
y dir
¿diferir de?
Ambos ls
y dir
enumerar el contenido de los directorios. Dos diferencias específicas en sus comportamientos predeterminados los distinguen.
-
Cuando su salida estándar es un terminal,
ls
enumera los nombres de archivo en columnas ordenadas verticalmente (comols -C
). Cuando su salida estándar no es una terminal (por ejemplo, un archivo o tubería),ls
enumera los nombres de archivo uno por línea (comols -1
).Si su salida estándar es un terminal o no,
dir
enumera los nombres de archivo en columnas ordenadas verticalmente (comols -C
).Para ambos
ls
ydir
, estos valores predeterminados pueden ser anulados por el--format=
bandera y por la-1
,-C
,-m
, y-x
banderas, que abrevian particular--format=
opciones. Consulte 10.1.4 Formato de salida general en el manual de referencia de GNU coreutils para obtener más detalles. -
Cuando su salida estándar es un terminal y un nombre de archivo que se lista contiene caracteres de control,
ls
huellas dactilares?
en lugar de cada carácter de control (comols -q
). Cuando su salida estándar no es un terminal,ls
imprime los caracteres de control tal cual (comols --show-control-chars
).Si su salida estándar es un terminal o no, cuando
dir
encuentra un carácter de control o cualquier otro carácter que se interpretaría especialmente si se ingresara en un shell, imprime secuencias de barra invertida para los caracteres. Esto incluye incluso caracteres relativamente comunes como espacios. Por ejemplo,dir
mostrará una entrada llamadaDocuments backups
comoDocuments backups
. Esto es comols -b
.Para ambos
ls
ydir
, estos valores predeterminados pueden ser anulados por los indicadores enumerados en 10.1.7 Formateo de los nombres de archivo en el manual de referencia de GNU coreutils. Esto incluye-b
,-q
,--quoting-style=
y algunos otros.
Fuentes: ls invocación e invocación de dir, en el manual de referencia de GNU coreutils.
Porque tener dir
?
La justificación de una dir
La utilidad se da en 4.5 Estándares para interfaces Generalmente de los estándares de codificación GNU. Recomiendo leer toda la sección para comprender el razonamiento de los desarrolladores, pero aquí están los aspectos más destacados aplicables a ls
/dir
:
No haga que el comportamiento de una utilidad dependa del nombre utilizado para invocarla.….
En su lugar, utilice una opción de tiempo de ejecución o un conmutador de compilación o ambos para seleccionar entre los comportamientos alternativos….
Del mismo modo, no haga que el comportamiento de un programa de línea de comandos dependa del tipo de dispositivo de salida….
La compatibilidad requiere que ciertos programas dependan del tipo de dispositivo de salida. Sería desastroso si
ls
osh
no lo hizo de la forma que todos los usuarios esperan. En algunos de estos casos, complementamos el programa con una versión alternativa preferida que no depende del tipo de dispositivo de salida. Por ejemplo, proporcionamos undir
programa muy parecido a
ls
excepto que su formato de salida predeterminado es siempre un formato de varias columnas.
El Proyecto GNU considera indeseable, desde una perspectiva técnica, que una utilidad produzca una salida diferente dependiendo del tipo de dispositivo en el que esté escribiendo (al menos en la configuración predeterminada de la utilidad). Para algunas utilidades, incluidas ls
, la salida dependiente del dispositivo es necesaria para la compatibilidad y, por lo tanto, funciona de la manera que esperan los usuarios. Algunos usuarios también prefieren específicamente este comportamiento dependiente del dispositivo.
Tiempo ls
razonablemente no se podría escribir para que se comporte el dispositivo de forma independiente, una dir
La utilidad fue creada para lograr esto. Por lo tanto dir
no es la utilidad que se comporta de manera extraña por razones de compatibilidad histórica–ls
es.
Para ver como ls
, dir
, y el relacionado vdir
se implementan en el código fuente de coreutils sin duplicación innecesaria de código, consulte ls-dir.c
, ls-ls.c
, ls-vdir.c
, ls.h
, y ls.c
.
Es dir
¿realmente util?
Si alguna vez has deseado ls
produjo salida de varias columnas incluso cuando la canalizó a less
(ls | less
) o lo redirigió a un archivo (ls > out.txt
), puedes usar dir
o ls -C
.
Si alguna vez has deseado poder copiar directamente un nombre de archivo mostrado por ls
y utilícelo como parte de un comando sin preocuparse por citar, puedes usar dir
o ls -b
.
dir
es equivalente a ls -Cb
, entonces en ese sentido no necesitas dir
. Pero dir
proporciona una combinación de opciones que en la práctica suele ser útil (aunque no se conoce ampliamente).
¿Por qué obtengo una salida coloreada de ls
(incluso ls -Cb
) pero no dir
?!
La mayoría de los usuarios de Ubuntu tienen un alias llamado ls
la cual recorre ls --color=auto
. Cuando ls
existe tanto como un alias como un comando externo, el alias tiene prioridad en los comandos interactivos simples.
Las definiciones de alias no se expanden de forma recursiva, es el externo ls
ordenar que el ls
alias está llamando con --color=auto
. Consulte 6.6 Alias en el manual de referencia de Bash para obtener más información sobre cómo funcionan los alias.
Cuando pasa a ls
, dir
, o vdir
(y algunos otros comandos, como grep
), --color=auto
usa color cuando su salida es un terminal, pero no de otra manera.
De forma predeterminada en Ubuntu, las cuentas de usuario se crean con esto en ~/.bashrc
:
# 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'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
Notarás el ls
alias (alias ls='ls --color=auto'
) no está comentado, mientras que los de dir
y vdir
están comentados con #
por lo que no tienen ningún efecto. Es decir, tiempo dir
no es un alias, ls
es (pero no para dir
).
Como hago dir
producir también resultados en color?
Para habilitar la salida en color con dir
, simplemente edita .bashrc
en su directorio de inicio y descomente el #alias dir='dir --color=auto'
línea quitando el líder #
. En conchas que comenzaron después del cambio, dir
será un alias.
Si desea el cambio en el shell actual, puede ejecutar la definición de alias como un comando, o puede obtener .bashrc
mediante la ejecución . ~/.bashrc
.
Podría decirse que esto va en contra del punto principal de dir
– que debería producir el mismo tipo de salida independientemente del dispositivo de salida. Sin embargo:
- Si le resulta útil hacer esto
dir
alias, ciertamente deberías hacerlo. - Cuando se llama como un comando externo, por ejemplo en scripts o si anula el alias ejecutando
dir
ocommand dir
,dir
seguirá produciendo una salida independiente del dispositivo. Es decir que aliasingdir
paradir --color=auto
realmente no se rompedir
.
Me inclinaría a pensar que
dir
¿Existe solo por compatibilidad con versiones anteriores?Desde GNU Coreutils:
dir es equivalente a ls -C -b; es decir, de forma predeterminada, los archivos se enumeran en columnas, ordenados verticalmente, y los caracteres especiales se representan mediante secuencias de escape con barra invertida.
Por cierto,
ls
no colorea la salida de forma predeterminada: esto se debe a que la mayoría de las distribuciones aliasls
parals --color=auto
en
/etc/profile.d
. Para una prueba, escribaunalias ls
entonces intentals
: será incoloro.
Fuente: Respuesta de Renan a ¿Cuál es la diferencia entre “dir” y “ls”?
valoraciones y comentarios
Recuerda que te concedemos agregar una reseña si te fue preciso.