diffposix - Online en la nube

Este es el comando diffposix que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


diff - compara dos archivos

SINOPSIS


diff [−c | −e | −f | −u | −C n| −U n] [−br] file1 file2

DESCRIPCIÓN


La diff La utilidad comparará el contenido de file1 y file2 y escribir en estándar
generar una lista de cambios necesarios para convertir file1 into file2. Esta lista debe ser
mínimo. No se producirá ninguna salida si los archivos son idénticos.

OPCIONES


La diff La utilidad deberá cumplir con el volumen de Definiciones Básicas de POSIX.1‐2008, Sección
12.2, Utilidad Sintaxis Líneas directrices.

Se admitirán las siguientes opciones:

−b Hacer que cualquier cantidad de espacio en blanco al final de una línea se trate como una
(es decir, los caracteres de espacio en blanco que preceden al están
ignorado) y otras cadenas de caracteres de espacio en blanco, sin incluir
caracteres, para comparar iguales.

−c Produzca resultados en una forma que proporcione tres líneas de contexto copiado.

−C n Produzca resultados en una forma que proporcione n líneas de contexto copiado (donde n deberá
interpretarse como un entero decimal positivo).

−e Producir salida en una forma adecuada como entrada para el ed utilidad, que luego puede ser
usado para convertir file1 into file2.

−f Producir resultados en una forma alternativa, similar en formato a −e, pero no intencionado
para ser adecuado como entrada para el ed utilidad, y en el orden opuesto.

−r Presente una solicitud diff recursivamente a archivos y directorios del mismo nombre cuando file1 y
file2 son ambos directorios.

La diff la utilidad detectará bucles infinitos; es decir, ingresando a un
directorio visitado que es un antepasado del último archivo encontrado. Cuando
detecta un bucle infinito, diff Deberá escribir un mensaje de diagnóstico en estándar.
error y recuperará su posición en la jerarquía o terminará.

−tú Produzca resultados en una forma que proporcione tres líneas de contexto unificado.

−U n Produzca resultados en una forma que proporcione n líneas de contexto unificado (donde n deberá
interpretarse como un entero decimal no negativo).

OPERANDOS


Se admitirán los siguientes operandos:

file1, file2
Un nombre de ruta de un archivo que se va a comparar. Si el file1 or file2 operando es
'-', se utilizará la entrada estándar en su lugar.

Si ambos file1 y file2 son directorios, diff no comparará archivos especiales de bloque,
archivos especiales de caracteres, o archivos especiales FIFO con cualquier archivo y no se compararán
archivos a directorios. Más detalles son los especificados en Dif. Directory Comparación
Formato. El comportamiento de diff en otros tipos de archivos está definido por la implementación cuando se encuentra en
directorios.

Si solo uno de file1 y file2 es un directorio, diff se aplicará al no directorio
archivo y el archivo contenido en el archivo de directorio con un nombre de archivo que es el mismo que el
último componente del archivo que no es de directorio.

ESTÁNDAR


La entrada estándar se utilizará solo si uno de los file1 or file2 referencias de operandos
entrada estándar. Consulte la sección ARCHIVOS DE ENTRADA.

ENTRADA ARCHIVOS


Los archivos de entrada pueden ser de cualquier tipo.

MEDIO AMBIENTE VARIABLES


Las siguientes variables de entorno afectarán la ejecución de diff:

IDIOMA Proporcione un valor predeterminado para las variables de internacionalización que no están configuradas o
nulo. (Consulte el volumen de Definiciones básicas de POSIX.1‐2008, Sección 8.2,
Internacionalización Variables por la precedencia de la internacionalización
variables utilizadas para determinar los valores de las categorías de configuración regional).

LC_TODOS Si se establece en un valor de cadena no vacío, anule los valores de todos los demás
Variables de internacionalización.

LC_CTYPE Determinar la configuración regional para la interpretación de secuencias de bytes de datos de texto.
como caracteres (por ejemplo, de un solo byte en lugar de caracteres de varios bytes en
argumentos y archivos de entrada).

LC_MENSAJES
Determine la configuración regional que se debe utilizar para afectar el formato y el contenido de
mensajes de diagnóstico escritos en errores estándar y mensajes informativos escritos
a salida estándar.

LC_TIME Determine la configuración regional para afectar el formato de las marcas de tiempo de los archivos escritos con
de la forma más −C y −c .

NLSPATH Determinar la ubicación de los catálogos de mensajes para el procesamiento de LC_MENSAJES.

TZ Determine la zona horaria utilizada para calcular las marcas de tiempo del archivo escritas con un
formato de contexto. Si TZ no está definido o es nulo, se incluirá una zona horaria predeterminada no especificada.
usado.

ASINCRÓNICO EVENTOS


Por defecto.

SALIDA ESTÁNDAR


Dif. Directory Comparación Formato
Si ambos file1 y file2 son directorios, se utilizarán los siguientes formatos de salida.

En la configuración regional POSIX, se informará cada archivo que esté presente en un solo directorio
utilizando el siguiente formato:

"Solamente in % s: % s \ n ", <directorio ruta>, <nombre de archivo>

En la configuración regional POSIX, se pueden informar los subdirectorios que son comunes a los dos directorios
con el siguiente formato:

"Común subdirectorios: %s y % s \ n ", <directorio1 ruta>,
<directorio2 ruta>

Para cada archivo común a los dos directorios, si los dos archivos no se van a comparar: si
los dos archivos tienen el mismo ID de dispositivo y número de serie de archivo, o ambos son especiales de bloque
archivos que se refieren al mismo dispositivo, o ambos son archivos especiales de caracteres que se refieren al
mismo dispositivo, en la configuración regional POSIX, el formato de salida no está especificado. De lo contrario, en el
La configuración regional POSIX se utilizará un formato no especificado que contenga los nombres de ruta de los dos
archivos.

Para cada archivo común a los dos directorios, si los archivos se comparan y son idénticos,
no se escribirá ninguna salida. Si los dos archivos difieren, se escribe el siguiente formato:

"diff %s %s % s \ n ", <opciones_diff>,nombrearchivo1>,nombrearchivo2>

dóndeopciones_diff> son las opciones especificadas en la línea de comando.

Todos los nombres de ruta de directorio enumerados en esta sección serán relativos al comando original
argumentos de línea. Todos los demás nombres de archivos enumerados en esta sección serán nombres de archivo
(componentes de nombre de ruta).

Dif. Binario Salida Formato
En la configuración regional POSIX, si uno o ambos archivos que se comparan no son archivos de texto, es
definido por la implementación si diff utiliza el formato de salida de archivo binario o el otro
formatos como se especifica a continuación. El formato de salida del archivo binario debe contener los nombres de ruta de
dos archivos que se comparan y la cadena "diferir de".

Si ambos archivos que se comparan son archivos de texto, según las opciones especificadas, uno de
Se utilizarán los siguientes formatos para escribir las diferencias.

Dif. Predeterminado Salida Formato
El predeterminado (sin −e, −f, −c, −C, −túo −U opciones) diff la salida de la utilidad debe contener
líneas de estas formas:

"% da% d \ n", <numero1>,numero2>

"% da% d,% d \ n",numero1>,numero2>,numero3>

"% dd% d \ n",numero1>,numero2>

"% d,% dd% d \ n",numero1>,numero2>,numero3>

"% dc% d \ n",numero1>,numero2>

"% d,% dc% d \ n",numero1>,numero2>,numero3>

"% dc% d,% d \ n",numero1>,numero2>,numero3>

"% d,% dc% d,% d \ n",numero1>,numero2>,numero3>,numero4>

Estas líneas se parecen ed subcomandos para convertir file1 into file2. Los números de línea antes
las cartas de acción deberán pertenecer a file1; los siguientes pertenecerán a file2. Así, por
intercambiar a for d y leyendo la línea en orden inverso, también se puede determinar cómo
convertir file2 into file1. Como en ed, pares idénticos (donde numero1= numero2) se abrevian como
un solo número.

Siguiendo cada una de estas líneas, diff escribirá en la salida estándar todas las líneas afectadas en
el primer archivo con el formato:

"< %s", <línea>

y todas las líneas afectadas en el segundo archivo usando el formato:

"> %s", <línea>

Si hay líneas afectadas en ambos file1 y file2 (como con el c subcomando), el
los cambios están separados por una línea que consta de tres caracteres:

"−−− \ n"

Dif. −e Salida Formato
Con la −e opción, se producirá un guión que, cuando se proporcione como entrada para ed,
junto con un anexo w (escribir) comando, convertir file1 into file2. Solo el a (adjuntar),
c (cambio), d (Eliminar), i (insertar), y s (sustituto) comandos de ed se utilizará en
este guión. Líneas de texto, excepto las que consisten en un solo carácter ('.'),
se mostrarán como aparecen en el archivo.

Dif. −f Salida Formato
Con la −f opción, se producirá un formato alternativo de guión. Esto es similar a
el producido por −e, con las siguientes diferencias:

1. Se expresa en secuencia inversa; la salida de −e órdenes cambia desde el final de
el archivo al principio; los −f de principio a fin.

2. La forma de comandolíneas>letra de comando> utilizado por −e está alreves. Por ejemplo, 10c
con −e sería c10 con −f.

3. El formulario utilizado para rangos de números de línea es -separado, en lugar de
-apartado.

Dif. −c or −C Salida Formato
Con la −c or −C opción, el formato de salida consistirá en líneas afectadas junto con
líneas circundantes de contexto. Las líneas afectadas mostrarán cuáles deben eliminarse.
o cambiado en file1, y los agregados de file2. Con el −c opción, tres líneas de
el contexto, si está disponible, se escribirá antes y después de las líneas afectadas. Con el −C
opción, el usuario puede especificar cuántas líneas de contexto se escriben. El formato exacto
de la siguiente manera.

El nombre y la hora de la última modificación de cada archivo se emitirán en el siguiente formato:

"*** %s % s \ n ", file1,file1 fecha y hora>
"−−−% s% s \ n", file2,file2 fecha y hora>

Cadapresentar> campo será el nombre de la ruta del archivo correspondiente que se está comparando. los
el nombre de ruta escrito para la entrada estándar no está especificado.

En la configuración regional POSIX, cadafecha y hora> campo debe ser equivalente a la salida de la
siguiente comando:

datos "+% ​​a %b %e %T % Y "

sin el rastro , ejecutado en el momento de la última modificación del
archivo correspondiente (o la hora actual, si el archivo es de entrada estándar).

Luego, se aplicarán los siguientes formatos de salida para cada conjunto de cambios.

Primero, se escribirá una línea en el siguiente formato:

"***************\norte"

A continuación, el rango de líneas en file1 se escribirá en el siguiente formato si el rango
contiene dos o más líneas:

"*** % d,% d ****\norte", <comienzo línea número>,fin línea número>

y el siguiente formato de lo contrario:

"*** %d ****\norte", <fin línea número>

El número de la línea final de un rango vacío será el número de la línea anterior, o 0
si el rango está al principio del archivo.

A continuación, se escribirán las líneas afectadas junto con las líneas de contexto (líneas no afectadas).
Las líneas no afectadas se escribirán en el siguiente formato:

" %s", <línea_no_afectada>

Las líneas eliminadas se escribirán como:

"- %s", <línea_eliminada>

Las líneas modificadas se escribirán como:

"! %s", <línea_cambiada>

A continuación, el rango de líneas en file2 se escribirá en el siguiente formato si el rango
contiene dos o más líneas:

"−−− % d,% d −−−− \ n ", <comienzo línea número>,fin línea número>

y el siguiente formato de lo contrario:

"−−− %d −−−− \ n ", <fin línea número>

Luego, las líneas de contexto y las líneas cambiadas se escribirán como se describe en la sección anterior.
formatos. Líneas agregadas desde file2 se redactará en el siguiente formato:

"+ %s", <línea_añadida>

Dif. −tú or −U Salida Formato
La −tú or −U las opciones se comportan como las −c or −C opciones, excepto que las lneas de contexto son
No repetido; en su lugar, el contexto, las líneas eliminadas y agregadas se muestran juntas,
intercalado. El formato exacto sigue.

El nombre y la hora de la última modificación de cada archivo se emitirán en el siguiente formato:

"--- % s% s% s % s0, archivo1, <archivo1 marca de tiempo>, <archivo1 frac>, <archivo1 zona>
"+++ % s% s% s % s0, archivo2, <archivo2 marca de tiempo>, <archivo2 frac>, <archivo2 zona>

Cadapresentar> el campo será el nombre de la ruta del archivo correspondiente que se está comparando, o el
solo personaje '-' si se compara la entrada estándar. Sin embargo, si el nombre de la ruta
contiene una o un , o si no consta enteramente de caracteres tomados
desde el juego de caracteres portátil, el comportamiento está definido por la implementación.

Cadafecha y hora> el campo debe ser equivalente a la salida del siguiente comando:

datos '+% Y-% m-% d % H:% M:% S '

sin el rastro , ejecutado en el momento de la última modificación del
archivo correspondiente (o la hora actual, si el archivo es de entrada estándar).

Cadacruz> El campo debe estar vacío o con un punto decimal seguido de al menos un
dígito decimal, que indica la parte de fracciones de segundo (si corresponde) de la marca de tiempo del archivo. los
número de dígitos fraccionarios debe ser al menos el número necesario para representar el archivo
marca de tiempo sin pérdida de información.

Cadazona> el campo tendrá la forma "shhmm", donde el "shh" es un decimal de dos dígitos con signo
número en el rango de −24 a +25, y "mm" es un número decimal de dos dígitos sin signo en
el rango de 00 a 59. Representa la zona horaria de la marca de tiempo como el número de
horas (hh) y minutos (mm) al este (+) o al oeste (-) de UTC para la marca de tiempo. Si las horas
y los minutos son ambos cero, el signo será '+'. Sin embargo, si la zona horaria no es
número integral de minutos fuera de UTC, elzona> el campo está definido por la implementación.

Luego, se aplicarán los siguientes formatos de salida para cada conjunto de cambios.

Primero, el rango de líneas en cada archivo se escribirá en el siguiente formato:

"@@ -%s +% s @@ ", <archivo1 rango>, <archivo2 rango>

Cadadistancia> el campo tendrá la forma:

"% 1d", <comienzo línea número>

si el rango contiene exactamente una línea, y:

"% 1d,% 1d", <comienzo línea número>, <número of lineas>

de lo contrario. Si un rango está vacío, su número de línea inicial será el número de la línea
justo antes del rango, o 0 si el rango vacío inicia el archivo.

A continuación, se escribirán las líneas afectadas junto con las líneas de contexto. Cada uno no vacío
La línea no afectada se escribirá en el siguiente formato:

" %s",

donde el contenido de la línea no afectada se tomará de file1. Es
definido por la implementación si una línea vacía no afectada se escribe como una línea vacía o como una
línea que contiene un solo personaje. Esta línea también representa la misma línea de
file2, aunque file2La línea de 'puede contener diferentes contenidos debido a la −b. Eliminado
las líneas se escribirán como:

"-%s",

Las líneas agregadas se escribirán como:

"+% ​​s",

El orden de las líneas escritas será el mismo que el del archivo correspondiente. Un eliminado
La línea nunca se escribirá inmediatamente después de una línea agregada.

If −U n se especifica, la salida no debe contener más de n consecutivo no afectado
líneas; y si la salida contiene una línea afectada y esta línea es adyacente a hasta n
líneas consecutivas no afectadas en el archivo correspondiente, la salida debe contener estas
líneas no afectadas. −tú actuará como −U3.

ESTDERR


El error estándar se utilizará solo para mensajes de diagnóstico.

SALIDA ARCHIVOS


Ninguna.

EXTENDIDO DESCRIPCIÓN


Ninguna.

SALIR ESTADO


Se devolverán los siguientes valores de salida:

0 No se encontraron diferencias.

1 Se encontraron diferencias.

> 1 Ocurrió un error.

CONSECUENCIAS OF ERRORES


Por defecto.

La siguiendo (secciones) están informativo.

SOLICITUD USO


Si se cambian las líneas al final de un archivo y se agregan otras líneas, diff la salida puede mostrar
esto como eliminar y agregar, como un cambio, o como un cambio y agregar; diff no se espera que
saber qué sucedió y los usuarios no deberían preocuparse por la diferencia en la producción siempre que
muestra claramente las diferencias entre los archivos.

EJEMPLOS


If dir1 es un directorio que contiene un directorio llamado x, dir2 es un directorio que contiene un
directorio llamado x, dir1 / x y dir2 / x ambos contienen archivos llamados fecha de saliday dir2 / x
contiene un archivo llamado y, El comando:

diff −r dir1 dir2

podría producir una salida similar a:

Algunos subdirectorios: dir1 / x y dir2 / x
Queda in dir2 / x: y
diff −r dir1 / x / date.out dir2 / x / date.out
1c1
< Lun Jul 2 13:12:16 PDT 1990
−−−
> Mar Jun 19 21:41:39 PDT 1990

RAZÓN FUNDAMENTAL


La −h La opción se omitió porque no se especificó lo suficiente y no se suma a
portabilidad de aplicaciones.

Las implementaciones históricas emplean algoritmos que no siempre producen una lista mínima de
diferencias; el lenguaje actual sobre hacer todo lo posible es el mejor de este volumen de
POSIX.1‐2008 puede hacer, ya que no existe una métrica que pueda emplearse para juzgar la calidad de
implementaciones contra todos y cada uno de los contenidos del archivo. La declaración `` Esta lista debe ser
mínimo '' implica claramente que no se espera que las implementaciones proporcionen lo siguiente
salida al comparar dos archivos de 100 líneas que difieren en un solo carácter en un solo
línea:

1,100c1,100
all 100 líneas obtenidos de file1 precedido con "< "
−−−
all 100 líneas obtenidos de file2 precedido con "> "

Los mensajes de `` Sólo en '' requeridos cuando el −r La opción está especificada no son utilizadas por la mayoría
implementaciones históricas si el −e También se especifica la opción. Se requiere aquí porque
proporciona información útil que debe proporcionarse para actualizar un directorio de destino
jerarquía para que coincida con una jerarquía de origen. Los mensajes de `` subdirectorios comunes '' se escriben
por System V y 4.3 BSD cuando el −r se especifica la opción. Están permitidos aquí pero no
requerido porque están informando sobre algo que es igual, no informando un
diferencia, y no son necesarios para actualizar una jerarquía de destino.

La −c Se ha incluido la opción, que escribe la salida en un formato utilizando líneas de contexto.
El formato es útil por una variedad de razones, entre ellas una legibilidad mucho mejor
y la capacidad de comprender los cambios de diferencia cuando el archivo de destino tiene números de línea
que difieren de otra copia similar, pero ligeramente diferente. los parche la utilidad es más
valioso cuando se trabaja con listados de diferencias utilizando un formato de contexto. La versión BSD de
−c toma un argumento opcional que especifica la cantidad de contexto. En lugar de sobrecargar −c
y romper las Pautas de sintaxis de utilidades para diff, los desarrolladores estándar decidieron
agregue una opción separada para especificar una diferencia de contexto con una cantidad específica de contexto
(−C). Además, el formato para el contexto diffs se extendió ligeramente en 4.3 BSD para permitir
varios cambios que están dentro de las líneas de contexto entre sí para fusionarlos. los
El formato de salida contiene cuatro caracteres después del rango de
líneas afectadas en el primer nombre de archivo. Esto fue para proporcionar una bandera para programas antiguos (como
versiones antiguas de parche) que solo comprenden el formato de contexto antiguo. La versión del contexto
descrito aquí no requiere que se fusionen varios cambios dentro de las líneas de contexto, pero
tampoco lo prohíbe. La extensión es compatible con versiones posteriores, por lo que cualquier proveedor que
desea conservar la versión anterior de diff puede hacerlo agregando los cuatro extra
caracteres (es decir, utilidades que actualmente usan diff y entender el nuevo fusionado
El formato también comprenderá el antiguo formato no combinado, pero no vicio versa).

La −tú y −U opciones de GNU diff han sido incluidos. Su formato de salida, diseñado por
Wayne Davison, ocupa menos espacio que −c y −C formato, y en muchos casos es más fácil
leer. Las marcas de tiempo del formato no varían según la configuración regional, por lo que LC_TIME no lo afecta. los
Los números de línea del formato se representan con el % 1d formato, no %d, porque el formato de archivo
las reglas de notación permitirían extra caracteres que aparecen alrededor de los números.

El comando sustituto se agregó como un formato adicional para el −e opción. Esto fue agregado
para proporcionar implementaciones con una forma de corregir el error clásico de `` punto solo en una línea ''
presente en muchas versiones de diff. Dado que muchas implementaciones han solucionado este error, el
Los desarrolladores estándar decidieron no estandarizar el comportamiento roto, sino más bien proporcionar la
herramienta necesaria para corregir el error. Una forma de corregir este error es generar dos períodos
siempre que se necesite un solo período, luego finalice el comando append con un período, y
luego use el comando sustituto para convertir los dos períodos en uno.

El derivado de BSD −r se agregó la opción para proporcionar un mecanismo para usar diff comparar dos
árboles del sistema de archivos. Este comportamiento es útil, es una práctica estándar en todos los
sistemas, y no es fácilmente reproducible con el find utilidad.

El requisito de que diff no comparar archivos en algunas circunstancias, a pesar de que tienen
el mismo nombre, se basa en el resultado real de implementaciones históricas. El especificado
comportamiento evita los problemas derivados de la ejecución de FIFO y otros archivos que
porque diff para colgar esperando una entrada sin ninguna indicación para el usuario de que diff fue colgado. Un
La versión anterior de este estándar especificaba el formato de salida con mayor precisión, pero en
práctica, este requisito fue ampliamente ignorado y el beneficio de la estandarización parecía
pequeño, por lo que ahora no está especificado. En el uso más común, diff −r debe indicar diferencias
en las jerarquías de archivos, no la diferencia de contenido de los dispositivos apuntados por el
jerarquías.

Muchas de las primeras implementaciones de diff requieren archivos buscables. Dado que las interfaces del sistema
volumen de POSIX.1‐2008 admite canalizaciones con nombre, los desarrolladores estándar decidieron que tal
la restricción era irrazonable. Tenga en cuenta también que el nombre de archivo permitido - casi siempre se refiere
a una pipa.

No se especifica ningún orden de búsqueda en el directorio para diff. El ordenamiento histórico es, de hecho, no
óptimo, en el sentido de que imprime todas las diferencias en el nivel actual, incluida la
declaraciones sobre todos los subdirectorios comunes antes de recurrir a esos subdirectorios.

El mensaje:

"diff %s %s % s \ n ", <opciones_diff>, <nombrearchivo1>, <nombrearchivo2>

no varía según la configuración regional porque es la representación de un comando, no un inglés
frase.

FUTURO DIRECCIONES


Ninguna.

Use diffposix en línea usando los servicios de onworks.net



Últimos programas en línea de Linux y Windows