Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tucos Raspi Diverteka
Tucos Raspi Diverteka
Siempre que tenemos que utilizar comandos muy largos o difíciles de memorizar en el
terminal seguro que desearíamos cambiarlos por otros más sencillos. Bueno, pues
aunque esto no es posible, lo que si que podemos hacer es una especie de comandos
particularizados a nuestro gusto personal. Para ello haremos uso del comando alias
de Linux, el cual nos permite asociar cierto texto a un comando existente determinado.
Y para entender esto nada mejor que unos ejemplos.
Supongamos que cada vez que deseamos borrar la pantalla del terminal tecleamos -
por reminiscencias de nuestro conocido DOS - el comando cls, ¿qué ocurre?, pues
que tenemos un bonito error ya que el comando linux equivalente sería clear .
Podemos crear todos los alias que deseemos para simplificar nuestro uso diario del
terminal. Para poder asociarlos incluso con parámetros añadidos hemos de utilizar la
comilla simple. Algunos ejemplos que se nos ocurren ahora mismo son:
Nota : el punto en . bashrc significa que es un fichero oculto, podemos usar ls -a para
verlo.
Para editar el fichero llamamos al editor nano mediante el comando nano .bashrc
Nota: para modificar los alias para todos los usuarios tendremos que modificar el
fichero equivalente en /etc/
… pero supongamos que dicha información (en nuestro caso, el listado) ha de ser
enviado a otra persona para su análisis. Pues lo que hacemos es utilizar el operador
de redireccionamiento “>” de Linux. Al hacerlo lo que ocurre es que la información que
debería salir en pantalla se envía al fichero de nuestra elección (lista.txt en nuestro
ejemplo). Luego podemos usar el comando more lista.txt para visualizarlo.
Cuando tenemos dos copias de un mismo fichero de trabajo puede ser preciso saber
si las dos copias son idénticas o no. En este caso podemos usar el comando de
comparación cmp . En nuestro ejemplo comparamos 2 ficheros de texto. En caso de
que no hubiera diferencia entre ambos no se obtiene salida a pantalla tras ejecutarlo,
pero si la hubiera el comando (o función) nos devuelve datos de la diferencia
encontrada. Hemos preparado 2 ficheros modificando en el segundo un par de
caracteres (en concreto hemos pasado una “o” a valer “O” y una “a” a valer “A”). Ahora
probamos el comando con diferentes opciones:
Para una comparación completa y con más info => cmp File1 File2 -lb
Puede que en cierto momento queramos re-utilizar un comando que hemos ejecutado
en el terminal y no recordemos su sintaxis. En primera instancia podemos recurrir al
truco de recuperar mediante las flechas del teclado comentado en una entrada previa
del blog - Trucos Linux para Raspi (1) - , pero también podemos hacer uso del buffer
que Linux guarda con los últimos comandos ejecutados. Podemos ver dicho buffer
ejecutando history , o incluso volcarlo a fichero con el comentado history >
comandos.txt . Obtendremos una lista numerada de dichos comandos, tal y como se
ve aquí :
Pero supongamos por un momento que, de entre los comandos ejecutados decidimos
repetir uno. Para ello solo tenemos que utilizar el símbolo “!” seguido del número que
el buffer haya asignado a dicho comando. En nuestro ejemplo ejecutamos ¡229 que
equivale al comando “ls -l”, por lo que el sistema repetirá dicho comando.
Nota: si ejecutamos !! se repetirá el último comando enviado al sistema.
Link de utilidad:
Para poder tener a manos los comandos (funciones) Linux más utilizados podemos
hacer uso de las recopilaciones existentes en la Web en forma de tarjeta-resumen, de
entre las existentes recomendamos Unix/Linux Command Rerference FOSSwire.
Hay veces en que un usuario - por la razón que fuera - prefiere no tener que “logearse”
cada vez que la Raspberry se arranca. Para ellos existe una solución: el denominado
“auto-login”. Si lo efectuamos conseguiremos que el sistema inicie normalmente pero
no precise ya la introducción de los consabidos usuario y password. Para configurar el
auto-login solo hemos de efectuar un sencillo paso, a saber, editar el fichero inittab.
Aquí vemos los pasos a seguir:
Localizamos la cadena
sudo reboot
Uno de los comandos que a mi siempre me ha parecido más curioso dentro del
sistema operativo Linux es el comando cal. En principio, este comando - junto con
ncal - nos mostrará en el terminal la información relativa al calendario. Lo curioso es
que el comando tiene una llamativa presentación a la vez que ciertas posibilidades de
uso bastante interesantes… así que vamos a ver su potencia con unos ejemplos.
Si ejecutamos el comando cal directamente, la respuesta será algo como esto. ¿Muy
visual, verdad?...
pero parece que, en este caso, el comando nos devuelve la semana empezando en
Domingo (formato anglosajón), pues para forzar a que nos indique el Lunes como
primer día ejecutaremos el comando alternativo ncal de la forma : ncal -MC
Pero el comando ncal admite varias posibilidades añadidas, como ejemplo, vamos a
pedirle que nos muestre el calendario completo para el año 2012 mediante ncal 2012
-MC
Queda claro que variando el parámetro del año podremos visualizar el calendario
anual que nos apetezca. Si, por ejemplo, queremos ver el mes de marzo de 2013
teclearemos ncal 3 2013 -MC
Y ahora supongamos que para organizarnos queremos ver el mes de marzo de 2013 y
los meses previo y posterior al mismo. Pues tecleamos ncal 3 2013 -MC -3
En el caso de que necesitemos ver - por ejemplo - el mes de febrero de 2013 pero con
sus semanas asociadas, teclearemos ncal 2 2013 -M -w (el número de la semana
aparecerá en la zona inferior)
Y ya por último, y en tono más lúdico, si queremos saber que día era el de nuestro
nacimiento…. supongamos que nacimos el día 5 de enero de 1980. Podemos
averiguar que día fue con solo ejecutar: ncal 1 1980 -MC
Existen - gracias al servicio prestado por varias páginas - opciones variadas para
saber nuestra IP pública. Por ejemplo, si estamos usando un navegador en modo
gráfico podemos ir a la página de adslayuda y elegir la opción cual es mi ip que
aparece en el menú de la derecha …
o bien
En Linux, como en casi cualquier otro sistema operativo, existen comandos para
localizar ciertas cadenas en determinados ficheros. Uno de los comandos más
potentes de Linux ( y en general de cualquier sistema *nix) es el comando grep.
Y como nada es mejor que un buen ejemplo, vamos a utilizar un fichero de texto plano
para poder explicar algunas de las opciones de grep. En este caso, usaremos uno de
los ficheros creados para nuestro curso de programación en lenguaje C (edad.c), y
que se encuentra - como es lógico - en la carpeta /home/pi/curso/ . Así que primero
nos situamos en la carpeta y luego mostramos lo que el fichero contiene (usamos el
comando more), lo que nos sirve de punto de partida para practicar con grep.
Un uso simple de grep sería el utilizado para localizar las cadenas existentes en el
fichero y que sean (por ejemplo) : “2012”, para lo cual ejecutaré grep “2012” edad.c.
Vemos que nos devuelve una única línea ya que la cadena 2012 solo existe una vez
en el fichero.
Si ahora decidimos localizar -por ejemplo- la cadena “int” y, además, que nos indique
el número de línea donde se localizen dichas cadenas, ejecutamos: grep “int” edad.c
-n
Ahora decidimos que queremos saber cuantas líneas del fichero edad.c no contienen
el carácter “;”, que como sabemos está en casi todas los finales de línea de un
programa en C. Para ello introducimos el parámetro de búsqueda inversa (esto es, no
coincidencia) y que se escribe como -v, por lo que el comando será: grep “;” edad.c
-n -c
Una de las posibilidades que Linux (Unix) nos ofrece es poder trabajar con terminales -
o consolas - virtuales. Esto significa acceder al sistema mediante sesiones totalmente
diferentes y concurrentes. En cada una de las sesiones dispondremos de un terminal
virtual, cuya única limitación será la impuesta por nuestro LOGIN, es decir, que al
acceder a la sesión cada usuario tendrá los privilegios asignados al mismo.
Esto nos puede facilitar ciertas tareas cuando, por ejemplo, estando en el modo gráfico
queremos acceder a cierto directorio o efectuar alguna consulta de forma paralela.
Vamos, que podemos tener varias sesiones abiertas y efectuar trabajos diferentes en
cada una de ellas.
En nuestra Raspi también podemos utilizar los terminales virtuales. Vamos a ver
cómo...
Nota: los terminales virtuales operan con la version Raspbian, pero
no así con los Linux preconfigurados como mediacenter (p.ej. XBian o XMBC).
Hemos puesto el ejemplo del terminal 2 debido a que, dependiendo que nuestro
arranque sea de tipo gráfico o no, el terminal que estemos utilizando variará (el
terminal 1 pudiera estar bloqueado por el arranque de la sesión gráfica).
Linux identifica el terminal donde nos encontramos como ttyx (siendo x el número del
mismo), leyenda que podemos observar en la parte superior del terminal al iniciar la
sesión.
El comando who nos indica qué usuario está activo y qué sesión esta utilizando.
Vemos aquí como la Raspi esta siendo utilizada por dos diferentes usuarios, a saber,
pi y txus.
Otro comando interesante es whoami -en clara referencia a la expresión inglesa "Who
am I?", que nos indica al teclearlo bajo que usuario se está utilizando la consola en
cuestión.
Una de las ventajas de los sistema Linux es el controls total ejercido por el usuario
sobre todas y cada una de la tareas que ejecuta el sistema. En la Raspi no tenemos
un control de tareas utilizable en el modo gráfico (hay muchos en las diferentes
versiones de escritorio de Linux), pero lo que si podemos hacer es controlar dichas
tareas desde el propio terminal.
El comando por excelencia para conocer las tareas en curso es ps. Si lo ejecutamos
con el parámetro -a el terminal nos devolverá todos los procesos (tareas) que el
sistema esté realizando, sea cual sea el usuario (dueño) del mismo.
Parece evidente que todos los usuarios de Raspi a nivel mundial utilizan - en principio
- el mismo login, esto es, los mismas credenciales (usuario y clave) para acceder al
sistema.
En caso que, por la razón que fuera, quisieramos cambiar la clave a nuestra RasPi
solo hemos de teclear lo siguiente:
passwd <Enter>
En el caso de que la contraseña sea muy corta o de que la misma sea muy "fácil" el
sistema se "quejará" y nos obligará a poner una más larga o más compleja.
Ahora bien, existe también la posibilidad de ejecutar un comando que nos de una
información aún más detallada, para esto ejecutaremos
Y ahora, supongamos que hemos comprado una nueva tarjeta SD y queremos replicar
en ella todos los paquetes instalados en la anterior. Pues lo que hemos de hacer es
a) obtener la lista de paquetes de la SD antigua
Si queremos saber algun dato más sobre nuestra Raspberry podemos hacerlo desde
el propio terminal sabiendo los comandos adecuados. Vemos como ...
more /proc/cpuinfo
Aquí tendremos, entre otras cosas, el número de serie de nuestra Raspberry, que
puede sernos imprescindible si -por ejemplo- queremos adquirir/activar el Codec de
video para nuestra tarjeta.
Si estamos temiendo llenar nuestra tarjeta (y que llegue la hora de migrar a una de
más capacidad) es una buena ocasión para comprobar el espacio restante en la
misma.
df
el cual nos devolverá la información "tal cual" sobre el reparto de bytes en nuestra
Raspberry, pero si queremos que la misma información se nos muestre en una forma
"human readable" es mejor ejecutar
df -h
cp /usr/share/applications/mc.desktop /home/pi/Desktop/
Nota: recordamos que Linux es "case sensitive", o sea, que prestemos atención al
segundo Desktop, que empieza por mayúscula.
Cambiar la clave de un usuario del gestor MySQL puede ser sencillo o bien volvernos
locos si no damos con la "exacta" combinación para efectuar dicho cambio. Y como
nada se explica mejor que con un ejemplo, vamos a suponer que el usuario "root" de
MySQL - cuya clave queremos cambiar - desea que ahora sea, por ejemplo, "6666".
Pues bien, el proceso a seguir es:
B) Ejecutamos el comando:
sudo comando
Pero cuando, por comodidad o por alguna otra causa, deseemos no tener que repetir
el comando sudo constantemente, podemos hacer que el login que estamos usando
se convierta en superusuario (su) para el resto de la sesión activa (o hasta que
deseemos abandonarla). Para ello ejecutaremos
> sudo -i
> exit
Para verificar como esta configurada la red, en Linux todo lo que hemos de hacer es
ejecutar:
> ifconfig -a
Aqui veremos si nuestra red tiene una IP interna asociada, así como parametros de
gateway, DNS, etc.
Pero si, además, queremos ver rapidamente que la red de nuestra Raspberry esta
conectada a Internet, tan solo hemos de efectuar un ping - por ejemplo - a Google de
esta forma: