Destacados

Más
Miércoles, 6 de mayo, 2009

10 comandos para trabajar en Linux

24 +70K

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.

Publicidad

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.

Comparte este artículo
Sobre el autor de Emezeta

Escrito por , más conocido como Manz. Es Ingeniero-Técnico en Informática de Gestión por la Universidad de La Laguna y residente en Santa Cruz de Tenerife.

24 comentarios de lectores
diseño sitios web diseño sitios web Jueves, 7 de mayo de 2009, 03:01
1
Muy bien explicado el articulo y muy interesante, me sacara de algun apuro, muy bueno el sitio no lo conocia altamente recomendable
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows 2003 Server ·
inyaka inyaka Jueves, 7 de mayo de 2009, 07:16
2
buen articulo, cuando tenga algo de concentración que gastar la usare aca :D
Responder Permalink Mozilla Firefox 3.0.10 · Ubuntu Linux ·
Arzakon Arzakon Jueves, 7 de mayo de 2009, 08:52
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.
Responder Permalink URL · Mozilla Firefox 3.0.10 · Linux Mint ·
Mon Mon Jueves, 7 de mayo de 2009, 09:19
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 ^^
Responder Permalink Internet Explorer 6.0 · Windows XP ·
Angelfire Angelfire Jueves, 7 de mayo de 2009, 14:45
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.
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows XP ·
Elias Elias Jueves, 7 de mayo de 2009, 15:29
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)
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows XP ·
Stick Boy Stick Boy Jueves, 7 de mayo de 2009, 22:46
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?
Responder Permalink Mozilla Firefox 3.0.10 · Linux ·
cristomc cristomc Jueves, 7 de mayo de 2009, 22:49
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?
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows XP ·
Manz Manz Viernes, 8 de mayo de 2009, 15:34
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...
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows Vista ·
el orador el orador Viernes, 8 de mayo de 2009, 20:12
10
muchos ni los conocía. para la gente que empezamos hace poco viene muy bien la información...
Responder Permalink URL · IceWeasel 3.0.6 · Linux Debian ·
Fernando Fernando Viernes, 8 de mayo de 2009, 22:31
11
Gracias Manz, muy útil tu guía para los principiantes como yo. Saludos.
Responder Permalink Mozilla Firefox 3.0.10 · Windows XP ·
NoticiasMIX.Com NoticiasMIX.Com Viernes, 8 de mayo de 2009, 23:49
12
Bueno, teniendo en cuenta que hasta hace 4 dias nunca habia utilizado linux esto me viene de perlas ;)
Responder Permalink URL · Internet Explorer 6.0 · Windows XP ·
Brayan Habid Brayan Habid Domingo, 10 de mayo de 2009, 20:05
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
Responder Permalink URL · Mozilla Firefox 3.0.10 · Windows XP ·
PC Expertos PC Expertos Jueves, 14 de mayo de 2009, 19:01
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.
Responder Permalink URL · Chrome 1.0.154.65 · Windows XP ·
Mojito Mojito Sábado, 16 de mayo de 2009, 15:14
15
Mil útil lo del iconv.. me sonaba, pero no tenía ni idea de como iba :-D. Mu chulo el post.. Muchas gracias :-)
Responder Permalink Safari 3.2.3 · Macintosh ·
Carl Carl Viernes, 22 de mayo de 2009, 17:30
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.
Responder Permalink Chrome 2.0.172.27 · Windows 2003 Server ·
aura florian aura florian Viernes, 17 de julio de 2009, 13:59
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
Responder Permalink Internet Explorer 7.0 · Windows XP ·
Itzel Vasquez Itzel Vasquez Domingo, 11 de octubre de 2009, 22:29
18
Pues muy interesante!!! Primera vez que chekeo este blog. Felicitaciones y Nuevamente Gracias por el aporte
Responder Permalink Mozilla Firefox 3.0 · Linux ·
Alojamiento Web Alojamiento Web Martes, 13 de julio de 2010, 21:15
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... :)
Responder Permalink URL · Opera 9.80 · Windows XP ·
ikki ikki Sábado, 7 de agosto de 2010, 20:57
20
buenos comandos del buen Linux
Responder Permalink URL · Mozilla Firefox 3.6.8 · Windows XP ·
EsteBandido2010 EsteBandido2010 Martes, 21 de diciembre de 2010, 14:39
21
Muy interesante. Seguro me servirán ya que soy nuevo en Linux. Gracias
Responder Permalink Chrome 8.0.552.224 · Windows XP ·
adri adri Martes, 10 de enero de 2012, 22:06
22
muy bueno el artículo. Claro y conciso.
Responder Permalink Mozilla Firefox 3.6.15 · Windows 7 ·
hexram hexram Viernes, 28 de septiembre de 2012, 16:57
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í.
Responder Permalink Mozilla Firefox 15.0.1 · Ubuntu Linux ·
uno mas uno mas Jueves, 13 de diciembre de 2012, 23:10
24
Excelente articulo. Solo agregaria el mencionar los comandos "man" y "apropos".
Responder Permalink URL · Mozilla Firefox 15.0.1 · Linux ·
Publica tu opinión



Acepto las condiciones y políticas de privacidad de este sitio web.
Suscribirme a través de FeedBurner a los nuevos artículos del blog por email.

Previsualización

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