Google+

27 abril 2014

Programar en Bash, pequeño manual de referencia [Cheat Sheet]


Aquí os dejo un pequeño manual de referencia, personal sobre Bash. 

1. Cómo ejecutar scripts Bash

Para escribir en Bash puedes hacerlo directamente desde la consola/terminal de GNU/Linux, sin embargo, su mayor potencia radica en poder escribir ‘scripts’ y ejecutar piezas de código para automatizar tareas. Aquí muestro paso a paso un ejemplo.

1.1. Escribe un ‘script’ Bash

Abre tu editor de textos favoritos y escribe el siguiente código.

#!/bin/bash
echo "Hola mundo"

Guárdalo como holamundo.sh (la extensión no importa pero ésta es renococida por muchos editores de texto) .

1.2. Dale permisos

Para lanzar el ‘script’ Bash, dále permisos de ejecución. Para ello escribe en tu terminal/consola de comandos:

chmod u+x holamundo.sh

Recuerda ejecutar este comando y los siguientes en la misma carpeta/directorio donde se encuentra holamundo.sh

1.3. Ejecútalo

Lanza el ‘script’ ejecutando en tu terminal/consola:

./holamundo.sh

Si no ha habido ningún problema se ejecutará el ‘script’ de Bash mostrando la frase “Hola mundo”.


2. Características Bash

Aquí se mostrarán las características de dicho intérprete de comandos o shell de GNU. Recuerda que los comandos son las acciones a ejecutar desde la consola/terminal Linux. En la siguiente sección hay una recopilación de ellos.

2.1. Comentarios

Los comentarios en Bash se hacen línea a línea con el símbolo #.

#!/bin/bash

#
# Hola Mundo comentado
#

echo "Hola mundo"

2.2. Variables

Las variables no tienen tipo, es decir, una variable puede contener una cadena, un número, etc. sin necesidad de definirlo.

La sintaxis es:

nombre_variable=valor_variable

Es obligatorio no dejar espacios antes o despues del simbolo ‘=’ ya que sino Bash interpretaría la variable como un comando Linux.

Para acceder a una variable simplemente escribe como prefijo $ en el nombre de la variable.

echo $varname

Un ejemplo sencillo:

#!/bin/bash

# Asignación y salida de variables

mivariable="Me llamo Nacho"
echo $mivariable

2.2.1. Paso de variables

Cuando ejecutas desde tu terminal/consola tienes la posibilidad de pasarle más argumentos. Por ejemplo:

./miScript.sh hola 4

Para recoger estos valores escribe $ y a continuación el número de posición del argumento pasado. El primer argumento tiene valor $1, que sería ‘hola’, y el segundo argumento sería $2, en el ejemplo sería el número 4. La variable $0 es el propio nombre del archivo.

#!/bin/bash

#
# Paso de variables
#

echo "Tu primer argumento es" $1
echo "Tu segundo argumento es" $2

También hay que destacar que $? guarda el valor de salida del último comando ejecutado. $* almacena todos los argumentos y $# es el número de argumentos pasados.

2.3. Comparaciones y/o expresiones

Los condicionales y bucles se rigen mediante la evaluación de una expresión. Por eso lo primero es saber cómo programar en Bash las evaluaciones de una expresión.

La evaluación de una expresión da como resultado verdadero o falso. Si la comparación o evaluación de la expresión es verdadera se ejecutará el bucle o la condicional, si es falsa la evaluación no se ejecutará.

En Bash, la sintaxis es la siguiente:

test expresión
ó

[ expresión ]

Un ejemplo de expresión sería [ 3 -eq 5 ] que comprueba si el valor 3 es igual a 5. Como es incorrecto, el valor que devuelve es falso. Los símbolos [ y ] tienen que estar obligatoriamente separados por un espacio.

2.3.1. Comparaciones numéricas

numero1 -eq numero2: Devuelve verdadero si 'numero1' es igual a 'numero2'.
numero1 -ge numero2: Devuelve verdadero si 'numero1' es igual o mayor a 'numero2'.
numero1 -gt numero2: Devuelve verdadero si 'numero1' es mayor a 'numero2'.
numero1 -le numero2: Devuelve verdadero si 'numero1' es igual o menor a 'numero2'.
numero1 -lt numero2: Devuelve verdadero si 'numero1' es menor a 'numero2'.
numero1 -ne numero2: Devuelve verdadero si 'numero1' no es igual a 'numero2'.

2.3.2. Comparaciones de cadenas

cadena1 = cadena2: Devuelve verdadero si 'cadena1' es idéntica a 'cadena2'.
cadena1 != cadena2: Devuelve verdadero si 'cadena1' no es idéntica a 'cadena2'.
cadena1: Devuelve verdadero si 'cadena1' es nulo (no significa que su longitud sea cero).
-n cadena1: Devuelve verdadero si la longitud de caracteres de 'cadena1' es mayor que cero.
-z cadena1: Devuelve verdadero si la longitud de caracteres de 'cadena1' es cero.

2.3.3. Comparaciones de ficheros

-d nombrefichero: Devuelve verdadero si el fichero es un directorio.
-f nombrefichero: Devuelve verdadero si el fichero es un archivo.
-r nombrefichero: Devuelve verdadero si el fichero puede ser leído.
-w nombrefichero: Devuelve verdadero si el fichero puede ser escrito.
-x nombrefichero: Devuelve verdadero si el fichero es ejecutable.

2.3.4. Comparaciones de expresiones

!expresión: Devuelve verdadero si la expresión no se cumple.
expresión1 -a expresión2: Devuelve verdadero si la expresión1 y la expresión2 se cumplen (también vale &&).
expresión1 -o expresión2: Devuelve verdadero si la expresión1 o la expresión2 se cumplen (también vale ||).

2.4. Condicionales

En programación, una sentencia condicional es una instrucción que se pueden ejecutar o no en función del valor de una expresión. En Bash, las condicionales más populares son los siguientes:

2.4.1. If – Then

if [ expresión ]
then
comandos
fi

2.4.2. If – Then – Else

if [ expresión ]
then
comandos
else
comandos
fi

2.4.3. If – Then – Else if – Else

if [ expresión1 ]
then
comandos
elif [ expresión2 ]
then
comandos
else
comandos
fi

2.4.4. Case

case cadena in
cadena1)
comandos
;;
cadena2)
comandos
;;
*)
comandos
;;
esac

Se comprueba cadena. Si concuerda con cadena1 se ejecutará los comandos correspondientes hasta llegar a ;;. Lo mismo ocurre con cadena2. Si cadena no coincide con cadena1 o cadena2 entonces se ejecutará *. Se puede añadir tantas cadenas de verificación como uno desee.

2.5. Bucles

Un bucle repite los comandos que uno ha escrito tantas veces hasta que la expresión se verifique.

2.5.1. For

Existen muchas maneras de realizar un bucle for en Bash. Yo sólo uso ésta:

for (( inicializador; condición; incremento ))
do
comandos
done

Su sintaxis es casi idéntica a C. Aquí un ejemplo:

#!/bin/bash
for (( c=1; c<=5; c++ ))
do
echo "Bienvenido $c veces..."
done

2.5.2. While

while [ expresión ]
do
comandos
done

2.5.3. Until

until [ expresión ]
do
comandos
done


3. Comandos Linux

Lista de comandos más importantes según la Wikipedia.

3.1. Ayuda

man: muestra manual del comando que le indiquemos.
--help: da una ayuda de los comandos.

3.2. Archivos y directorios

ls: lista los archivos y directorios.
sort: ordena alfabéticamente una lista de archivos.
cd: cambio de directorio.
pwd: muestra la ruta al directorio actual.
tree: muestra la estructura de directorios y archivos en forma gráfica.
mkdir: crea un directorio.
rmdir: borro directorios.
rm -r: borra directorios no vacíos.
cp: copia archivos.
rm: borra archivos.
mv: mueve o renombra archivos y directorios.
cat: ve el contenido de uno o varios archivos.
more: ve el contenido de los archivos.
less: ve el contenido de los archivos.
split: dividir archivos.
find: busca archivos.
locate: localiza archivos según una lista generada.
updatedb: actualiza la lista de los archivos existentes.
whereis: muestra la ubicación de un archivo.
file: muestra el tipo de archivo.
whatis: muestra descripción del archivo.
wc: cuenta líneas palabras o caracteres en un archivo.
grep: busca un texto en archivos.
head: muestra el inicio de un archivo.
tail: muestra el final de un archivo.
tailf: muestra el final de un archivo y lo que se añada en el instante (logs).
tr: reemplaza caracteres en un fichero de texto.
sed: cambia una cadena de caracteres por otra.
join: cruza la información de dos archivos y muestra las partes que se repiten.
paste: toma la primera línea de cada archivo y las combina para formar una línea de salida.
uniq: elimina líneas repetidas adyacentes del archivo entrada cuando copia al archivo salida.
cut: sirve para seleccionar columnas de una tabla o campos de cada línea de archivo.
ln: crea enlaces a archivos o carpetas.
diff: muestra las diferencias entre dos archivos.
fuser: muestra que usuario tiene en uso o bloqueado un archivo o recurso.
tar: empaqueto archivos.
gzip: comprime archivos gz.
gunzip: descomprime archivos gz.
compress: comprime archivos Z.
uncompress: descomprime archivos Z.
chmod: cambio permisos a archivos y directorios.
chown: cambio de propietario.
chgrp: cambio de grupo.
vi: abre el editor de texto vi.
pico: edita un fichero de texto.

3.3. Usuarios

adduser: agregar nuevo usuario.
useradd: agregar nuevo usuario.
userdel: borra un usuario.
passwd: permite cambiar la contraseña.
su: cambio de usuario.
whoami: muestra el nombre de usuario.
logname: muestra el nombre de usuario.
id: muestra datos de identificación del usuario.
finger: da información de usuario.
chfn: cambia la información del finger.
who: muestra los usuarios del sistema.
w: muestra un detalle de los usuarios.
last: información de los últimos usuarios que han usado el sistema.
mail: programa de correo.
pine: lector de correo en modo texto.
write: manda un mensaje a la pantalla de un usuario.
mesg: activo o desactivo recibir mensajes.
wall: mensaje a todos los usuarios.
talk: establecer una charla con otro usuario.
banner: saca letrero en la pantalla.
set: da información sobre el entorno del usuario.
addgroup: agregó nuevo grupo.
groupadd: agregó nuevo grupo.
chown: cambia el propietario de un fichero.

3.4. Procesos

top: muestra los procesos que se están ejecutando y permite matarlos.
ps: muestra la lista de procesos del usuario.
ps aux: muestra la lista de procesos de la máquina.
kill: mata proceso por ID.
killall: mata proceso por nombre.
time: mide el tiempo que tarda un proceso en ejecutarse.
fg: trae a primer plano un proceso parado o en segundo plano.
bg: pone un proceso en segundo plano.
&: colocado al final de la línea de comando ejecuta en segundo plano.
nice: ajusta la prioridad de un proceso de -20 a 19.

3.5. Discos

mount: monta un disco.
umount: desmonta un disco.
df: muestra el espacio libre de los discos.
du: muestra el espacio usado por el disco o un directorio.
mkfs: formateo un disco.
fsck: estado del disco.
fdisk: gestión de particiones.

3.6. Red

netstat: muestra estado de la red.
ifconfig: muestra la configuración del dispositivo de red.
iwconfig: muestra la configuración del dispositivo de red inalámbrico.
nmap: escanea la red y muestra los puertos que se encuentran disponibles.
ping: indica si hay respuesta por parte del servidor.
nslookup: me da la IP de nuestro servidor DNS.
telnet: me conecto a un equipo remotamente.
netconf: configuro la red.
ntop: muestra los procesos de la red.
route -n: muestra la tabla de rutas.

3.7. Sistema

rlogin: se conecta a otra máquina de forma remota (remote login).
rsh: se conecta a otra máquina de forma remota (remote shell).
ftp: se conecta a otra máquina por el protocolo ftp.
reboot: reinicia la máquina.
halt: apaga el sistema.
shutdown: apaga el sistema.
init0: apaga la máquina.
init6: reinicia la máquina.
uptime: muestra el tiempo transcurrido de encendida la máquina.
exit: cierro sesión actual.
logout: salgo del sistema.
nohup: proporciona inmunidad frente a rupturas de comunicación..
dmesg: muestra mensajes del arranque del ordenador.
history: muestra todos los comandos digitados por el usuario.
uname: da información del sistema operativo.
tee: copia la entrada estándar a la salida estándar y a un archivo.
host: muestra la dirección IP del servidor en una red local.
hostname: muestra el nombre del servidor.
umask: muestra y permite cambiar la máscara de usuario.
chroot: cambia la raíz para que root ejecute algo en forma particular.
chsh: cambia el login shell.
free: estado de la memoria.
date: muestra fecha y hora actual.
cal: muestra calendario.
clear: borro la pantalla.
at: ejecuta un comando más tarde.
env: ver variables de entorno.
export: permite el uso de variables por programas en todos los caminos del usuario.
modprobe: cargo modulo.
startx: arranca el servidor X.
xev: muestra los eventos de las teclas y el ratón.
lspci: muestra los periféricos conectados al puente pci.
lsmod: muestra los modulos cargados en el sistema.
echo: escribe un mensaje en la salida estándar.
alias: crear un alias. Un comando largo abreviado en pocas letras.
unalias: borrar un alias.
bc: calculadora.
mc: ejecuta Midnight Commander.
xkill: mata una ventana gráfica.
rpm: instala los paquetes rpm RedHat.
dpkg: instala los paquetes deb Debian.
kernelcfg: manejo los modulos cargados en el kernel.
insmod: inserta modulos en el kernel.
rmmod: elimina modulos del kernel.
updatedb: actualiza la base de datos interna de archivos.
sh: cambia al bash shell.
setxkbmap: por si no funcionan las teclas con AltGr en modo X.


4. Ejemplos

Introducir dos números diferentes e indicar cuál es el mayor

#!/bin/bash
echo "Introducir dos números:"
read A
read B
if [ $A -gt $B ]
then
echo $A "es el mayor"
else
echo $B "es el mayor"
fi

Pasar dos números como parámetros e indicar el menor

#!/bin/bash
echo $#
if [ $# -ne 2 ]
then
echo "Falta algún parámetro"
elif [ $1 -eq $2 ]
then
echo "Son iguales"
elif [ $1 -lt $2 ]
then
echo $1 "es menor"
else
echo $2 "es menor"
fi

Ver los procesos que está ejecutando un usuario concreto

#!/bin/bash
RES=s
while [ $RES = s ]
do
echo "Introducir nombre de usuario:"
read USU
ps aux|grep $USU
echo "¿Desea continuar?"
read RES
done

Mostrar los usuarios que pasamos como parámetros y saber si están conectados

#!/bin/bash
for i in $*
do
if who|grep -s $i>/dev/null                                                                                                   
then                                                                                                                                       
echo $i si está conectado                                                                                           
else                                                                                                                                       
echo $i no está conectado
fi
done



Bibliografía:
Informática - Ángeles Sampalo de la Torre
Linux-SXS
Wikipedia (comandos)

24 abril 2014

Tripnative App

 Tripnative
Tripnative. Viaja y disfruta como un nativo en cualquier lugar, reinventa la forma de disfrutar de tu destino, nunca más perderás el tiempo buscando lugares, gracias a Tripnative podrás encontrar todo lo que quieras.
Tripnative te ofrece las Islas Canarias y pronto te mostrará lugares por todo el planeta. Con Tripnative descubrirás tus vacaciones o escapadas desde la palma de tu mano. Con nuevas características que no existen en ninguna otra plataforma. Tripnative es la nueva aplicación con nuevas formas de contenido que todos disfrutarán.
¿Por qué no descubrir y disfrutar como si pertenecieras al destino de tu viaje?.
Disfruta, descubre lugares que perdería con guías de turismo clásicos. Ten ese viaje único que nadie tuvo.
AppCampus (Nokia y Microsoft) ha certificado Tripnative como una de las mejores apps de vacaciones para Windows Phone.

22 abril 2014

13 abril 2014

09 abril 2014

Como Instalar XXAMP

Qué es XAMPP
XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor Web Apache y los intérpretes para lenguajes de script: PHP y Perl.
El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl.
El programa está liberado bajo la licencia GNU y actúa como un servidor Web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP está disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.

Descarga de XAMPP

Para descargar este servidor, iremos a su sitio web oficial para descargarnos la última versión estable (o su actualización).
El sitio web oficial de XAMPP en español es: http://www.apachefriends.org/es/xampp.html
En la página de inicio tendremos en enlace de descarga de los diferentes sistemas operativos.

Pasos (utilizamos XAMPP 1.7.3 para Windows en el ejemplo)

Una vez descargado el instalable XAMPP, lo ejecutamos y nos aparecerá una ventana como la siguiente:
Instalación XAMPP 01
Pulsamos el botón de “Install” y esperamos a que se instale completamente:
Instalación XAMPP 02
NOTA: aunque se recomienda utilizar como directorio “C:\”, se puede hacer una instalación en otro directorio, por ejemplo en “D:\www” utilizando los siguientes comandos: xampp-win32-1.7.3.exe -dD:\www -s2 -spauto.
Una vez terminada la instalación saltará la ventana de CMD con una serie de indicaciones finales (entre ellas si queremos guardar XAMPP en un Pendrive para hacerlo portable) cuyo resultado será el siguiente:
Instalación XAMPP 03
Escribiendo 1 en la línea de comandos arrancaremos el panel de control de XAMPP a través del cual podremos comenzar y finalizar los siguientes servicios:
Instalación XAMPP 04
Servicios
Los servicios que vemos en la imagen son:
  • Apache: servidor web local.
  • MySql: base de datos.
  • FileZilla: cliente FTP.
  • Mercury: servidor de correo electrónico.
  • Tomcat: otro servidor web (comúnmente utilizado en aplicaciones con JAVA).
NOTA: más información sobre la instalación en http://www.apachefriends.org/en/xampp-windows.html

Navegación y gestión de proyectos

Una vez arrancados los servicios (Apache por lo menos para poder visualizar contenido HTML y PHP), podremos utilizar el navegador que deseemos.
Para poder entrar en las características de configuración de nuestro XAMPP  tendremos que poner en la barra de navegación: http://localhost/
Esto nos redirigirá a http://localhost/xampp/ en donde podremos ver una pantalla similar a la siguiente:
Instalación XAMPP 05
Para poder visualizar nuestros proyectos web a través del navegador tendremos que guardarlos en la carpeta htdocs que se encuentra en C:\xampp\htdocs
Aquí, por ejemplo, crearemos una carpeta llamada "joomla", descargaremos el proyecto Joomla! de los sitios oficiales (www.joomla.org / www.comunidadjoomla.org) y podremos realizar la instalación de un portal con Joomla! en nuestro ordenador (en nuestro servidor local).
NOTA: para hacer esto tendremos que arrancar el servicio de MySql, entrar en http://localhost/phpmyadmin (gestor de base de datos) y crear una nueva base de datos (por ejemplo “joomla”).
En el proceso de instalación de Joomla!, cuando nos pida rellenar los campos relacionados con la base de datos, tendremos que utilizar la siguiente información:
  • Servidor: localhost
  • Usuario base de datos: root
  • Contraseña base de datos: (en blanco)
  • Nombre de la base de datos: (en nuestro caso) joomla
Fuente: Complusoft

06 abril 2014

Instalar Virtual Box Guest Additions en Debian

1.- Abrimos el terminal en la máquina virtual y nos logueamos como root para instalar los paquetes siguientes:

$ sudo su

# aptitude install gcc linux-headers-$(uname -r) make

2.- Accedemos a la imagen que se nos ha montado en la unidad de CD-ROM e instalamos lo siguiente:

# cd /media/cdrom

media/cdrom/# ls -l

Debería salir algo similiar a esto: (de lo contrario no está montada la imagen de las Guest Additions)

total 1302
dr-xr-xr-x 2 root root 2048 2007-08-31 13:57 AMD_PCnet
-r--r--r-- 1 root root 136 2007-08-07 18:09 AUTORUN.INF
dr-xr-xr-x 5 root root 2048 2007-08-31 13:57 driver
dr-xr-xr-x 2 root root 2048 2007-08-31 13:57 gina
dr-xr-xr-x 2 root root 2048 2007-08-31 13:57 os2
-r-xr-xr-x 1 root root 711847 2007-08-31 13:57 VBoxGuestAdditions.exe
-r-xr-xr-x 1 root root 612074 2007-08-31 13:57 VBoxLinuxAdditions.run

3.- cd /

# sh /media/cd/VBoxLinuxAdditions.run

Successfully installed the VirtualBox Guest Additions.
You must restart your guest system in order to complete the installation.

Como Instalar Impresora PDF (virtual) en UBUNTU

Los pasos para instalar esta impresora virtual son:

1. Desde el escritorio de Ubuntu selecciona Aplicaciones > Accesorios > Terminal.

2. En la ventana de consola escribe: sudo apt-get install cups-pdf

3. Cierra esta ventana.

4. Desde el escritorio elige Sistema > Administración > Impresoras

5. Clic en el botón Impresora Nueva

6. Seleccione la conexión. Elige como dispositivo Print into PDF file y pulsa en el botón Adelante.

7. Seleccionar impresora desde la base de datos. Selecciona la marca Generis y pulsa en el botón Adelante.

8. Modelos y Controladores. Elige como modelo PostScript Printer y como controlador Generis PostScript Printer (recomendado). Clic en el botón Adelante.

9. Nombre de la impresora. Introduce por teclado su identificativo, por ejemplo: PDFPrinter.

10. Clic en el botón Aplicar y cierra el panel de administración de impresoras.

Fuente: Ite Educación

LinkWithin

Related Posts Plugin for WordPress, Blogger...