Trucos. Brujerías en la línea de comandos
TRUQUIS
Trucos. Brujerías en la línea de comandos
2021-01-29
Por
Tamariz el de la Perdiz

Los mejores trucos para sacar el máximo partido a vuestros sistemas GNU/Linux

Procesando vídeos en la línea de comando

La utilidad ffmpeg nos permite hacer unas cuantas viguerías desde la línea de comandos. Las posibilidades son ilimitadas, pero aquí os dejo algunas de las combinaciones que más utilizo

Eliminar el audio de input.mp4 y almacenar el resultado en output.mp4

ffmpeg -i input.mp4 -an output.mp4

Re-escalar el fichero input.mp4 a un tamaño predeterminado y almacenar el resultado en output.mp4.

ffmpeg -i input.mp4 -s 360x18 output.mp4

Reducir el tamaño del fichero. Dependiendo del valor que utilicemos, la calidad se puede degradar bastante

ffmpeg -i input.mp4 -b:v 64k output.mp4

Generar un screencast desde la línea de comandos. Los parámetros que siguen a -i indican las coordenadas de inicio en las que grabar en caso de que solo queramos grabar una parte de la pantalla.

ffmpeg -video_size 480x330 -framerate 25 -f x11grab -i :0.0+10,20 output.mp4

Esto es todo por hoy. Ya os iremos contando más trucos con ffmpeg.

Bash menuda historia!

El interprete de comandos bash guarda la historia de todos los comandos que introducimos y nos permite recuperarlos pulsando los cursores arriba y abajo. Pero además de eso, bash ofrece otras combinaciones de teclas y comandos con los que ser más productivos con la historia de comandos.

CTRL+R     : Reverser history search
!!         : Runs last issued command
history    : List history file
history -c : Borra el fichero de history
!39        : Runs entry 39 in command history
!grep      : Runs last grep command in command history
^t1^t2     : Substitutes t1 by t2 in previous commnd and runs it

So añadimos un espacio al cualquier comando, este se ejecutará normalmente, pero no se almacenará en la historia:

 ls /etc
(...)
$ ls /bin
(...)
$  ls /sbin
(...)
$ history
(...)
  559  ls /etc
  560  ls /bin
  561  history

Este comportamiento está controlado por la variable de entorno HISTCONTROL. Si queréis que se almacene todo en la historia, solo tenéis que borrarla.

Si queremos que bash deje de grabar la historia podemos poner la variable HISTSIZE a cero.

Recordad que si queréis estos cambios permanentes debéis añadirlos en vuestros ficheros .bash_profile o .bashrc, para que se apliquen en cada sesión.

Sacándole el máximo a date

El comando date es super poderoso. Muchos solo lo usamos para saber que día es o para decirle al ordenador que día es... Si, esos que no tienen pila. Pero date nos permite mucho más. Aquí os dejo algunos flags que he tenido que usar en más de una ocasión:

$ date +%W            # Semana del año
$ date +%j            # Día del año
$ date +%q            # Trimestre del año
$ date +%s            # Unix Epoch 
$ date -d @1455632169 # Convierte Unix Epoch

El UNIX epoch es el 1 de enero de 1970 a las doce de la noche UTC. En la tabla de arriba Unix Epoch realmente indica segundos transcurridos desde el Unix Epoch.

Ejecutar binarios sin permisos de ejecución

El siguiente truco nos permite ejecutar un programa que no tenga permisos de ejecución aunque no tengamos privilegios para poder modificar esos permisos. El truco consiste en invocar directamente el enlazador dinámico, en lugar de dejar que sea el sistema quien lo haga... Así que si. Esto solo funciona con binarios estáticos.

Preparemos el entorno. Vamos a utilizar xeyes como hacemos normalmente

$ cd /tmp
$ cp /usr/bin/xeyes
$ chmod -x xeyes
$ ./xeyes
bash: ./xeyes: Permission denied

Lo primero que debemos averiguar es que enlazador dinámico utiliza el binario. Normalmente es solo uno para un determinado sistema, pero mejor comprobarlo.

$ readelf -p .interp xeyes

String dump of section '.interp':
  [     0]  /lib64/ld-linux-x86-64.so.2

Ahora solo tenemos que invocar el fichero a través del enlazador dinámico:

$  /lib64/ld-linux-x86-64.so.2 ./xeyes

O en un solo paso y teniendo en cuenta que el interprete es la primera cadena que aparece cuando ejecutamos strings....

$ `strings ./xeyes | head -1` ./xeyes

Nos leemos en el próximo número con más trucos emocionantes y sorprendentes

Header Image Credits: Dollar Gill on Unsplash

SOBRE Tamariz el de la Perdiz
Tamaríz es un mago de la línea de comandos, un ilusionista de las pipes, un nigromante guardián de las ancestrales herramientas olvidadas por los mortales. Vamos, el tío de la sección de trucos.

 
Tu publicidad aquí :)