sum es una utilidad heredada disponible en algunos sistemas operativos Unix y similares a Unix . Esta utilidad genera una suma de comprobación de 16 bitsde cada argumento file , así como la cantidad de bloques que ocupan en el disco. [1] Se utilizan dos algoritmos de suma de comprobación diferentes. POSIX se abandonóen favor de cksum .
sum
Descripción general
El programa suma generalmente sólo es útil para interés histórico. No es parte de POSIX. Normalmente hay dos algoritmos disponibles: una suma de comprobación BSD y una suma de comprobación SYSV . Ambos son más débiles que el ya débil CRC de 32 bits utilizado por cksum . [2]
El algoritmo predeterminado en las implementaciones de FreeBSD y GNU es la suma de comprobación BSD. El cambio entre los dos algoritmos se realiza mediante opciones de línea de comandos. [2] [1]
Los dos algoritmos comúnmente utilizados son los siguientes.
La suma BSD, -r en GNU sum y -o1 en FreeBSD cksum:
- Inicializar la suma de comprobación a 0
- Para cada byte del flujo de entrada
- Realizar una rotación a la derecha de 16 bits bit a bit en la suma de comprobación
- Agregue el byte a la suma de comprobación y aplique el módulo 2 ^ 16 al resultado, manteniéndolo así dentro de los 16 bits.
- El resultado es una suma de comprobación de 16 bits.
El algoritmo anterior apareció en la séptima edición de Unix .
La suma del Sistema V, -s en GNU sum y -o2 en FreeBSD cksum:
- checksum0 = suma de todos los bytes del flujo de entrada módulo 2 ^ 32
- suma de comprobación1 = suma de comprobación0 módulo 2 ^ 16 + suma de comprobación0 / 2 ^ 16
- suma de comprobación = suma de comprobación1 módulo 2 ^ 16 + suma de comprobación1 / 2 ^ 16
- El resultado es una suma de comprobación de 16 bits calculada a partir de la suma inicial de bytes simples de 32 bits.
Sintaxis
La utilidad suma se invoca desde la línea de comandos de acuerdo con la siguiente sintaxis:
suma [OPCION]... [ARCHIVO]...
con los posibles parámetros de opción siendo:
- -r
- Utiliza el algoritmo de suma de comprobación BSD , utiliza bloques de 1K (anula -s )
- -s , --sysv
- Utilice el algoritmo de suma de comprobación SYSV y utilice bloques de 512 bytes
- --ayuda
- Mostrar la pantalla de ayuda y salir
- --versión
- Información de la versión de salida y salida
Cuando no se proporciona ningún parámetro de archivo, o cuando FILE es - , se utiliza la entrada estándar como archivo de entrada.
Ejemplo de uso:
$ echo Hola > archivo de prueba
$ suma archivo de prueba
36978 1
Ejemplo del uso de -s en GNU sum:
$ echo Hola > archivo de prueba
$ sum -s archivo de prueba
510 1 archivo de prueba
Ejemplo de uso de entrada estándar, -r y printf para evitar nuevas líneas:
$ printf Hola | suma -r
08401 1
Véase también
- Utilidades básicas de GNU
- Puerto UnxUtils para Win32 nativo
Referencias
- ^ ab — páginas del manual de GNU coreutils
- ^ ab – Manual de comandos generales de FreeBSD
Enlaces externos
- suma en The Single UNIX ® Specification, versión 2, 1997, opengroup.org – no especifica el algoritmo de suma de comprobación
- C.4 Utilidades en las Especificaciones básicas de The Open Group, edición 7, 2018, opengroup.org – indica que se eliminó la suma
- – Manual del programador de Unix versión 7
- – páginas del manual de GNU coreutils
- – Manual de comandos generales de FreeBSD : indica los algoritmos de suma en las opciones -o1 y -o2 para cksum
- – Manual de usuario de Linux – Comandos de usuario
- – Manual de referencia de comandos de usuario de Solaris 11.4
- El árbol Unix, tuhs.org – el código fuente de versiones antiguas de Unix