Comandos útiles para trabajar con la terminal de linux

Últimamente estoy trabajando mucho con la terminal de Linux/Unix, es por ello comentaré y trataré de explicaros algunos de ellos.

INDICE
+ Borrar archivos y carpetas
+ Buscar palabras en archivos y procesos
+ Compresión archivos y carpetas
+ Copiar/Mover archivos y carpetas
+ Espacio disponible en particiones
+ Gestión de tareas y procesos
+ Listar carpetas y archivos
+ Mostrar procesos
+ Permisos en carpetas y archivos
+ Tamaño de directorios y archivos
+ Transferir archivos entre máquinas

Listar carpetas y archivos

El comando ls permite listar el contenido de un directorio. Por hacer el símil con Windows, el equivalente al comando dir de DOS.

Se le pueden añadir opciones para aportar información extra al listado de directorios.

$ ls -l /ruta/del/directorio

# OPCIONES
# -a: Lista todos los archivos, incluyendo aquellos que comienzan con un «.»
# -d: Lista el nombre del directorio en vez de los archivos contenidos en él.
# -l: Lista los archivos con mucho más detalle (permisos, número de enlaces 
# rígidos, nombre del propietario, grupo al que pertenece, tamaño en bytes
# y fecha de la última modificación.
# -r: Invierte el orden de listado de los archivos.
# -s: Muestra el tamaño de cada archivo en bloques de 1024 bytes 
# a la izquierda del nombre.
# -h: Muestra los tamaños de archivo en términos de kb, mb, ...
# -t: Lista los archivos ordenados por el tiempo de modificación.
# -A: Lista todos los archivos excepto el «.» y el «..».
# -R: Lista los contenidos de todos los directorios recursivamente.
# -S: Ordena el listado por el tamaño de los archivos.

Copiar/mover archivos y carpetas

Algo fundamental cuando se trabaja con la terminal es poder mover y copiar ficheros. Para ello existen los comandos cp y mv.

Su uso es muy sencillo:

# COPIAR
$ cp /ruta/origen /ruta/destino

# MOVER
$ mv /ruta/origen /ruta/destino

# OPCIONES
# -f: Forzar el borrado de los archivos destino sin consultar o avisar al usuario.
# -i: Informa antes de sobreescribir el archivo o carpeta.
# -l: Realizar un link en vez de copiar.
# -n: No sobrescribe archivos existentes
# -R: Copiar el directorio de manera recursiva.
# -u: Copiar sólo cuando el archivo o carpeta de origen es más reciente 
# que el archivo o carpeta de destino.

Borrar archivos y carpetas

El encargado de realizar la tarea de borrado de archivos y carpetas es el comando rm. Su uso también es muy sencillo.

$ rm -v /ruta/directorio/o/archivo

# OPCIONES
# -f: Borrado silencioso, sin confirmación por parte del usuario.
# -r: Borra los contenidos de directorios recursivamente.
# -v: Modo verbose, muestra el nombre de cada archivo eliminado.

Compresión de archivos y carpetas

Es muy práctico a la hora de mover datos por la red, correo o incluso realizar un backup crear un paquete comprimido con los archivos y carpetas deseas y así la tarea de envío resulte más sencilla y cómoda.

Para ello existen varios comandos como gzip o bzip2 pero el más común suele ser el comando tar.

# DESCOMPRIMIR
$ tar -czvf paquete.tar.gz

# COMPRIMIR
$ tar -xzvf paquete.tar.gz

# OPCIONES
# -c: Crear el paquete.
# -x: Extraer de un archivo.
# -t: Listar contenido del archivo.
# -v: Modo verbose para ver un reporte de las acciones.
# -f: Indicar el nombre del archivo.
# -z: Comprimir con Gzip.

Mostrar procesos

Sin duda un comando interesante para saber que procesos se están ejecutando, cuales consumen más o simplemente para conocer su PID. Todo esto gracias al comando ps que tiene todas estas combinaciones.

$ ps aux

# OPCIONES
# -aux: Lista los procesos de todos los usuarios con información añadida.
# -a: Lista los procesos de todos los usuarios.
# -u: Lista información del proceso como por ejemplo el usuario que lo 
# está corriendo, la utilización de CPU y memoria, ...
# -x: Lista procesos de todas las terminales y usuarios.
# -l: Muestra información que incluye el UID.
# -forest: Muestra el listado procesos en un formato tipo árbol. Permite
# ver como los procesos interactúan entre si, similar al comando pstree.

Gestión de tareas y procesos

Resulta interesante con determinados comandos dejarlos trabajando en segundo plano. Para que la orden se quede en el background es suficiente con añadir el simbolo '&' al final de la linea. Los comandos en background se manejan como un proceso ya sea con el comando jobs o ps.

# PARA ENVIAR UNA TAREA A SEGUNDO PLANO AÑADIMOS AL FINAL DEL COMANDO '&'
# Ejecutamos la orden 'yes' que envía una serie de 'y' y lo mandamos
# al 'agujero negro' de linux /dev/null
$ yes > /dev/null &
[1] 46931 # Esto es el PID del proceso creado

# VER TRABAJOS EN SEGUNDO PLANO
$ jobs
[1]+ Running yes >/dev/null &

# CON EL COMANDO PS TAMBIÉN PODEMOS VER EL TRABAJO
$ ps
PID TTY TIME CMD
46931 pts/1 04:12:45 yes

# PARA MATAR LA TAREA LO PODEMOS HACER DE DOS MANERAS
$ kill %1
[1] 46931
$ kill 46931

Permisos en carpetas y archivos

Los permisos en Linux están formados en tres grupos: permisos para el propietario, el grupo y el resto. Cada grupo tiene un valor en binario. En el siguiente ejemplo el propietario tiene el valor 7 (111 en binario), el grupo y el resto el valor 5 (011 en binario).

Para cambiar estos permisos se utiliza el comando chmod.

$ chmod -R 777 directorio/archivo

Sin embargo para cambiar el propietario y grupo se utiliza chown.

$ chown -R usuario:grupo directorio/archivo

Buscar palabras en archivos y procesos

El comando grep es uno de los más útiles ya que permite buscar un termino en archivos, procesos, ... Si el término aparece varias veces, muestra una linea de resultado por cada coincidencia.

# EJEMPLO 1
$ grep test ruta/del/archivo

# EJEMPLO 2
$ grep "test pruebas" /ruta/del/archivo

# EJEMPLO CON EXPRESIÓN REGULAR
$ grep "test.*linea" /ruta/del/archivo

El comando resulta de más utilidad si lo combinamos con pipe '|'.

$ ps aux | grep watchdog

Transferir archivos entre máquinas

Para utilizar el siguiente comando que permite transferir archivos entre una máquina loca y una remota es necesario tener instalado el protocolo SSH.

$ scp ruta/archivo/local/libro.txt user@hostname:ruta/archivo/remoto/libro.txt

Espacio disponible en particiones

Un comando muy útil para tener controlado el espacio disponible en cada partición del sistema, es el comando df.

$ df -h /particion

# OPCIONES
# -a Incluye sistemas de archivos falsos.
# -h Muestra los tamaños en formatos más legibles como K, MB y GB.
# -l Limita el listado a archivos locales.
# -T Muestra el tipo de sistema de archivos.

Tamaño de directorios y archivos

El comando du lista el tamaño de archivos y carpetas con una simple sintaxis.

$ du -sh /ruta/carpeta/o/archivo

# OPCIONES
-s Informa de la suma total de los archivos o carpetas.
-h Muestra los tamaños en formatos más legibles como K, MB y GB.
-a Ver espacio ocupado por cada archivo.
-x Omite archivos de otro sistema de archivos.

Es muy probable que vaya actualizando la lista con algún otro comando también interesante y no comentado aquí, así que no perdáis de vista este post.