# GNU Core Utilities

Coreutils (o GNU Core Utilities) es un paquete de software desarrollado por el proyecto GNU que contiene varias de las herramientas básicas como cat, ls y rm necesarias para sistemas operativos del tipo Unix. Es una combinación de tres paquetes anteriores: utilidades de ficheros (fileutils), utilidades de intérpretes de comandos (shellutils) y utilidades de proceso de textos (textutils).

## Funciones de GNU Coreutils

Las utilidades GNU core soportan opciones de cadena larga como parámetros a los comandos, así como cierta permisividad en la convención al especificar opciones antes de los argumentos regulares (siempre que la variable de entorno POSIXLY_CORRECT esté definida, hecho que habilita una diferente funcionalidad en BSD). Adicionalmente, como la filosofía GNU emplea información desde páginas de manual (y usa herramientas como info), la información proporcionada es mayor.

## Esenciales

La siguiente tabla lista algunas utilidades importantes.
| Comando | Utilidad |
| cd | cambia de directorio |
| ls | lista el directorio |
| cat | concatena archivos a la salida estándar |
| mkdir | crea un directorio |
| rmdir | elimina un directorio vacío |
| rm | elimina archivos o directorios |
| cp | copia archivos o directorios |
| mv | mueve archivos o directorios |
| ln | crea enlaces duros o simbólicos |
| chown | cambia el usuario y grupo del archivo |
| chmod | cambia los permisos del archivo |
| dd | convierte y copia un archivo |
| df | informa del espacio disponible en disco del sistema de archivo |
| tar | archivador tar |
| less | paginador de terminal |
| find | busca archivos o directorios |
| diff | compara archivos línea por línea |
| grep | imprime las líneas que coinciden con un patrón |
| sed | editor de secuencias |
| awk | lenguaje de escaneo y procesamiento de patrones |
| dmesg | imprime o controla el búfer del anillo del kernel |
| lsblk | lista los dispositivos de bloques |
| mount | monta un sistema de archivos |
| umount | desmonta un sistema de archivos |
| su | substitute user |
| kill | finaliza un proceso |
| pgrep | buscar procesos por nombre o atributos |
| ps | muestra información sobre los procesos |
| free | muestra la cantidad de memoria libre y utilizada |

### Previniendo la pérdida de datos

rm, mv, cp y las redirecciones de la línea de órdenes eliminan o sobrescriben archivos sin preguntar. rm, mv, y cp son compatibles con el indicador -i para avisar al usuario antes de cada eliminación / sobreescritura. A algunos usuarios les gusta habilitar el indicador -i de forma predeterminada utilizando alias. Confiar en estas opciones de las líneas de órdenes puede ser peligroso porque te acostumbra a ellas, lo que da como resultado la posible pérdida de datos cuando utiliza otro sistema o usuario que no tiene dicho indicador. La mejor forma de evitar la pérdida de datos es crear copias de seguridad.

## No esenciales

Esta tabla enumera las utilidades principales que a menudo son útiles.
| Comando | Utilidad |
| alias | define o muestra los alias |
| type | imprime el tipo de una orden |
| time | temporiza una orden |
| tee | lee de la entrada estándar y escribe en la salida estándar y archivos |
| mktemp | crea un archivo o directorio temporal |
| cut | imprime partes seleccionadas de líneas |
| tr | traduce o elimina caracteres |
| od | vuelca archivos en octal y otros formatos |
| sort | ordena líneas |
| uniq | informa u omite líneas repetidas |
| comm | compara dos archivos ordenados línea por línea |
| head | vuelca la primera parte de los archivos |
| tail | vuelca la última parte de los archivos, o sigue los archivos |
| wc | imprime el recuento de líneas nuevas, palabras y bytes |
| strings | imprime caracteres imprimibles en archivos binarios |
| iconv | convierte codificaciones de caracteres |
| file | estima el tipo de archivo |

## Alternativas

Distintas alternativas a las utilidades principales:

### Alternativa a cp/mv

* rsync permite reanudar una transferencia fallida, mostrar el estado de la transferencia, omitir archivos ya existentes y asegurarse de la integridad de los archivos de destino utilizando sumas de verificación.

### Alternativas a ls

* lsd Moderno ls con muchos colores bonitos e iconos increíbles. Escrito en Rust.
* exa Otro reemplazo de ls con soporte para colores, vista de árbol, integración de git y otras características. También escrito en Rust.

### Alternativas a find

* fd Alternativa simple, rápida y sencilla de find. Ignora los archivos ocultos por defecto.
* fuzzy-find Completado difuso para la búsqueda de archivos.
* mlocate Mezcla las implementaciónes locate/updatedb.

### Alternativas a diff

* dwdiff Una interfaz de comparación de palabras para el programa diff; admite colores.
* wdiff Una implementación para palabras de GNU diff; no admite colores.
* cwdiff Un envoltorio de wdiff de GNU que colorea el resultado.
* icdiff Una herramienta diff coloreada escrita en Python. "Improved color diff" está destinado a complementar el uso normal de diff.

### Alternativas a grep

* mgrep Un grep multilínea.

#### Buscadores de código

Las siguientes tres herramientas tienen como objetivo reemplazar grep para la búsqueda de código. Realizan búsquedas recursivas de manera predeterminada, omiten archivos binarios y respetan .gitignore.
* ack Un reemplazo de grep basado en Perl, dirigido a programadores con grandes estructuras de código fuente heterogéneo.
* ripgrep (rg) Una herramienta de búsqueda que combina las capacidades de ag con la velocidad de grep.
* La herramienta de búsqueda de código Silver Searcher (ag) Similar a Ack, pero más rápida.

#### Filtros interactivos

* fzf Buscador difuso de línea de órdenes de propósito general, potenciado por find por defecto.
* fzy Un selector de texto difuso simple y rápido con un algoritmo de puntuación avanzado.
* peco Herramienta de filtrado interactivo simplista.
* percol Añade algo del filtrado interactivo al concepto de conducto (pipe) tradicional del intérprete de línea de órdenes de UNIX.