Truquillos GNU/Linux.

En esta sección quiero poner una serie de "trucos", comandos, parametros y utilidades que tenemos en linux y que no siempre aprovechamos al 100%.
Voy a intentar clasificarlos lo mejor posible, aunque en muchos casos será bastante dificil.

Comunicaciones

Configuración del puerto ttyS0 a 1200bps sin control de terminal, también se muestran comandos para leer (en caso de que se envien carácteres ASCII) y escritura de carácteres octales.
stty raw 1200 < /dev/ttyS0
cat /dev/ttyS0
echo "\377\125\021" > 	/dev/ttyS0
Conexion a 19200 bps mediante el puerto ttyS3. Con este comando podemos hablar directamente con el modem o con el otro extremos en caso de tener un cable cruzado a otro ordenador o periférico
cu -l /dev/ttyS3 -s 19200
Volver al índice

Scripting

Ejemplo de como conseguir el PID del último comando ejecutado usando scripts sh

tail -f $FILES &
TAILID=$!
trap 'kill $TAILID; exit 1' 1 2 3 9 13 15
Este ejemplo lo que hace es mandar un tail -f a un fichero en segundo plano y luego en caso de que se le envie al script una señal de tipo 1,2,3,9,13 o 15 se mata el proceso para que no quede colgado.

Funciones útiles para el .bash_profile o similares.
ff permite encontrar rapidamente un fichero
psg encuentra los procesos que contengan en su linea de comando el parametro que hemos pasado a buscar

ff()
{
   find . -name "$1" -print
}
psg()
{
    ps -ax | grep $1 | grep -v grep
}
El uso más clásico es psg nets para ver que PID tiene el proceso del netscape :-)

Ejemplo de calculo aleatorio usando la variable de entorno $RANDOM

MAX=`cat lista | wc -w`
ALEAT=$[ (($RANDOM/32)*$MAX/1000+1 ]
Volver al índice

Ficheros, directorios, disquetes

Creación de disquete de BOOT

rdev kernel /dev/XXYZ (particion de boot)
XX (Tipo sd o hd)
Y (Drive, a o b)
Z (Particion)
dd if=kernel of=/dev/fd0
rdev -r /dev/fd0 ro   (Monta particion root solo lectura)

lilo en disquette

fichero /etc/lilo.fd
boot=/dev/fd0

lilo -c /etc/lilo.fd

Copia de ficheros de un directorio a otro. Sirve por ejemplo para copiar particiones de un disco a otro. Suponemos que tenemos montados las particiones o lo que quremos copiar en el directorio /src y la partición destino en el directorio /dst

cd /src
tar cvf - * .[a-zA-Z]* | (cd /dst ; tar xvf -)

Creación de un fichero de swap en caso de que necesitemos un aporte extra de memoria

dd if=/dev/zero of=/tmp/file_swap bs=1024 count=16384
mkswap /tmp/file_swap 16384
swapon /tmp/file_swap

Encuentra todos los ficheros sin accesos desde hace mas de 2 dias

find . -type f -no -atime -2
Volver al índice

Grabacion de CDs


Para grabaciones de CD, necesitamos saber que dispositivo es la grabadora para lo que podemos ejecutar un cdrecord -scanbus
La velocidad de grabación depende de la grabadora, pero también de los discos usados para grabar, puesto que si son muy malos y grabamos a alta velocidad, es posible que luego no se puedan leer. También es importante saber que los lectores un poco antiguos no son capaces de leer CDs grabados a altas velocidades, por lo que hay que tener claro que normalmente cuanto más lenta sea la grabación más segura será.
El tamaño de buffer que pongamos (fs=16M) permitirá correr menos riesgos en la grabación dado que si se consume ese buffer y no se tienen más datos para enviar a la grabadora, la grabación se fastidiará, por lo que si disponemos de memoria ram lo mejor será poner cuanto más buffer mejor.
Usando 16M de buffer jamas he fastidiado una grabación ni con cargas muy altas del sistema e incluso te permite grabar sin problemas de particiones montadas por red mediante NFS o SMB.

Imagen autoarrancable

mkisofs -r -R -J -b imagenes/boot.img \
-c imagenes/boot.cat -o imagen.img \
/home/cdrom
el path de boot.* es desde /home/cdrom que es el directorio a partir del cual vamos a generar el cd

Grabar Imagen datos

cdrecord -v -eject fs=16M speed=4 dev=x,y,z imagen
 x - controladora
 y - unidad
 z - lum

Sacar pistas de audio

cdparanoia -B "1-"
Este comando indica que se usará el modo batch (no interactivo) y que se procesarán las pistas de audio desde la número 1 hasta la última.

Grabar Imagen audio, a partir de los wav generados por el comando cdparanoia

cdrecord -v -eject fs=16M speed=4 dev=x,y,z \
-audio 'ls track??.cdd.wav | sort'
 x - controladora
 y - unidad
 z - lum
Volver al índice

Impresión

Impresion doble cara en caso de que la impresora lo soporte (la de nuestra oficina lo hace :-) )
El meollo de la impresión a doble cara es el parametro "-t", aunque todavía no he descubierto como configurar directamente en el filtro de impresión que imprima a doble cara
man -t errno  |  mpage -1  -ba4 -o -t  | lpr
2 hojas x cara, es decir en total 4 caras por hoja a una letra bastante lejible :-)
man -t errno     l  mpage -2 -ba4 -o -t -T  l lpr
Volver al índice

Utilidades varias y cosilla varias

Historico Bash (Para uso interactivo):
C-p  Comando anterior
C-n  Comando siguiente
M-<  primer comando
M->  Ultimo comando
C-r  Busqueda atras
C-s  Busqueda adelante
M-p  Busqueda atras no incremental
M-s  Busqueda adelante no incremental
M-C-y Inserta primer argumento comando anterior
M-.  Inserta ultimo argumento comando anterior
M-C-e Expande el comando
M-^  Expande historial

Cambio del tamaño de todas los archivos .jpg de un directorio
for i in *.jpg
> do
> mogrify -geometry 100x100 $i                           
> done
El comando mogrify pertenece al paquete ImageMagick, este mismo programa nos permite cambiar la calidad de las imagenes.
En este caso la especificación de la nueva geometria de la imagen no implican que todas las fotos vayan a ser de 100x100 sino que tendrán un tamaño lo más parecido posible a 100x100 sin deformar la foto.

Arranque de emergencia

LILO: linux init=/bin/sh
fsck /
mount -o remount,rw /
Redirección de la salida estándard y de la salida estándard de un proceso
make 2>&1  |  less
También se puede, e incluso creo que es mejor
(make 2>&1)  |  less
Configuración de la tecla de backspace en caso de terminales desconocidos, o cuando al pulsar backspace nos aparece ^H
stty erase [pulsar backspace]
Generación de una página man en postscript
groff -Tps -mandoc fich-pag-man > Fich.out
También se puede hacer, en caso de que la página man en cuestión este instalada
man -t printf > printf.ps
Generación de ficheros wav (por ejemplo para hacer CDs de audio) a partir de ficheros mp3s. Original de Grzegorz Adam Hankiewicz
mpg123 -s fichero.mp3 | sox -t raw -r 44100 -s -w -c 2 - -t wav test.wav
Adicción de los contenidos de un fichero al final de varios ficheros. Original de R. Gómez.
cat fichero | tee --append /directorio/*.c

Si quieres ponerte en contacto conmigo:

eferro@inicia.es