# Core utilities (Español)

Related articles

- Bash (Español)
- Zsh
- General recommendations (Español)
- GNU Project (Español)
- sudo (Español)
- cron
- File system search
- man page
- Securely wipe disk#shred
- File permissions and attributes

Este artículo trata los utilidades de los sistemas GNU/Linux denominadas utilidades core, como less, ls, y grep. El ámbito de este artículo incluye, pero no está limitado a, aquellas utilidades incluidas en el paquete de GNU coreutils. Lo siguiente son varios trucos y consejos y otras informaciones útiles relacionadas con estas utilidades.

## Comandos básicos

La siguiente tabla lista los comandos de consola básicos que todo usuario linux debería conocer. Comandos en negrita son parte de la línea de comandos, otros son programas separados llamados desde la consola. Véase las siguientes secciones y Artículos relacionados para más detalles.

Comando | Descripción | Ejemplo
--- | --- | ---
man | Muestra la página del manual para ese comando | man ed
cd | Cambia de directorio | cd /etc/pacman.d
mkdir | Crea un directorio | mkdir ~/newfolder
rmdir | Elimina un directorio vacío | rmdir ~/emptyfolder
rm | Elimina un fichero | rm -r ~/file.txt
rm -r | Elimina directorios y sus contenidos | rm -r ~/.cache
ls | Lista archivos | ls *.avi
ls -a | Lista archivos ocultos | ls -a /home/archie
ls -al | Lista archivos ocultos y propiedades de los archivos |
mv | Mueve un fichero | mv ~/compressed.zip ~/archive/compressed2.zip
cp | Copia un fichero | cp ~/.bashrc ~/.bashrc.bak
chmod +x | Da permisos de ejecución a un fichero | chmod +x ~/.local/bin/myscript.sh
cat | Muestra el contenido de un archivo | cat /etc/hostname
strings | Muestra caracteres imprimibles en un fichero binario | strings /usr/bin/free
find | Busca un archivo | find ~ -name myfile
mount | Mointa una partición | mount /dev/sdc1 /media/usb
df -h | Muestra el espacio disponible en todas las particiones
ps -A | Muestra todos los procesos en ejecución |
killall | Mata todas las instancias de un proceso en ejecución |

## cat

cat (catenate) es una utilidad estándar de unix que concatena y lista ficheros.

- Dado que cat no es un comando integrado en la consola, en bastantes ocasiones encontrará más conveniente usar una redirección (English), por ejemplo en scripts, o si le preocupa el rendimiento . De hecho `< file` hace lo mismo que `cat file`.

- cat es capaz de trabajar con múltiples líneas, aunque esto se ve a veces como una mala práctica.

    $ cat << EOF >> ruta/al/fichero
    primera linea
    ...
    últimalinea
    EOF

  Una alternativa mejor es el comando echo:

    $ echo "\
    primera línea
    ...
    última línea" \
    >> ruta/al/fichero

- Si necesita lista las lineas del fichero en orden inverso, existe una utilidad llamada tac tac (cat invertido).

## dd

dd es un comando de sistemas operativos Unix y similares cuyo propósito principal es convertir y copiar un fichero.

Note: cp hace lo mismo que dd sin pasarle argumentos pero no esta diseñado para procedimientos de borrado de discos más versátiles.

### Comprobar el progreso de dd en ejecución

Por defecto, no hay salida para dd hasta que la tarea ha terminado. Con kill y la señal `USR1` puede forzar a imprimir el estatus sin matar al programa. Habra una segunda terminal como root e introduzca el siguiente comando:

    # killall -USR1 dd

Note: Esto afectará de igual manera a todas las instancias en ejecución de dd.

Or:

    # kill -USR1 pid_del_comando_dd

For example:

    # kill -USR1 $(pidof dd)

Esto provoca que dd imprima de forma inmediatael progreso en la terminal. Por ejemplo:

    605+0 records in
    605+0 records out
    634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s

#### Usando el visor de tubería (pv)

Como alternative puede usar pv para monitorizar el pipeline de dd:

    # dd if=/origen/de/flujo_de_archivo | pv -opciones_de_monitorización -s tamaño_del_archivo | dd of=/destino/de/flujo_de_archivo

Para usar el visor de tuberías con mayor facilidad puede añadir esto a bashrc o a zshrc:

    copy() {
        size=$(stat -c%s $1)
        dd if=$1 &> /dev/null | pv -petrb -s $size | dd of=$2
    }

Y usarlo con:

    # copy /fichero/de/origen /fichero/de/destino

### derivados de dd

Otros programas por el estilo de dd muestra un estatus de salida periódico, p.ej: una simple barra de progreso.

dcfldd
  dcfldd es una versión mejorada de dd con características utiles para análisis forense y seguridad. Acepta la mayoría de los parámetros de dd e incluye salida de estatus. La última versión estable de dcfldd fue el 19 de diciembre de 2006.[1]

ddrescue
  GNU ddrescue es una herramienta de recuperación de datos. Es capaz de ignorar errores de lectura, lo que es una característica útil en situaciones de borrado de disco en casi cualquier caso. Véase official manual para más detalles.

## grep

grep (de ed g/re/p, global/regular expression/print) es una utilidad para busqueda de texto en línea de comandos escrito originalmente para Unix. El comando grep busca ficheros o en la entrada estándar de manera global líneas que coincidan con una expresión regular dada y las imprime a la salida estándar del programa.

- Recuerde que grep maneja ficheros files, por lo que un comando como `cat archivo | grep patrón` es remplazable por `grep patrón archivo`

- Alternativas a grep optimizadas para codigo fuente existe , como the_silver_searcher y ack.

### Salida con colores

La salida con colores de `grep` puede ser muy útil para aprender expresiones regulares y características adicionales de `grep`.

Para habilitar el coloreado de grep la siguiente entrada en el archivo de configuración de su terminal (p.ej:. si usa Bash):

    ~/.bashrc

    alias grep='grep --color=auto'

Para incluir numeración de las líneas en la salida, incluya `-n` a la entrada anterior.

La variable de entorno `GREP_COLOR` puede usarse para definir el color de resaltado por defecto (por defecto es rojo). Para cambiar el color busque en secuencia de escape ANSI para el color que desee y añádalo con:

    export GREP_COLOR="1;32"

`GREP_COLORS` puede usarse para definir búsquedas específicas.

### Salida de error estándar

Algunos comandos envían sus resultados a la salida de error estándar, por lo que grep no parece tener efecto aparente. En este caso redirija la salida de error a la salida estándar con:

    $ comando 2>&1 | grep argumentos

o usando el método abreviado de Bash 4:

    $ comando |& grep argumentos

Véase también I/O Redirection.

## iconv

`iconv` convierte la codificación de caracteres de una codificación a otra.

El siguiente comando convertirá el fichero `foo` de ISO-8859-15 a UTF-8 guardándolo en `foo.utf`:

    $ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf

Vea `man iconv` para más detalles.

### Convertir el fichero reemplazándolo

Tip: puede usar recode en lugar de iconv si no quiere tocar el mtime.

Al contrario que sed, iconv no provee una opción para convertir remplazando el propio fichero. Sin embargo, `sponge` puede usarse para tal fin, esta incluido en moreutils.

    $ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt

Vea `man sponge` para más detalles.

## ip

ip permite mostrar información sobre los dispositivos de red, direcciones IP, tablas de enrutamiento y otros objetos en la pila de procotolos IP de Linux. Añadiendo varios comandos, puede manipular y configurar la mayoría de estos objetos.

Note: La utilidad ip la provee el paquete iproute2, que está incluido en el grupo base.

Objecto | Propósito | Nombre de página en el manual
--- | --- | ---
ip addr | manejo de dirección de protocolo | ip-address
ip addrlabel | manejo etiquetado protocolo | ip-addrlabel
ip l2tp | Tunel ethernet sobre IP (L2TPv3) | ip-l2tp
ip link | configuración dispositivo de red | ip-link
ip maddr | manejo direcciones multicast | ip-maddress
ip monitor | monitorizado de mensajes netlink | ip-monitor
ip mroute | manejo de cache de enrutado multicast | ip-mroute
ip mrule | manejo la base de datos de politicas de enrutado multicast |
ip neigh | manejo de tablas ARP/Vecinos | ip-neighbour
ip netns | manejo de proceso del espacio de nombres en red | ip-netns
ip ntable | configuración tabla de vecinos | ip-ntable
ip route | manejo de la tabla de enrutamiento | ip-route
ip rule | manejo de la base de datos de políticas de enrutamiento | ip-rule
ip tcp_metrics | manejo de metricas TCP | ip-tcp_metrics
ip tunnel | configuración de tunel | ip-tunnel
ip tuntap | manejo de dispositivos TUN/TAP |
ip xfrm | manejo de políticas IPsec | ip-xfrm

El comando `help` está disponible para todos los objetos. Por ejemplo, escribiendo `ip addr help` se mostrará la sintaxis de comando disponible para el objeto address. Para un uso avanzado véase documentación iproute2.

El artículo Configuración de Red muestra como el comando ip es usado en la práctica para varias tareas típicas.

Nota: Puede que esté familiarizado con el comando ifconfig , que era usado versiones anteriores de Linux para la configuración de interfaces. Ahora está obsoleto en Arch Linux; debería usar ip en su lugar.

## less

less es un visualizados de archivos de texto en consola. Al contrario que otros visualizadores similares como more y pg, less ofrece una interfaz mucho más avanzada y completa feature-set.

Véase List of applications#Terminal pagers para más alternativas.

### Salida en color mediante variables de entorno

Añada las siguientes líneas a su archivo de configuración de la terminal:

    ~/.bashrc

    export LESS=-R
    export LESS_TERMCAP_me=$(printf '\e[0m')
    export LESS_TERMCAP_se=$(printf '\e[0m')
    export LESS_TERMCAP_ue=$(printf '\e[0m')
    export LESS_TERMCAP_mb=$(printf '\e[1;32m')
    export LESS_TERMCAP_md=$(printf '\e[1;34m')
    export LESS_TERMCAP_us=$(printf '\e[1;32m')
    export LESS_TERMCAP_so=$(printf '\e[1;44;1m')

Cambio los valores a su gusto. Referencias: ANSI escape code.

### Salida en color mediante wrappers

Puede habilitar el resaltado de sintaxis en less. Primero, instale source-highlight, y a continuación añada estás lineas a su archivo de configuración de la terminal:

    ~/.bashrc

    export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
    export LESS='-R '

Usuarios asíduos de la línea de comandos pueden querar instalar lesspipe.

Los usarios puede listar archivos comprimidos dentro de un archivador usando su visualizador:

    $ less compressed_file.tar.gz

    ==> usa archivo_tar:fichero_contenido para ver un fichero en el archivador
    -rw------- usuario/grupo  695 2008-01-04 19:24 archivo_comprimido/contenido1
    -rw------- usuario/grupo   43 2007-11-07 11:17 archivo_comprimido/contenido2
    archivo_comprimido.tar.gz (END)

lesspipe también concede a less la capacidad para interactuar con ficheros que no sean archivadores, sirviendo como alternativa para el comando específico asociado a según el tipo de archivo en concreto (como ver HTML mediante python-html2text).

Vuelva a loguearse tras instalar lesspipe para activarlo, o usando source `/etc/profile.d/lesspipe.sh`.

### Vim como visualizador alternativo

Vim (visual editor improved) tiene un script para ver el contenido de fichero de texto, binarios, directorios. Añada la siguiente línea a su archivo de configuración de la terminal para usarlo como visualizador:

    ~/.bashrc

    alias less='/usr/share/vim/vim74/macros/less.sh'

Existe una alternativa a la macro less.sh, que puede funcionar como la variable de entorno `PAGER`. Instale vimpager añada lo siguiente a su archivo de configuración de la terminal:

    ~/.bashrc

    export PAGER='vimpager'
    alias less=$PAGER

Ahora los programas que use la variable de entorno `PAGER`, como git, usarán vim como un visualizador.

### Salida coloreada cuando lee de entrada estándar

Nota: Se recomienda añadir #Salida en color mediante variables de entorno a su `~/.bashrc` o `~/.zshrc`, ya que lo siguiente esta basado en `export LESS=R`

Cuando ejecuta un comando y redirige su salida estándar (stdout) a less para visualizarla (p.ej: `pacman -Qe | less`), puede encontrarse con que la salida ya no sale coloreada. Esto suele pasar porque el programa intentar detectar si su salida estándar es un terminal interactivo, en cuyo caso imprime el texto coloreado,y en caso contrario no. Esto es un buen comportamiento cuando quiere redirigir la salida estándar a un fichero, p.ej: `pacman -Qe > pkglst-backup.txt`, pero menos indicado cuando quiere visualizar la salid con `less`.

Algunos programas proveen una opción para deshabilitar la detección de tty interactiva:

    # dmesg --color=always | less

En el caso de que el programa no proporcione una opción similar, es posible engañarlo para que crea que la salida estándar es un terminal interactivo con las siguientes utilidades:

- stdoutisatty — Un pequeño programa que captura la llamada a la función `isatty` .

  https://github.com/lilydjwg/stdoutisatty. || stdoutisatty-gitAUR
  Ejemplo: `stdoutisatty program | less`

- socat — Un relevo para transferencia de datos bidireccional entre dos canales de datos independientes. Esta basado en el programa de GNU readline.

  http://www.dest-unreach.org/socat/ || socat
  Ejemplo: `socat EXEC:"program",pty STDIO | less`

- script — Una utilidad que hace typescript de una sesión de terminal.

  http://man7.org/linux/man-pages/man1/script.1.html || util-linux
  Ejemplo: `script -fqc "program" | less` or [2]

- unbuffer — Un script basado en sh y Tcl.

  http://expect.sourceforge.net/example/unbuffer.man.html || expect
  Ejemplo: `unbuffer program | less`

De forma alternativa, usando el módulo zpty de zsh: [3]

    ~/.zshrc

    zmodload zsh/zpty

    pty() {
    	zpty pty-${UID} ${1+$@}
    	if [[ ! -t 1 ]];then
    		setopt local_traps
    		trap '' INT
    	fi
    	zpty -r pty-${UID}
    	zpty -d pty-${UID}
    }

    ptyless() {
    	pty $@ | less
    }

Uso:

    $ ptyless program

Para redirigirlo a un visualizador (less en este ejemplo):

    $ pty program | less

## ls

ls (list) es un comando para lista fichero en sistemas operativos Unix y similares.

- ls puede listar permisos de ficheros.

- Salida coloreada puede ser habilitadac con un simple alias. El fichero `~/.bashrc` debería tener la siguiente entrada copiada de `/etc/skel/.bashrc`:

  `alias ls='ls --color=auto'`

El siguiente paso mejorará aún más la salida coloreada de ls; por ejemplo, enlaces simbólicos rotos (huérfanos) se mostrarán en un tono rojo. Añada la siguiente línea a su archivo de configuración de la terminal:

  `eval $(dircolors -b)`

## mkdir

mkdir (make directory) es un comando para crear directorios.

- Para crear un directorio y toda su jerarquía, es usado el argumento `-p`, de otra forma se monstraría un error. Como se supone que los usuario saben lo que quieren, ,el argumento `-p` puede usarse por defecto:

      alias mkdir='mkdir -p -v'

  El argumento `-v` hace que la salida sea más detallada.

- Cambiar los permisos con chmod tras crear el directorio no es necesario pues la opción `-m` permite definir los permisos de acceso.

Sugerencia: Si tan solo quiere un directorio temporal, una mejor alternativa es mktemp (make termporary): `mktemp -p`.

## mv

mv (move) es un comando para renombrar y mover ficheros y directorios.

- Puede ser muy peligroso, por lo que se recomiendo limitar su ámbito:

      alias mv=' timeout 8 mv -iv'

  Este alias suspende mv tras ocho segundos, pide confirmación para borrar tres o más ficheros, lista las operaciones en curso y no almacena en el historial de la terminal si la terminal esta configurada para no almacenar aquellos comandos que empiezen por un espacio.

## rm

rm (remove) es un comando que sirve para eliminar ficheros y directorios.

- Puede ser muy peligroso, por lo que se recomiendo limitar su ámbito:

      alias rm=' timeout 3 rm -Iv --one-file-system'

  Este alias suspende rm tras 3 segundos, pide confirmación para borrar tres o más ficheros, lista las operaciones en curso, no involucra mñas de un sistema de ficheros y no almacena en el historial de la terminal si la terminal esta configurada para no almacenar aquellos comandos que empiezen por un espacio. Sustituya `-I` por `-i` si prefiere confirmación por cada fichero.
  Usuarios de Zsh pueden querer poner `noglob` antes de `timeout` para evitar expansiones implicitas.

- Para eliminar directorios que estén vacíos, use rmdir ya que falla en cada de que el objetivo contengo ficheros.

## sed

sed (stream editor) is una utilidad de Unix que parsea y transforma texto

Aquí hay un puñado list de ejemplo de una línea de como usar sed muy útiles.

Sugerencia: Alternativas más potentes son AWK e incluso el lenguaje Perl.

## seq

seq (sequence) es una utilidad para generar secuencias de números. Hay alternativas integradas en la shell disponibles, por lo que es una buena práctica usarlas como se explica en Wikipedia.

## Véase también

- A sampling of coreutils , part 2 , part 3 - Overview of commands in coreutils

- GNU Coreutils Manpage

- Learn the DD command

Categories:

- System administration (Español)
- Command shells (Español)