Credit image

10 comandos para trabajar en Linux

10 grupos o familias de comandos avanzados para utilizar en una terminal o consola de Linux, y que nos harán la vida mucho más facil y amena.

Los que trabajan con servidores Linux o Unix saben bien que trabajar por terminal o consola es un recurso imprescindible para un buen informático, a la vez que supone un ahorro gigante de tiempo, por el tema de poder administrar remotamente un sistema lejano físicamente.

En realidad no serán 10 comandos, sino 10 grupos o familias de comandos que -junto a otras herramientas útiles como podrían ser vim o netcat- nos permitirán administrar sistemas en modo extremo y nos harán la vida en terminal mucho más cómoda.

Antes de seguir, debemos saber utilizar correctamente las redirecciones de salida (símbolos mayor y menor que) y las tuberías (pipes).

Las redirecciones sirven para guardar en un nuevo fichero la salida del comando ls -lh >fich_vacio.txt o para añadir al final de un fichero existente ls -lh >>fich_existente.txt.

Las tuberías sirven para enlazar la salida de un comando con la entrada de otro, y así aplicar el comando posterior a la salida del primer comando. Por ejemplo, ls -lh | grep "hola".

1. Movimiento de directorios

Comandos básicos como cd (cambiar de directorio), mkdir (crear directorio), rmdir (eliminar directorio vacío) son muy necesarios en entorno de terminales.

Unos comandos que pueden ayudarnos para movernos más rápido son pwd, que nos muestra la ruta completa del directorio donde estamos, y los comandos pushd y popd.

Como se puede ver en la imagen, pushd y popd son dos comandos que guardan en una pila el directorio actual donde estamos trabajando. Así, podemos guardar la ruta actual con pushd ., cambiar de ruta y realizar varias operaciones, y volver a la ruta anterior, haciendo un popd.

Esto en principio puede parecer engorroso, pero en trabajos con rutas largas, se agradece mucho.

2. Copias y conexiones remotas

Todos sabemos utilizar el cp (copiar) o el mv (mover) para trasladar archivos. Pero también existe el scp (copia mediante SSH).

El comando ssh sirve para conectar a otro sistema Linux o Unix, que tenga un servidor ssh activo, y así poder ejecutar ordenes en él (tener una terminal abierta en ese equipo remoto). Funciona con la sintaxis ssh usuario@ip, por ejemplo:

ssh admin@122.41.51.63

Por otra parte, el comando scp realiza una copia de un fichero desde nuestro sistema a un sistema remoto (o viceversa). Veamos un ejemplo:

scp fichero.zip admin@122.41.51.63:/home/admin/files
  • fichero.zip es el fichero local que queremos copiar.
  • admin es la cuenta de usuario en el sistema remoto.
  • 122.41.51.63 es el sistema remoto.
  • /home/admin/files es el directorio remoto donde vamos a copiar.

Con respecto al mundo HTTP, también esta presente en el mundo de las terminales. Existen varios navegadores de texto como lynx, links, w3m o elinks.

Por su parte, wget es un excelente comando para descargar ficheros de internet, y curl (muy util para programadores) un comando con el que obtener el código fuente de una URL.

3. Compresión y empaquetado

En prácticamente todas las distribuciones de linux, existen varios paquetes de compresión y empaquetado.

Así, en cualquier momento podemos comprimir nuestros datos para pasarlos a un pendrive, copiarlos por la red (ver scp en apartado anterior), enviarlos por correo o incluso hacer copias de seguridad, de forma más sencilla y compacta.

Los comandos compress, gzip y bzip2 (con sus respectivos uncompress, gunzip y bunzip2 para descomprimir) son los más famosos.

No obstante, lo que más se suele utilizar es el comando tar, que no es más que un empaquetador de archivos:

tar -czvf paquete.tar.gz *

Donde:

FlagsDescripción
-cCrea un paquete.
-zComprime con gzip.
-vVerbose mode, muestra información.
-fIndica el nombre del fichero, paquete.tar.gz en el ejemplo.
*Lista de ficheros a incluir en el paquete, en este caso todos los ficheros de la ruta actual, incluyendo subdirectorios (comodin).

Otro comando poco conocido y bastante útil para programadores es gzexe, que viene a ser el equivalente de unix de programas como LZExe (DOS) o ASPack (windows).

Se trata de un comando para comprimir ficheros ejecutables, con la característica de que reducen su tamaño pero continua funcionando, sin necesidad de volverlo a descomprimir.

Algo, sin duda, muy útil en unidades donde no tenemos demasiado espacio en disco.

4. Filtrado de salida

Al comando grep se le podría dedicar un artículo completo, de hecho hay libros enteros que hablan sobre el.

Se trata de un comando que filtra lineas que coincidan con un patrón dado. Por ejemplo:

cat empleados.txt | grep "Garcia"

Sabiendo que cat muestra el contenido de un fichero, con esta linea conseguiremos ver los empleados que se apelliden Garcia.

A esto se le une la potencia de poder utilizar expresiones regulares con grep, además de muchos parámetros que facilitan la búsqueda:

FlagsDescripción
-iBusca tanto Garcia como GARCIA como garcia.
-cEn lugar de las lineas que contienen García, devuelve el número de ellas que se encontraron.
-EActiva el uso de expresiones regulares (también egrep).
-B 6Muestra las anteriores 6 lineas de donde encontró un García.
-A 6Idem, con las 6 lineas siguientes.

Existen muchísimas más opciones. Un comando mucho más potente (y también mucho más complejo) es awk. Pero eso lo dejaremos para otro artículo.

5. Comandos de manipulación de texto

De mis preferidos. Combinados con las tuberías (pipes) pueden ser armas totalmente útiles.

ComandoDescripción
cutCorta fragmentos de lineas siguiendo determinados patrones (por ejemplo, un delimitador).
head -XMuestra sólo las X primeras lineas.
tail -XMuestra sólo las X últimas lineas.
sortOrdena los resultados alfabéticamente (útil para ordenar numéricamente, usar flag -n).
uniqElimina las líneas repetidas (especialmente útil después de un sort)
revMuestra las líneas en orden inverso (horizontalmente).
tacMuestra las líneas en orden inverso (verticalmente)
stringsMuestra sólo carácteres textuales (útil para buscar texto en binarios).
exprRealiza evaluaciones de expresiones (cálculos, operaciones, métodos...).
wcCuenta el número de líneas, carácteres o palabras.

Así podemos utilizar combinaciones de este tipo:

tail -50 log | cut -d" " -f1 | sort | uniq -c | sort -n

Secuencia de comandos que:

  • Muestra las últimas 50 lineas del log del servidor web (access_log).
  • Corta la primera fila, delimitada por espacios (IP).
  • La ordena alfabéticamente y le aplica el uniq -c (elimina repetidos y añade el número de veces que encontró la linea).
  • Ordena las lineas numéricamente (última la IP más repetida).

Un comando también especialmente útil es tr (traducir), que cambia carácteres por otros. Por ejemplo:

# echo "Hola amigo mio" | tr 'oi' 'aa'
Hala amaga maa

6. Seguridad y permisos

Uno de los clásicos que un buen administrador de sistemas no puede olvidar en entornos Unix o Linux, es la gestión de permisos.

Con chmod podemos cambiar los permisos de lectura, escritura y ejecución de uno o varios ficheros.

Por otra parte, con chown y chgrp podremos cambiar el usuario propietario de un fichero y el grupo al que pertenece ese fichero respectivamente.

7. Comandos de administrador

Existen varios comandos para mantener monitorizado el sistema, veamos algunos de ellos.

El comando fdisk permite ver y hacer cambios en las particiones del disco duro (un fdisk -l nos muestra todas las existentes, incluso pendrives o unidades usb).

Con respecto a la memoria del PC o el consumo de recursos, disponemos del comando free -m, que muestra la memoria utilizada y libre, y de uptime, que nos muestra el tiempo sin reiniciar el equipo, los usuarios conectados a el, y la carga del sistema en el último minuto, últimos 5 minutos y últimos 15 minutos.

# uptime
13:44:58 up 166 days, 10:07, 1 user, load average: 0.13, 0.15, 0.16

Volviendo a las unidades de disco, con df (disk free) se puede ver cuanto espacio tenemos disponible en nuestras unidades, mientras que con du se hace la operación inversa (cuanto tenemos ocupado en la ruta actual). Con fsck podemos realizar chequeos para comprobar el estado de una partición.

8. Conversión de codificación

He dejado un apartado sólo para este gran comando. Se llama iconv y se trata de un conversor de codificaciones, tremendamente útil para cuando tenemos problemas de formateado con diferentes codificaciones como utf8 y las diferentes isos.

Veamos un ejemplo:

# cat texto.txt
¡Buenos días! ¿Podría hacerlo también? ¡Muchas gracias!
# cat texto.txt | iconv -f utf8 -t latin1
¡Buenos días! ¿Podría hacerlo también? ¡Muchas gracias!

9. Procesos y gestión

Otro de los clásicos de administración, es mantener un sistema limpio de procesos que consuman demasiada memoria o tiempo de CPU.

Con el comando ps aux, podremos ver todos los procesos que están ejecutándose en la máquina.

Cada proceso tiene un PID (número de proceso). Sabiendo este PID, podemos matar el proceso (terminar su ejecución) que nos moleste haciendo un kill -9 1234, o simplemente con el comando pidof conocerlo.

También podemos utilizar killall firefox, para matar por el nombre del proceso en lugar del PID.

10. Comandos de red

Existen múltitud de comandos de red, los más utilizados son ping, con el cuál podemos ver si una determinada IP está activa, mandándole paquetes (siempre y cuando no esté configurada para ignorarlos) o el traceroute el cuál además te indica los nodos por donde pasa el paquete antes de llegar a su destino.

Además, existen nslookup o dig, que sirven para resolver IPs a su DNS inverso y viceversa y netstat -a, el cuál te devuelve las conexiones activas en el sistema actual.

Escrito por Manz, el , en linux. Comentarios recibidos: 25.

25 comentarios de lectores
diseño sitios web
diseño sitios web
1

Muy bien explicado el articulo y muy interesante, me sacara de algun apuro, muy bueno el sitio no lo conocia altamente recomendable

  • 2
inyaka
inyaka
2

buen articulo, cuando tenga algo de concentración que gastar la usare aca :D

Arzakon
Arzakon
3

Muy buenos apuntes! Algunas de estas no las conocía y me serán útiles, en especial iconv. Creo que te faltan un par... En la gestión de procesos, creo que valdría la pena reseñar pstree, que te muestra de una manera muy visual los procesos actuales. Herramientas avanzadas para ese cometido podrían ser top y su hermano mayor htop. Y en manipulación de texto es totalmente imprescindible el comando sed. Aunque sea dificil de utilizar, no lo és mucho mas que grep.

  • 2
Mon
Mon
4

Esto vine muy bien para los que nos hemos criado con microsoft y necesitamos trastear con linux de vez en cuando. Eres el very best ^^

  • 1
Angelfire
Angelfire
5

Muy buen posts Manz, aunque como lo dices se podrian dedicar posts completos a algunos temas, seria interesante si dedidas post unicamente a cada cosa, por ejemplo a SSH o a GREP.

  • 1
Elias
Elias
6

Yo puntualizaria un par de cosillas.. Con chmod podemos cambiar los permisos de lectura, escritura y ejecución de uno o varios ficheros. y como? hay que poner como funcionan los permisos en unix, los 9 bits rwx x3 (usuario, grupo, otros) y ya si quieres ser un cremas, los especiales de SUID, SGID y sTicky En los comandos de red falta de los mas importantes: ifconfig y su "compañero" al hacer uso de wifi : iwconfig Como ultima nota.. ssh tambien se puede utilizar para controlar sistemas de windows, desde windows para controlar un unix está PuTTy; y para hacerlo al reves cosas como: http://sshwindows.sourceforge.net/ Realmente ssh es el protocolo para hacer el control remoto de forma segura, utilizando criptografia asimetrica (paradigma de clave publica - clave privada)

  • 1
Stick Boy
Stick Boy
7

¡Muuuuuuy bueno, Manz! Yo tampoco conocía el iconv, y algunos otros, seguro que alguna vez me vienen bien... ¡Gracias! Evidentemente por poner se podrían poner dos mil comandos interesantes más, pero es que... Personalmente, añadiría (entre otros) el "less"... ¿nunca os ha jorobado no poder ver un fichero o una lista de resultados completa porque a la consola se le acaba el buffer?

  • 2
cristomc
cristomc
8

mmm y otengo una duda...como seria un comando para explusar (en una coneccion ssh) una bandeja de cd sin tener nada dentro y sin permisos de superusuario?

  • 1
Manz
Manz
9

@Arzakon: Efectivamente, muy útiles los que has mencionado. El sed es un pilar bastante grande también que no incluí en la lista. @Angelfire: De acuerdo, lo tomaré en cuenta. @Elias: El funcionamiento del chmod sería demasiado extenso como para explicarlo en este post (que ya se alargó demasiado), por eso puse el enlace a la wikipedia. Respecto a la red, totalmente de acuerdo, son los comandos principales. Recordar que programas como Filezilla o WinSCP permiten también realizar copias bajo protocolo SSH (o SFTP). @cristomc: El comando es eject, pero los permisos debes tenerlos...

el orador
el orador
10

muchos ni los conocía. para la gente que empezamos hace poco viene muy bien la información...

Fernando
Fernando
11

Gracias Manz, muy útil tu guía para los principiantes como yo. Saludos.

NoticiasMIX.Com
NoticiasMIX.Com
12

Bueno, teniendo en cuenta que hasta hace 4 dias nunca habia utilizado linux esto me viene de perlas ;)

Brayan Habid
Brayan Habid
13

Lo que pusiste del chmod va bien así, igual que lo del grep. Si lo ponen completo va a ser mas largo que las continuaciones de rocky balboa! jejejeje

PC Expertos
PC Expertos
14

¡Gracias Manz! Es uno de los mejores post que he visto sobre el tema. Muchos cuando comenzamos a configurar servidores necesitamos orientación como esta para familiarizarnos con las consolas.

Mojito
Mojito
15

Mil útil lo del iconv.. me sonaba, pero no tenía ni idea de como iba :-D. Mu chulo el post.. Muchas gracias :-)

Carl
Carl
16

Soy realmente nuevo en Linux, pero dejenme decirles que inicio y me sorprendo cada dia mas de lo excelente que es esto. Gracias por tu información.

aura florian
aura florian
17

saludo atodos los concedores de linux soy una nueva mienbro del codigo libre me gustaria aprender a utilizar el sistema para aver si pueden enviarme todo los comando mas utilizados. gracias

Itzel Vasquez
Itzel Vasquez
18

Pues muy interesante!!! Primera vez que chekeo este blog. Felicitaciones y Nuevamente Gracias por el aporte

Alojamiento Web
Alojamiento Web
19

¡¡Muy bueno el artículo!! La verdad es que has hecho una recopilación buenísima de los comandos "imprescindibles". Añadido a marcadores... :)

ikki
ikki
20

buenos comandos del buen Linux

EsteBandido2010
EsteBandido2010
21

Muy interesante. Seguro me servirán ya que soy nuevo en Linux. Gracias

adri
adri
22

muy bueno el artículo. Claro y conciso.

hexram
hexram
23

Muchas gracias por el artículo, Manz. Como es de esperar, quienes conocen algo más que el promedio de usuarios de Linux cuentan con algún comando críptico que desenterraron de quién sabe cuál manual de usuario, o bien sienten preferencia por alguna alternativa equivalente que, cosas de la vida, no estaba listada en el artículo... En todo caso, tanto para los que hemos trasteado con Linux (y, en mi caso, con Unix) como para los que están empezando, contar con artículos como este es algo que me habría encantado ver cuando empecé por allá en el siglo pasado. Felicitaciones y prosigue así.

uno mas
uno mas
24

Excelente articulo. Solo agregaria el mencionar los comandos "man" y "apropos".

Ripnet
Ripnet
25

Muchasss gracias!! se agracede este gran aporte un saludo

Publica tu opinión

Si lo deseas, puedes utilizar el siguiente formulario para publicar tu opinión o responder a alguna de las existentes:

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.