57 Comandos De Raspberry Pi Que Todo El Mundo Debería Conocer


Empezar en una Raspberry Pi no siempre es fácil porque no necesariamente se tiene el hábito de usar la línea de comando.
Sin embargo, son esenciales y a menudo son más rápidos o más eficientes que pasar por la GUI.

Pues bien, hay bastantes, y aquí veremos los 57 más utilizados, ordenados por categoría:

  • Gestión de archivos
  • Comandos de red
  • Actualizaciones del sistema
  • Paquetes de gestión
  • Gestión del sistema
  • Comandos de Raspberry Pi OS
  • Comandos variados
  • Comandos para los guerreros 🙂

Esta lista se basa en mi experiencia general en Raspberry y Linux.
Cada persona utiliza su sistema de manera diferente y puede utilizar comandos que no están en la lista.
El objetivo de este artículo es presentaros los comandos esenciales para empezar, pero sin hacer una lista demasiado exhaustiva.

Gestión de archivos

Estos son los comandos básicos que todo principiante de Linux debería aprender.
Puede que ya conozcas estos comandos, así que esto puede ser más bien un recordatorio.

La jerarquía de Linux es un árbol, empezando por la raíz: /

Cada subcarpeta creada abajo es accesible con /.

Por ejemplo: /home/pi => pi es una subcarpeta de /home, home es una subcarpeta en /.

No olvides usar sudo si no tienes permiso para acceder al archivo o directorio (sudo te da privilegios de administrador para el comando que sigue).

  • cd <path>: Cambia de directorio, ve a la carpeta especificada en el árbol de archivos. cd /home/pi
  • ls: Enumera los archivos y el directorio de la carpeta actual o de la especificada.
    ls ls /home/pi
    ls -latr /home/pi

  • mkdir <folder>: Crea una nueva subcarpeta en la carpeta actual o en la especificada.
    mkdir myfolder
    mkdir /home/pi/myfolder
  • cp <file> <destination>: Copia un archivo o un directorio a otra ubicación (para copiar un directorio completo es necesario añadir el parámetro -r para “recursive”).
    cp test.txt /home/pi/Documents/
    cp /home/pi/test.txt /home/pi/Documents/
    cp -r /home/pi/test/ /home/pi/Documents/
  • mv <source> <destination>: Mueve un archivo o un directorio a otra ubicación.
    mv /home/pi/test.txt /home/Documents/
    mv /home/pi/test/ /home/Documents/
  • cat <file>: Muestra todo el contenido del archivo especificado. cat /home/pi/README.txt
  • more <file>: Muestra el contenido del archivo especificado, página por página (enter o espacio para continuar, q para salir). more /var/log/syslog
  • tail <file>: Tail permite mostrar el final de un archivo, es útil para comprobar las nuevas entradas en un archivo de registro.
    tail /var/log/syslog
    Puedes especificar el número de líneas a mostrar con -n.
    tail -n20 /var/log/syslog
    Y por último, mi favorita es la opción -f para mostrar nuevas líneas en tiempo real.
    tail -f /var/log/syslog
  • head <file>: Es lo mismo que tail pero para mostrar el principio de un archivo.
    head /home/pi/file.txt
    head -n20 /home/pi/file.txt
  • grep <string>: Grep es una poderosa herramienta para buscar cadenas en un texto. Puedes utilizarla para buscar algo en un archivo o para filtrar la salida de otro comando o script.
    Uso básico:
    grep dhcp /var/log/syslog
    Como digo, puedes usarlo en un archivo o en la salida de un script:
    cat /var/log/syslog | grep dhcp
    /home/pi/myscript.sh | grep error
    ls -latr | grep php


    Y, por último, hay muchas opciones que se pueden utilizar con grep, como expresiones regulares u opciones para mostrar líneas e.g: antes (-B), después (-A) o alrededor (-C) de la cadena de búsqueda.
    También puedes usar -v para mostrar todo menos la cadena introducida.
    grep 'dhcp|dns' /var/log/syslog
    grep -A2 -B4 'Fatal error' /var/log/apache/error.log
    grep -v 'Notice' /var/log/apache/error.log

    Si te gusta esta herramienta, te recomiendo que leas la página principal para saber exactamente qué puedes hacer con ella.
    man grep
  • nano <file>: Nano es un editor de texto. Necesitaría un artículo entero para entrar en detalle (Lo he hecho desde entonces, haga clic aquí para leer más al respecto, en inglés ^^).
    Permite editar un archivo y guardar los cambios con (CTRL + O, Enter, CTRL + X).

    nano /home/pi/myscript.sh
    Encontrarás todas las acciones disponibles en la parte inferior de la pantalla.
  • rm <file>: Elimina un archivo. Para una carpeta, añada la opción -rf (recursivo y forzado)
    rm monscript.sh
    rm -rf /home/pi/scripts/

    Ten mucho cuidado si utilizas sudo con este comando. Utilizarlo en las carpetas del sistema borrará todo sin ningún mensaje de advertencia, y puede romper el sistema en pocos segundos.
  • tar -c: Se puede utilizar tar para almacenar ficheros en un archivo. A menudo se utiliza con gzip para comprimir archivos.

    tar -cvfz archive.tar.gz /home/pi/Documents/mydirectory
    -c: crear un archivo
    -v: verbose
    -f: El nombre del archivo
    -z: comprime archivos con gzip
  • tar -x: Es el mismo comando pero para extraer archivos.

    tar -xvfz archive.tar.gz
    -x: extraer un archivo
  • find: Como el nombre sugiere, find es útil para localizar archivos en su Raspberry Pi.

    find /home/pi -iname *.tar.gz
    Hay muchas opciones para ayudarte a encontrar el archivo bueno (tamaño, fecha de última modificación, …). Y si quieres aprender opciones para encontrar rápidamente un archivo en Raspberry Pi, también puedes leer este otro artículo sobre el tema (en inglés).
  • pwd: Pwd te permite ver en qué directorio se encuentra. pwd
  • tree: Otra gran herramienta para analizar tu ubicación actual en el árbol de archivos. Te mostrará todo el árbol inferior (ver el ejemplo de abajo).
    tree
pi@raspberrypi:/var/log $ tree     
.
|-- alternatives.log
|-- alternatives.log.1
|-- alternatives.log.2.gz
|-- apt
| |-- eipp.log.xz
| |-- history.log
| |-- history.log.1.gz
| |-- history.log.2.gz
| |-- term.log
| |-- term.log.1.gz
| `-- term.log.2.gz
¡Hola!
Inscríbete para recibir mis últimos tutoriales cada semana.

Comandos de red

Poco después de su primera instalación de Raspberry Pi OS, necesitarás alguno de estos comandos para ayudarte con la configuración de la red (especialmente si estás en una versión lite o con SSH).

Configuración

Por defecto, la Raspberry Pi 3B+ viene con 2 interfaces (Ethernet y Wi-Fi). La Ethernet se llama eth0 y la Wi-Fi es wlan0. Puedes que utilizar estos nombres con algunos comandos a continuación.

  • ifconfig: Muestra su configuración de red actual, principalmente su dirección IP, si está conectado.

    ifconfig
    ifconfig

    Es la forma más fácil de encontrar la dirección de la Raspberry Pi, pero hay otras soluciones cuando no tienes acceso a ella (como explico en este artículo).
    Para información, en algunos sistemas, ifconfig ya no está disponible, en su lugar se puede utilizar:
    ip a
    para encontrar la dirección IP. Ifconfig todavía funciona en Raspberry Pi OS en el momento que estoy escribiendo esto, pero por si acaso.
  • ping <ip>: Envía un paquete ping a otra IP de la red para comprobar si el host está vivo.
    ping 192.168.1.1
  • ifup <interface>: Activa la interfaz especificada.

    sudo ifup eth0
  • ifdown <interface>: Desactiva la interfaz especificada. Puede ser útil para desactivar el Wi-Fi si ya está conectado por cable, por ejemplo.

    sudo ifdown wlan0
    Por cierto, es una gran idea desactivar la interfaz Wi-Fi si no la utilizas. Puedes encontrar soluciones más permanentes en este artículo, pero usar “ifdown” es una forma rápida de hacerlo.

Transferencia de archivos y conexión remota

  • wget <url>: Este comando permite descargar un archivo de Internet.

    wget https://wordpress.org/latest.zip
  • ssh <user>@<ip>: SSH es un protocolo de red que le proporciona una forma de conectarse de forma segura a un ordenador remoto.

    ssh root@192.168.1.201
  • scp <file> <user>@<ip>:<path>: scp puede transferir un archivo a un ordenador remoto a través de SSH.

    scp test.txt root@192.168.1.201:/root/
  • rsync <file> <user>@<ip>:<path>: rsync hace casi lo mismo pero con un algoritmo de comparación delta y algunas optimizaciones para transferir archivos más rápidamente.
    rsync test.txt root@192.168.1.201:/root/
    rsync -auzr /home/pi/Documents/* /home/pi/backups/Documents/
    Como puedes ver, también puedes usar rsync para sincronizar archivos locales.

    Generalmente empleo este comando para hacer una copia de seguridad de mi Raspberry Pi (como se explica aquí). Envío todos estos archivos de mi Raspberry Pi a mi NAS local (estoy usando este dispositivo). Se tarda unos segundos y sé que estoy a salvo después de eso.

Actualizaciones del sistema

Justo después de la configuración de la red, tendrás que actualizar tu sistema para tener instalada la última versión de cada paquete por defecto.

En Raspberry Pi OS, y generalmente en todas las distribuciones de Linux, tendrás un paquete para cada aplicación o comando que instales. Una lista de todos los paquetes disponibles se llama repositorio. Una vez instalado, necesitas actualizar este repositorio y todos tus paquetes regularmente para mantener tu sistema seguro. Estos comandos explican cómo hacerlo. Necesitaremos sudo para todos estos comandos.

  • apt update: Descarga la última versión del repositorio para cada uno de los que tiene en su configuración (/etc/apt/sources.list).

    sudo apt update
  • apt upgrade: Actualiza todos los paquetes instalados si es necesario.
  • rpi-update: Sólo utilízalo si sabes lo que hace.
    Este comando actualizará todo en su Raspberry Pi (firmware, paquetes, …) y puede potencialmente romper algo.

    rpi-update

Gestión de paquetes

Después de eso, es posible que quieras instalar nuevos paquetes en tu Raspberry Pi (en inglés).
Estos son los comandos que tienes que conocer para hacerlo:

  • apt install <package>:  Instala los paquetes especificados.
    sudo apt install phpmyadmin
    sudo apt install vim htop
  • apt remove <package>: Elimina un paquete previamente seleccionado.
    sudo apt remove vim
  • apt search <search>: Busca un nombre de paquete en la lista de paquetes (repositorio).
    sudo apt search myadmin
    sudo apt search php

  • dpkg -l: Enumera todos los paquetes instalados en tu sistema. Puedes utilizar grep para encontrar un paquete específico.
    dpkg -l
    dpkg -l | grep myadmin

Gestión del sistema

Estos son los comandos que utilizarás a menudo para gestionar tu sistema Raspberry Pi:

  • reboot: Como su nombre indica, este comando reiniciará la Raspberry Pi inmediatamente.

    sudo reboot
  • shutdown -h now: Esto es para apagar la Raspberry Pi inmediatamente.

    sudo shutdown -h now
    Puedes sustituir “now” por una hora concreta (shutdown -h 12:05). No utilices el interruptor de encendido para apagar tu Raspberry, debes hacerlo correctamente utilizando este comando o uno de los otros métodos explicados aquí (en inglés).
  • service <servicename> <action>: Este comando permite iniciar o detener servicios.
    service apache2 start
    service apache2 stop

    A veces hay otras opciones, dependiendo del servicio, por ejemplo:
    service apache2 reload
    service apache2 restart

    No escribas ninguna acción todavía, asi ves todas las disponibles:
    service apache2
    Para información, también puedes usar systemctl para hacer lo mismo, en Raspberry Pi OS tienes la opción, pero en algunos sistemas es solo systemctl.
  • update-rc.d <service> <action>: En Debian, este comando le permite gestionar el inicio o la detención del servicio en el arranque del sistema.
    Para iniciar un servicio en el arranque:
    sudo update-rc.d ssh enable
    Para desactivar el inicio del servicio:
    sudo update-rc.d -f ssh remove
    La opción -f sirve para forzar el borrado del enlace simbólico. Este comando es sólo para el servicio. Para iniciar otros scripts o comandos en el arranque, tiene que editar el archivo /etc/rc.local.
    sudo nano /etc/rc.local
  • ps: Este comando muestra todos los procesos en ejecución en su Raspberry Pi.
    El comando básico es este para mostrar todos los procesos:
    ps aux
    También puede mostrar los procesos iniciados por un usuario específico:
    ps -u pi
    Esto le dará una lista como esta:
    ps linux command
    El ID del proceso (PID) puede ser útil para otros comandos, para detenerlo por ejemplo (siguiente comando)
  • kill <pid>: El comando kill te permite terminar un proceso. Necesitarás el ID del proceso para hacerlo (ver el comando anterior).

    kill 12345
    A veces es necesario utilizar la opción -9 para forzar la detención de todos los comandos relacionados.
    Por ejemplo, si ejecutas 20 comandos en un script y lo matas, continuarás con la siguiente línea, no saldrás del programa, excepto si utilizas la opción -9.

    kill -9 12345
    También puedes utilizar killall para detener todas las apariciones de un programa.

    killall php
    Este comando detendrá todos los scripts de PHP.

    Tenga en cuenta que este comando detendrá inmediatamente el proceso preguntado, sin importar lo que estaba sucediendo. No es una parada limpia.

    En ese momento no sabes lo que el script está haciendo, por lo que puedes dañar los datos o corromper los archivos.
    Esto debe utilizarse como último paso, y si es posible en un momento no crítico.
  • htop: Esta herramienta es una alternativa a top. Es más fácil de usar que top, con colores y barras de carga dinámicas.

    htop
  • df: Muestra la lista de particiones, con el espacio de disco utilizado y disponible para cada una.
    df
    df -h
    -La opción -h es para el formato legible por humanos.
  • vcgencmd measure_temp: Puede que no lo recuerdes, pero este comando muestra la temperatura actual de la CPU.

    vcgencmd measure_temp

Comandos del Raspberry Pi OS

La mayoría de los comandos de este post son básicamente comandos de Linux.
Pero Raspberry Pi OS tiene algunos exclusivos que voy a presentar.

No todos son esenciales, pero es posible que no los conozcas aunque seas bueno con Linux:

  • raspi-config: Esta herramienta permite gestionar toda la configuración desde un terminal o una conexión SSH.

    sudo raspi-config
    raspi config
  • raspistill: Si tiene una cámara conectada al módulo (módulo de cámara), este comando toma una foto y la guarda como un archivo de imagen.

    raspistill -o image.jpg
  • raspivid: Lo mismo que con la cámara pero captura video

    raspivid -o video.h264 -t 10000
    El parámetro -t es el tiempo de la captura en milisegundos.

  • raspi-gpio:  Este comando permite gestionar los pines GPIO de la Raspberry Pi. Puede establecer u obtener un valor.
    raspi-gpio get
    raspi-gpio get 20
    raspi-gpio set 20 a5
    raspi-gpio set 20 op pn dh
  • raspividyuv or raspiyuv:  Este comando es similar al raspivid pero para un flujo de vídeo YUV sin procesar.

    raspividyuv -o video.yuv
  • rpi-update: Utilice esto sólo si sabes lo que estás haciendo. Esto actualizará todo en la Raspberry Pi (firmware, paquetes, …) y puede potencialmente romper algo.

    sudo rpi-update

Misc

Aquí hay otros comandos útiles que no he podido colocar en las otras categorías :):

  • history: Linux almacena cualquier comando que escriba en un archivo. History es el comando a utilizar para mostrar esta lista.
    history

    También puedes borrar todo el historial.
    history -c
    O borrar una entrada específica.
    history -d 12
  • crontab: Cron es una herramienta para programar tareas en Linux. Crontab es el archivo donde se introducen las líneas para cada tarea a ejecutar.

    crontab -l crontab -e
    La opción -l para mostrar las líneas.
    La opción -e para editar las líneas.
    Puedes usar sudo antes para programar tareas que se ejecuten con privilegios de root.
    Tengo un tutorial completo sobre este tema (en inglés) si necesitas más información.
  • screen: Esta herramienta te permite dejar que algo se ejecute en segundo plano aunque cierres la sesión.

    screen -s <name> screen -r <name>
    -s para iniciar una nueva pantalla con el siguiente nombre.
    La opción -r permite reanudar una pantalla en funcionamiento con este nombre.
    Puedes olvidar el nombre si quieres, se generará un ID, utiliza screen -r para encontrarlo y screen -r para reanudarlo.
    Con una sola pantalla en funcionamiento, screen -r la reanudará directamente.

Comandos para los guerreros

En esta última parte, presentaré algunos poderosos comandos para dominar tu Raspberry Pi
Si empiezas en Linux, puede que no necesites conocer este, pero si quieres ahorrar tiempo o ir más allá en Raspberry Pi, deberías conocer estos comandos

awk: awk es casi un lenguaje de programación, permite buscar cadenas y transformarlas para mostrarlas de forma diferente.
Así que será difícil resumir todas las posibilidades en unas pocas líneas, pero intentaré poner algunos ejemplos para entenderlo.
La sintaxis básica de awk es ésta:

He aquí un ejemplo básico:

awk -F":" '{print $1}' /etc/passwd

/etc/passwd es el archivo a analizar. El separador de campos es “:” por lo que lo utilizamos en la opción -F.
Luego, en la cadena del programa, pedimos que se muestre sólo la primera columna.
Por lo tanto, este comando sólo mostrará una lista de nombres de usuario.
Esta es la forma sencilla de usarlo si quieres saber más, te recomiendo leer un tutorial dedicado como este.

sed: sed le permite hacer cosas similares a awk. Este comando transformará el texto en lo que tu quieras.
En cuanto a awk, es un comando complejo de dominar, y solamente lo presentaré aquí.
La sintaxis básica es la siguiente:

sed <option> <script> <file>

Así que está muy cerca de awk en complejidad.
Veamos un ejemplo:

sed '/^#/d' /etc/apache2/apache2.conf

En cada archivo de configuración, encontrarás un montón de comentarios que explican qué es cada línea.
Este comando transformará el archivo de configuración de apache a uno sin comentarios.
Utilizaremos una expresión regular para eliminar las líneas que empiezan por #.
Tienes que redirigir la salida a otro archivo para guardarla.

sed '/^#/d' /etc/apache2/apache2.conf > /etc/apache2/apache2-nocomment.conf 

Al igual que en el caso de awk, esto es sólo una muestra de lo que sed puede hacer.
Si quieres saber más, también hay un buen tutorial de sed en el mismo sitio web.

cut: cut es la última forma de transformar texto que presentaré. Es menos potente pero es más simple de usar, así que si cut puede hacerlo, probablemente preferirás usarlo en lugar de awk o sed.
Como su nombre indica, cut permite extraer parte de un texto o archivo.
La sintaxis básica es:

cut <options> <file> 
echo <string> | cut <options>

El primero es para el archivo, y el segundo para cortar la cadena directamente.
Un ejemplo básico ahora:

echo "abcdefghi" | cut -c 2-4 

Esto mostrará sólo “bcd”.
La opción -c es para el carácter, así que básicamente, extraerá los caracteres 2 a 4.

Aquí hay otras opciones con un archivo:

cut -d : -f 1 /etc/passwd 

Esto hará lo mismo que el primer ejemplo del comando awk.
/etc/password es un archivo con el uso de “:” como delimitador.
-d es dar el carácter delimitador (“:”).
La opción -f es para indicar la columna a extraer (f significa el fields).
Así, esto mostrará sólo la primera columna y obtendrá una lista de nombres de usuario.

wc: wc significa Word Count, permite contar todo lo que hay en un archivo o flujo.
Hay tres opciones principales: -l para líneas, -w para palabras y -m para caracteres.
También existe la opción -c para obtener el tamaño del archivo.
wc sin opción te dará todo esto.

wc .bash_history 
668 1977 17979 .bash_history

La primera columna es el recuento de líneas, la segunda es el recuento de palabras y la última es el tamaño del archivo en bytes.
He aquí algunos ejemplos de opciones:

wc -l .bash_history 
ls -latr | wc -l
wc -w myfile.txt

lsof:  lsof significa “List open files”. Este comando muestra todos los archivos abiertos en su Raspberry Pi.
Esto puede ser útil para saber por qué no se puede editar un archivo, o qué archivo bloquea el proceso de desmontaje.

lsof

watch: Si estás esperando algo, en un archivo o directorio, el comando watch puede ayudarte a monitorear lo que sucede. Esto ejecutará el mismo comando cada dos segundos.

watch date 
watch ls -latr
watch cat output.txt

También puedes cambiar la frecuencia de ejecución del comando con la opción -n.

watch -n10 date

Esto mostrará la fecha actual cada diez segundos.

netstat: Netstat es una poderosa herramienta para monitorear lo que la Raspberry Pi está haciendo con la red. Por ejemplo, puedes ver cada puerto abierto y el flujo de tráfico de cada uno.
Netstat es una herramienta compleja que no se puede explicar en detalle en unas pocas líneas.
Únicamente presentaré algunos usos básicos para mostrar las funcionalidades que puedes utilizar:

netstat -l

La opción -p añadirá el ID del proceso (PID).

netstat -lp

La opción -c permite refrescar los datos continuamente.

netstat -lpc

Puedes encontrar todas las opciones en la página página man de netstat.

dmesg:  Este comando es útil para entender los problemas de arranque de una Raspberry Pi.
Te mostrará cada evento que haya ocurrido en la secuencia de inicio.
Aquí podrás ver los errores de los controladores o servicios y entender por qué algo no funciona como quieres.

dmesg

Obtendrás una columna con el tiempo transcurrido desde el inicio del arranque y un texto explicando lo sucedido.
También hay mensajes normales cuando todo está bien.
Si tu Raspberry Pi no arranca, también puedes consultar mis otros consejos aquí (en inglés).

Vídeo

Si necesitas una demostración rápida de estos comandos, puedes consultar este vídeo:

Y por favor, suscríbete para recibir todos los nuevos vídeos en tu feed de YouTube:

Conclusión

Aquí estamos.
Ahora deberías tener una mejor idea de los comandos que debes aprender para sacarle el máximo partido a tu Raspberry Pi.

Y tú, ¿qué comandos son los que más utilizas?
Puedes verlos analizando tu archivo histórico con este comando:

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

Patrick FROMAGET

Hola, soy Patrick. Soy administrador de sistemas Linux, y me apasiona la Raspberry Pi y todos los proyectos sobre este tema. He creado este sitio para compartir con ustedes lo que he aprendido al respecto.

Últimos artículos