Comando cmatrix: haciendo un poco el tonto en Linux.

Vamos con una de esas tonterías que a veces publico sobre Linux, que no son muy prácticas pero sí divertidas, como cuando hicimos que la consola nos insultara. Vamos a ver cómo convertir nuestro terminal en la consola de la popular película The Matrix.

Empezamos por instalar cmatrix desde nuestra consola de comandos tal que así:

sudo apt-get update
sudo apt-get install cmatrix

Una vez instalado solo tenemos que invocar el comando cmatrix en la consola para conseguir este bonito efecto:

ejecución cmatrix


Cómo saber qué programa está usando o bloqueando un puerto con netstat en Windows

Me pasó ayer que no me arrancaba una aplicación web en un servidor Windows que no gestiona en su totalidad mi empresa. Intentabas arrancar pero había algo ocupando el puerto 80. ¿Cómo podía encontrar qué programa estaba ocupando ese puerto? Pues sirviéndome de netstat.

El comando a ejecutar sería el siguiente

netstat -ano -p tcp

De esta forma podemos ver todos los puertos, incluyendo los que están en escucha (parámetro -a), se muestran los puertos de forma numérica (parámetro -n) y el número de proceso (parámetro -o), filtrando por protocolo (parámetro -p) para mostrar solo los de TCP. Pero claro, esto nos saldría una salida enorme porque mostraría todos los puertos TCP y nosotros solo queremos el puerto 80. Podemos filtrar más:

netstat -ano -p tcp | find ":80"

Añadiendo una tubería para el filtrado podemos usar el comando find para que muestre solo los que tengan una referencia al puerto 80, quitándonos mucha información de encima.

Finalmente, si hemos localizado el proceso y queremos matarlo podemos abrir el Administrador de Tareas o simplemente usar el comando taskkill para eliminarlo usando el PID, por ejemplo si el PID fuera el 881 sería así:

taskkill /PID 881

Linux: conocer el modelo de tarjeta gráfica y el driver mediante una consulta por línea de comandos

Ayer veíamos la forma de hacerlo en Windows, hoy vamos en Linux ¿Cómo sacamos por línea de comandos el modelo de tarjeta gráfica y el driver? Aquí hay varias opciones:

Tenemos un comando que nos saca todos los dispositivos del sistema con datos del fabricante:

lspci -nn

Esto nos deja una salida muy sucia, demasiados datos, pero podemos filtrar con grep:

lspci -k | grep -EA3 'VGA|3D|Display'

Otra opción es instalar Inxi , un software específico para chequeo de hardware,y ejecutarlo:

#instalamos
sudo apt install inxi
#ejecutamos
inxi -Gx

Entonces ¿para el driver?

#Para ver el del kernel
find /dev -group video
#Paraver el que está en uso
glxinfo | grep -i vendor

Windows: conocer el modelo de tarjeta gráfica y el driver mediante una consulta por línea de comandos

Vamos con una curiosidad: ¿Quieres saber qué tarjeta gráfica usa tu equipo con Windows? Con el siguiente comando desde una consola puedes (también se puede en modo gráfico desde el Administrador de Dispositivos, pero vamos a irnos de elite guay).

wmic path win32_VideoController get name 

¿Y para saber la versión del driver?

wmic path win32_VideoController get driverVersion

Diferentes formas de contar el número de líneas de un fichero desde la consola de Linux.

Si queremos contar el número de líneas que tiene un fichero desde la consola de Linux tenemos, al menos, cuatro métodos para conseguirlo. Os pongo los ejemplos de código:

Usando los comandos cat y wc:

cat fichero | wc -l

Con grep le podemos decir que cuente todo el documento de esta forma:

grep -c '.*' file

La opción -n de sed junto al operador = también nos hace el servicio:

sed -n '$=' file

Y para terminar vamos a ver cómo hacerlo con awk:

awk 'END {print NR}' file

Usar cURL en Linux para descargar un fichero.

Recordaréis que hace tiempo ya hablamos aquí sobre cURL, un proyecto creado por el sueco Daniel Stenberg a mediados de los 90 para crear un bot de IRC que calculaba el cambio de importes entre dólares y coronas.

La mayoría de distribuciones de Linux nos ofrecen un comando cURL con muchas utiliades, hoy vamos a ver cómo descargar un fichero desde un servidor: Para ello nos serviremos de las opciones -O u -o.

La primera guardará el fichero en el directorio en el que estemos posicionados con el mismo nombre que tiene en la localización remota, mientras que el segundo nos permitirá especificar el nombre y la ruta del fichero:

#Sin Cambiar nombre
curl -O http://dominio.com/fichero.tar.gz
#Cambiando nombre
curl -o nuevonombre.tar.gz http://dominio.com/fichero.tar.gz

¿Cómo salir de Vim en Linux?

Es un meme clásico de las webs de chiste de programadores, pero ¿cómo se sale del editor Vim? En serio, todo el que lo ha usado ha acabado por teclear alguna vez «How to exit Vim».

Pulsando la tecla Esc Vim entra en modo línea de comandos. Ahí puedes escribir:

  • :q para salir (abreviatura de :quit).
  • :q! para salir sin guardar (abreviatura de :quit!).
  • :wq para escribir y salir.
  • :wq! para escribir y salir incluso si el fichero es del tipo solo lecutra.
  • :qa para salir de todo (abreviatura de :quitall)

Distintas formas de invertir una cadena de texto en Linux.

Vamos a hablar un poco más sobre programar scripts en Linux y veamos cómo podemos invertir una cadena con distintos métodos:

Empezamos con lo más sencillo, usar la función rev:

echo holiii | rev

Usando el comando sed dos veces, junto con tac, también podemos hacerlo:

echo holiii | sed 's/./&\n/g' | tac | sed -e :a -e 'N;s/\n//g;ta'

Ya os podéis imaginar que si podemos hacerlo con sed es que también podemos hacerlo con awk, en este caso con la función substr() y un bucle for con el que recorreremos la cadena de fin a principio pintando cada letra:

echo holiii | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{print x}'

Y no podría faltar el tradicional script de shell. El principio es el mismo que con awk: recorrer la cadena del final hacia el inicio pintando cada elemento

#!/bin/bash
a="holiii"
len=`echo ${#a}`
while [ $len -ne 0 ]
do
        b=$b`echo $a | cut -c $len`
        ((len--))
done
echo $b

Comandos de red obsoletos en Linux y sus reemplazos

Aunque todavía son muy usados y muchas versiones de Linux, la mayoría, todavía les dan soporte, la realidad es que los comandos ifconfig, netstat, arp, iwconfig, iptunnel, nameif, y route están ya considerados obsoletos. El paquete net-tools, que contenía la mayoría de ellos, lleva tiempo sin mantenimiento y ha sido reemplazado por iproute2.

Veamos una lista con estos reemplazos:

  • arp: ha sido reemplazado por ip n
  • ifconfig: hoy por hoy puede ser sustituído por ip a , por ip link o por ip -s
  • iptunnel: ha sido reemplazado por ip tunnel
  • iwconfig: ha sido reemplazado por iw
  • nameif: hoy por hoy puede ser sustituído por ip link o por ifrename
  • netstat: hoy por hoy puede ser sustituído por ss, y dependiendo de qué datos quisiéramos filtrar también por ip route,ip -s link o ip maddr
  • route: ha sido reemplazado por ip r

Comandos de información del sistema en Linux

Existen una serie de comandos que nos dan información sobre el estado de nuestro sistema operativo Linux. Son los siguientes abajo listados:

  • date: muestra la fecha y hora actuales.
  • cal: muestra el calendario de este mes.
  • uptime: muestra el tiempo que lleva el equipo funcionando.
  • w: muestra quién está en línea.
  • whoami: muestra con qué usuario estás conectado al sistema.
  • uname -a: muestra la configuración del kernel.
  • cat /proc/cpuinfo: muestra información detallada sobre la CPU.
  • cat /proc/meminfo: muestra información detallada sobre la memoria del equipo.
  • man nombre_de_comando: muestra el manual de uso de un comando.
  • df: muestra el espacio usado del disco.
  • du: muestra el espacio usado del directorio.
  • du -sh: muestra el espacio usado del disco en un formato más legible, en Gigas.
  • whereis aplicación: muestra dónde están los binarios, documentación o código de una aplicacion.
  • which aplicación: muestra las rutas de los ficheros que serán ejecutados si llamamos a ejecución dicha aplicación.