La cantidad de comandos y funcionalidades que tenemos disponible en la consola de Linux es tal que es probable que nunca lleguemos a dominarla completamente. En esta entrada veremos 10 comandos que puede que no conocieras y que te pueden ser de utilidad en alguna que otra ocasión.
pgrep
: busca procesos en ejecución basándose en el nombre u otros atributos. Para obtener el PID de todos los procesos del usuario root, por ejemplo:pgrep -u root
Comparado con la forma habitual de hacerlo:
ps -ef | egrep ‘^root ‘ | awk ‘{print $2}’
pstree
: muestra la lista de los procesos en ejecución en forma de árbol.bc
: un pequeño intérprete para el cálculo matemático. Podemos iniciar el intérprete e introducir las operaciones, escribirlas en un archivo de texto o incluso usar una tubería y pasarlas directamente desde la línea de comandos:echo -e «sqrt(16)\nquit\n» | bc -q -i
split
: sencillo comando que, como su nombre indica, nos permite dividir un fichero en varias partes. En la siguiente orden, por ejemplo, se divide el archivo «ficherogrande» en partes de 2MB, usando como nombre para los ficheros ficherogrande_aa, ficherogrande_ab, etc:split -b 2m ficherogrande ficherogrande_
nl
: son las siglas de number of lines (número de líneas). Se utiliza, como es de esperar, para contar el número de líneas de un fichero. Útil, por ejemplo, si quieres saber cuánto te ha cundido el pasar todo el fin de semana programando.mkfifo
: crea una tubería con un nombre asociado. Veamos un pequeño ejemplo. Primero creamos una tubería mi-tuberia y almacenamos el resultado de unls
en la tubería:mkfifo tuberia
ls > tuberiaEsto hará que se cree un archivo con el contenido almacenado en la tubería y que la consola permanezca bloqueada hasta que se se lea la salida de la tubería desde otra parte. Abrimos otra consola y escribimos:
head tuberia
ldd
: muestra las librerías compartidas de las que depende un programa. Para el comando java del JRE/JDK, por ejemplo:ldd /usr/bin/java
linux-gate.so.1 => (0xb7f8b000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f44000)
libjli.so => /usr/lib/jvm/java-6-sun-1.6.0.10/jre/bin/../lib/i386/jli/libjli.so (0xb7f3b000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f36000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dd8000)
/lib/ld-linux.so.2 (0xb7f71000)col
: ¿quieres guardar la salida de una página de manual como texto plano?PAGER=cat
man less | col -b > less.txtxmlwf
: ¿necesitas comprobar si un archivo XML está bien formado?curl -s ‘http://bashcurescancer.com’ > bcc.html
xmlwf bcc.htmllsof
: muestra una lista de los archivos abiertos. Recordad que en Linux también se utilizan archivos para representar cosas como directorios o sockets, por lo que es posible listar todas las conexiones TCP con algo como:lsof | grep TCP
Geniales aportes. Cuando usé Slackware había aprendido unos cuantos de los que citás, pero ya me había olvidado de casi todos por que Debian me hace muy vago 😛
Necesitaba ldd por que el driver que controla mi módem USB es malísimo, y muchas veces corrompe lo que baja de Internet. Lo peor de todo fue cuando me pasó eso mientras actualizaba de Lenny a Squeeze. Algunas pocas librerías quedaron corruptas y provocan un SEGFAULT cuando los programas intentan utilizarlas. Con ldd y el programa que provoca el error (en mi caso falla el emesene cuando activo algunos pulgins en particular) voy a poder encontrar la maldita librería corrupta y reinstalarla. Muchas gracias
Pingback: 10 comandos útiles para Linux que probablemente no conocías
Pingback: 10 mandatos útiles para GNU/Linux.
Pingback: 10 comandes útils per a Linux que probablement no coneixies // la tafanera
eVeR, veo dificil que tus librerias esten corruptas por el driver del modem… probablemente hayas bajado los paquetes en formate .deb y en el caso de estar corrupto es imposible que se haya podido descomprimir y generar librerias corruptas. Creo yo que tu problema se encuentra en otro lado!
Leandro, yo tampoco lo creía, pero parece que es así. Usé aptitude para actualizar. De vez en cuando daba un error, no mientras bajaba, sino mientras las instalaba y aptitude terminaba de golpe. Tenía que ir a el cache de apt ubicado en /var/apt/cache/archives y borrar el archivo corrupto. Después volver a iniciar aptitude. Pero muchas veces el paquete que producía el error no se volvía a instalar. Cuando terminó la actualización, muchísimos programas terminaban en SEGFAULT, incluído KDE. Reinstalando las librerías que usaban los programas comenzaban a funcionar bien. Normalmente descubría la librería dañada usando la consola que daba un error de «undefined simbol» en algún archivo específico. Buscaba a que librería estaba relacionada el archivo y la reinstalaba, y funcionaba bien. En el caso del emesene, no da info del por qué del SISFAULT, así que voy a tener que recurrir a ldd.
Pienso que es un problema del modem por que lo hace aleatoriamente con cualquier archivo que pueda descargar, aunque la mayoría suelen funcionar bien. dmesg informa que la versión del driver es «deprecated». Y, sinceramente, no hay nada peor que el modem USB que te da Arnet
dios.. el lsof me ha salvado de mil movidas a lo largo de mi vida… 😀
gracias, son de gran utilidad…
Gracias! me apunto un par de ellos 🙂
Yo conozco otros dos que posiblemente la mayoría no hayáis visto:
El comando «rev» que le da la vuelta a una cadena de texto. Y el comando «yes» que, si lo ejecutas sin parametros ni nada, imprime siempre la letra Y.
Al comando rev todavía no le he encontrado utilidad alguna…
Siempre se agradecen artículos de este tipo 🙂
Tan sólo una pequeña corrección, nl viene de «number lines» y se utiliza para numerar líneas, no para contarlas. Para ello se usaría «wc -l».
@Kronoss cierto, me ha traicionado la memoria. Y el no probar las cosas. 😛
Me ha encantado la entrada, pero no me sirve de nada la orden split… si luego no sé cómo unirlos!! Alguna ayuda?
Mil gracias por la ayuda y por la estupenda página.
@Frank como dice GabrielAlf, se usa cat. Y para rizar el rizo puedes usar md5sum para comprobar el hash y ver que se han transferido correctamente 🙂
Buen aporte 🙂
Para unir me imagino que con cat y redireccionando la salida al final del primer fichero debe funcionar.
Cada vez que veo lo que se puede hacer con scripts en linux me acuerdo de la linea de comando del DOS y posteriormente de Windows y te das cuenta de la GRAN diferencia de posibilidades entre las dos plataformas (siempre que quieras meterte en consola ;).
Gracias por recordarnos este magnifico sistema.
Considero que el ultimo deberia ser:
lsof -i TCP
Pingback: 10 comandos útiles para Linux que probablemente no conocías « Un Bioinformatiquillo
Pingback: 10 comandos útiles para Linux que probablemente no conocías « Solo LiNeX
Pingback: Lo que leí en la semana 09/03 al 15/03 | Ubunlog
Pingback: MundoGeek.net – Informática y Nuevas Tecnologías | Ann Blog
Hey chavales esta chido el lugar, y un dia de estos me gustaria invitarlos a pistear y comentar cosas aun mas interesantes…