domingo, 4 de marzo de 2018

Crear un acceso directo para un script en Ubuntu


Hola buenas amigos, hoy os traigo este artículo mostrando para quien no sepa crear un acceso directo de un programa o script que se ejecute en el terminal de comandos.
Muchas veces queremos facilitar la vida a gente que son nuevos utilizando una distribución GNU/Linux, y están acostumbrados a ejecutarlo todo a base de clicks.

Pues bien, el otro día programé un script para que gente de mi familia pudiera hacer copias de sus documentos en discos duros externos.
Pero claro, explicales que deben ejecutar un programa en el terminal escribiendo antes "./" y deben irse a un directorio en concreto, abrir el terminal, etc...
Demasiados pasos, y no acabarán ejecutando un simple script, a no ser que creemos un acceso directo, que lo puedan buscar en el tablero o dash, o que lo encuentren en el launcher a un solo golpe de click. En mi caso utilizo Ubuntu 16.04 con el escritorio Unity. Así que vamos allá.

El script en cuestión se trata de poder comparar y realizar copias desde la computadora a unidades externas de almacenamiento mediante el comando "rsync", hablo en este enlace sobre este comando, el script es el siguiente, os lo dejo por si le sirve a alguien:

#!/bin/bash

clear
linea='"********************************************************"'
usuario=$(whoami)

echo $linea
echo "COPIA DE ARCHIVOS DESDE EL PC DEL USUARIO $usuario A:"
echo $linea
echo
echo "1) DISCO DURO MAXTOR (NEGRO)"
echo "2) DISCO DURO IOMEGA (ROJO)"
echo
read num
if [ $num -eq 1 ]; then
   if [ -d /media/$usuario/Maxtor/ ]; then
      echo "ESTA CONECTADO EL DISCO DURO MAXTOR (COLOR NEGRO)"
      echo "Empezando la copia....."
      sleep 5
      rsync -avvzh /home/$usuario/Trabajo/* /media/$usuario/Maxtor/Copia_unidad_i/
      echo
      echo "FIN DE LA COPIA"
   else
      echo "ATENCIÓN EL DISCO DURO MAXTOR NO ESTÁ CONECTADO"
   fi
fi
if [ $num -eq 2 ]; then
   if [ -d /media/$usuario/Iomega_HDD/ ]; then
      echo "ESTA CONECTADO EL DISCO DURO IOMEGA (COLOR ROJO)"
      echo "Empezando la copia....."
      sleep 5
      rsync -avvzh /home/$usuario/Trabajo/* /media/$usuario/Iomega_HDD/
      echo
      echo "FIN DE LA COPIA"
   else
      echo "ATENCIÓN EL DISCO DURO IOMEGA NO ESTÁ CONECTADO"
   fi
fi
echo
echo "PULSAR UNA TECLA PARA CERRAR LA VENTANA"
read num2

El anterior script lo nombré como "copiasArchivos.sh".


Así que vamos a crear un acceso directo para este script, yo personalmente utilizo el editor de textos "nano" para estos menesteres.
En dicho editor de textos crearemos un archivo con la extensión ".desktop", yo lo he llamado "copiasArchivos.desktop" y en él incluiremos las siguientes lineas:

[Desktop Entry]
Type=Application
Terminal=true
Name=copiaArchivos
Icon=/home/belinux/Imágenes/BLINUX_Utube_logo_peque.png
Exec=/home/belinux/copiasArchivos.sh

La primera línea es obligatoria y nos está diciendo que es una entrada de escritorio, un acceso directo de escritorio.
En la segunda línea Type, tenemos que decirle que es una aplicación.
En la tercera línea Terminal, escribiremos true, porque es una aplicación que se ejecutará en el terminal de comandos.
En la cuarta linea Name le escribiremos el nombre para el acceso directo.
En la quinta línea Icon le asociaremos la dirección de una imagen que tengamos, para que el acceso directo sea bonito.
En la sexta línea Exec le escribiremos la ruta donde tengamos guardado el script.

Una vez explicadas estas líneas lo guardaremos con el nombre que os he dicho anteriormente "copiasArchivos.desktop" y lo moveremos al directorio "/usr/share/applications", escribiremos en el terminal de comandos:

$ sudo mv copiasArchivos.desktop /usr/share/applications


Pues ya está creado el acceso directo o lanzador, ahora si lo buscamos en el dash o tablero nos saldrá:

Si lo clickeamos se ejecutará nuestro script dentro de una terminal de comandos.

Si queremos instaurarlo en el launcher, simplemente deberemos buscarlo en el dash o tablero y lo arrastramos hacia una posición del launcher donde queramos dejarlo.
Y aquí lo tenemos:

Como os digo es muy útil para que los niños o las personas mayores o no tan mayores usen los programas que creéis a golpe de click sin darles instrucciones de ningún tipo, "para hacer copias darle click en el icono y seguir las instrucciones por pantalla".

Como advertencia, a veces ocurre que terminado todo el proceso no os aparece el acceso directo en el tablero o dash, y os volvéis locos mirando que habéis hecho mal, reiniciad el equipo y os aparecerá.

Por cierto, me dejaba deciros que en el script que he creado por si alguien lo analiza, las dos últimas líneas tienen la función de que cuando termine de ejecutar el script no se cierre la ventana del terminal de comandos y podamos analizar las operaciones de copiado que ha hecho:

echo "PULSAR UNA TECLA PARA CERRAR LA VENTANA"
read num2

Creo que no me dejo nada mas que comentar en este artículo, espero os sirva de ayuda.
Saludos y hasta la próxima.


3 comentarios:

  1. pues al darle doble clic no se ejecuta mi script que podra ser ?

    ResponderEliminar
  2. Hola compañero, muy útil el tutorial. Comento si que me surgió el incoveniente de necesitar recurrir a variables de entorno en la ejecución del script, el cual no es capaz de llamarlas.

    ResponderEliminar

Gracias por participar en este blog.