Este viernes 26 de Abril a partir de las 21 horas se llevara a cabo
la reunión del Grupo De Usuarios de Software Libre de Rosario en el bar Industria Argentina (Caferata entre Urquiza y Tucuman).
Están todos invitados.
Este es el sitio no oficial del LUGRO (Linux User Groups Rosario) de la ciudad de Rosario, Argentina. El twitter es: https://twitter.com/lugro_no_oficia y el sitio en identi.ca es: https://urmf.net/lugro_no
martes, 23 de abril de 2013
viernes, 19 de abril de 2013
El intérprete de órdenes V
Ejemplos útiles en "if..."
La vez anterior se estuvo usando la sentencia de control "if ... ; then ...; else...; fi" en esta ocasión se analizarán estos ejemplos
if [ "$user" != "gnu" ]; then
echo "Eh! fierita."
else
echo "Hola usuario de gnu !"
fi
El corchete [ expresión ] es equivalente a la función "test expresión" cuya función es evaluar lógicamente un predicado y devolver un valor lógico, en este caso el predicado es: "$user" != "gnu", se evalúa si el contenido de la variable LOCAL user no es igual a la cadena "gnu".
otro ejemplo sería:
if [ "x$one" = "x-x" ]; then
echo "$one es -x"
else
echo "$one es not -x"
fi
que el castellano se traduce:
if (contenido de $one) es igual a -x (suprima mensaje de error), then
diga (contenido de $one) es -x
en otro caso
diga (contenido de $one) es no -x
En este ejemplo uno se ampara ante el hecho que la variable no pueda contener valor lo que causaría que la evaluación del predicado de un mensaje de error.
if [ "$user" = "gnu" -o "$user" = "ung" ]; then
echo "Hola $user !"
else
echo "Y a vos quien te juna $user..."
fi
Aquí "-o" es un OR lógico dentro del predicado.
Los posibles operadores de predicado que reconoce la función "test" son los siguientes:
! EXPRESIÓN, negación lógica o NOT
EXPRESIÓN1 -a EXPRESIÓN2, AND lógico
EXPRESIÓN1 -o EXPRESIÓN2, OR lógico
-n STRING, da "true" si la longitud de la cadena es no nula.
-z STRING, da "true" si la longitud de la cadena es nula.
STRING1 = STRING2, da "true" si las cadenas coinciden.
STRING1 != STRING2, da "true" si las cadenas no coincide.
INTEGER1 -eq INTEGER2, da "true" si los enteros coinciden.
INTEGER1 -ge INTEGER2, idem,,, si entero1 >= entero2
INTEGER1 -gt INTEGER2, idem,,, si entero1 > entero2
INTEGER1 -le INTEGER2, idem,, si entero1 <= entero2
INTEGER1 -ne INTEGER2, idem,, si entero1 < entero2
FILE1 -ef FILE2, da "true" si los archivos tienen el mismo dispositivo es i-nodo.
FILE1 -nt FILE2, da "tuee" si el archivo1 tiene dato de modificación posterior al archivo2
FILE1 -ot FILE2, idem,, pero archivo1 anterior a archivo2
-b FILE, da "true" si el archivo apunta a un dispositivo (UNIX-like)
-c FILE, idem,, si es un dispositivo de caracteres (UNIX-like)
-d FILE, idem,, si es un directorio y existe
-e FILE, idem,, si el archivo existe
-f FILE, idem,, si el archivo existe y no es un puntero a dispositivo
-w FILE, idem,, si existe y tiene permisos de escritura
-x FILE, idem,, si tiene permisos de ejecución.
Existen otras opciones más pero son muy específicas del sistema UNIX-like
La vez anterior se estuvo usando la sentencia de control "if ... ; then ...; else...; fi" en esta ocasión se analizarán estos ejemplos
if [ "$user" != "gnu" ]; then
echo "Eh! fierita."
else
echo "Hola usuario de gnu !"
fi
El corchete [ expresión ] es equivalente a la función "test expresión" cuya función es evaluar lógicamente un predicado y devolver un valor lógico, en este caso el predicado es: "$user" != "gnu", se evalúa si el contenido de la variable LOCAL user no es igual a la cadena "gnu".
otro ejemplo sería:
if [ "x$one" = "x-x" ]; then
echo "$one es -x"
else
echo "$one es not -x"
fi
que el castellano se traduce:
if (contenido de $one) es igual a -x (suprima mensaje de error), then
diga (contenido de $one) es -x
en otro caso
diga (contenido de $one) es no -x
En este ejemplo uno se ampara ante el hecho que la variable no pueda contener valor lo que causaría que la evaluación del predicado de un mensaje de error.
if [ "$user" = "gnu" -o "$user" = "ung" ]; then
echo "Hola $user !"
else
echo "Y a vos quien te juna $user..."
fi
Aquí "-o" es un OR lógico dentro del predicado.
Los posibles operadores de predicado que reconoce la función "test" son los siguientes:
! EXPRESIÓN, negación lógica o NOT
EXPRESIÓN1 -a EXPRESIÓN2, AND lógico
EXPRESIÓN1 -o EXPRESIÓN2, OR lógico
-n STRING, da "true" si la longitud de la cadena es no nula.
-z STRING, da "true" si la longitud de la cadena es nula.
STRING1 = STRING2, da "true" si las cadenas coinciden.
STRING1 != STRING2, da "true" si las cadenas no coincide.
INTEGER1 -eq INTEGER2, da "true" si los enteros coinciden.
INTEGER1 -ge INTEGER2, idem,,, si entero1 >= entero2
INTEGER1 -gt INTEGER2, idem,,, si entero1 > entero2
INTEGER1 -le INTEGER2, idem,, si entero1 <= entero2
INTEGER1 -ne INTEGER2, idem,, si entero1 < entero2
FILE1 -ef FILE2, da "true" si los archivos tienen el mismo dispositivo es i-nodo.
FILE1 -nt FILE2, da "tuee" si el archivo1 tiene dato de modificación posterior al archivo2
FILE1 -ot FILE2, idem,, pero archivo1 anterior a archivo2
-b FILE, da "true" si el archivo apunta a un dispositivo (UNIX-like)
-c FILE, idem,, si es un dispositivo de caracteres (UNIX-like)
-d FILE, idem,, si es un directorio y existe
-e FILE, idem,, si el archivo existe
-f FILE, idem,, si el archivo existe y no es un puntero a dispositivo
-w FILE, idem,, si existe y tiene permisos de escritura
-x FILE, idem,, si tiene permisos de ejecución.
Existen otras opciones más pero son muy específicas del sistema UNIX-like
martes, 9 de abril de 2013
REUNIÓN DEL LUGRo, VIERNES 12, 21 HORAS
Este viernes 12 de Abril a partir de las 21 horas se llevara a cabo la reunión del Grupo De Usuarios de Software Libre de Rosario en el bar Industria Argentina (Caferata entre Urquiza y Tucuman).
Están todos invitados.
lunes, 1 de abril de 2013
El intérprete de órdenes IV
Un repaso de metacaracteres:
| = Caño, donde se dirige la salida estándar del primar comando a la entrada estándar del segundo.
|| = OR, si el primer comando falla se tomará el segundo.
|= = OR IS (es usado dentro del control de flujo if.. then ... fi)
&& = AND, si el primer comando se ejecuta correctamente se ejecuta el segundo.
! = NOT (es usado dentro del control de flujo if.. then ... fi), pero como comando del shell este abre un subshell para ejecutar un comando, por ejemplo `! ls ..`
!= = NOT IS (es usado dentro del control de flujo if.. then ... fi)
!$ = último argumento del último comando
!! = repite el último comando
= = IS (es usado dentro del control de flujo if.. then ... fi)
; = separa dos comando consecutivos
;; = terminador de la función case...
$ = prefijo de variable del shell por ejemplo "$PATH"
$$ = PID del proceso actual
$0 = Muestra el nombre del proceso actual.
$1 = Primer argumento ingresado.
$2 = Segundo argumento ingresado
$# = Muestra el número de argumentos ingresados.
$? = Cualquier argumento (es usado dentro del control de flujo if.. then ... fi)
$_ = último argumento/comando
$* = Todos los argumentos
$@ = Todos los argumentos
# = comentario (no se interpreta)
#! = indica que intérprete usar
{ = inicio de definición de función
} = cierre de función
[ = comienzo de múltiples argumentos
] = fin de anterior
@ = $@ es equivalente a "$1" "$2" etc. (todos los argumentos)
* = caracter comodín (* pude sustituir cualquier número de caracteres)
? = caracter comodín (? puede sustituir un solo caracter)
" = comillas
' = apostrofe exacto.
` = apostrofe de comando. (variable=`ls -la` hace que $variable adquiera como valores el directorio actual)
. = lea y ejecute comandos desde un archivo, ( . .bashrc )
& = ejecute un programa en segundo plano (./program &)
0> = redirección de entrada estándar
1> = redirección de salida estándar
2> = redirección de error estándar
% = caracter de taréa, %1 = tarea 1 a segundo plano, %2 = tarea 2 a segundo plano , etc.
>> = redirección de salida estándar sin sobre impresión
<< = redirección de entrada estándar. (cat > file << EOF ; cualquier cosa ; EOF)
> = redirección implícita de salida estándar (en la sentencia de control "if" se usa para comparaciones
\ = back-slash, elimina la interpretación de meta caracter, por ejemplo \$var no será tratado como una variable.
>& = redireccionador múltiple, ie. echo "a" 1>/dev/null 2>&1 redireciona 2> al mismo lugar que 1>
Esta es la estructura estándar del árbol archivos
/ (root)
_______________________________|____________________________________
| | | | | | | | | | | |
bin/ boot/ dev/ etc/ home/ lib/ lost+found/ proc/ root/ sbin/ usr/ var/
| | | | | | | | | | | |
| | | | | | | | | | | |-> Varios
| | | | | | | | | | |
| | | | | | | | | | |-> Espacio de usuarios.
| | | | | | | | | |
| | | | | | | | | |-> Binarios del administrador
| | | | | | | | |
| | | | | | | | |-> Directorio del administrador
| | | | | | | |
| | | | | | | |-> sistema de archivos de procesos
| | | | | | |
| | | | | | |-> archivos huérfanos
| | | | | |
| | | | | |-> bibliotecas del sistema
| | | | |
| | | | |-> Directorios de usuarios
| | | |
| | | |-> Archivos de configuración
| | |
| | |-> Dispositivos
| |
| |-> Sector de booteo del kernel
|
|-> archivos con permiso de ejecución a todos.
Ahora nos abocaremos a la creación de shell script
Un script de ejemplo podría ser este:
#!/bin/bash
echo -n "contraseña: "
read contra
echo "Su contraseña es $contra"
que con cualquier editor de textos puede ser guardado como "miguion.sh", luego por medio de "chmod u+x miguion.sh" le damos permisos de ejecución... el resultado es:
hcaste@azul:~/tmp$ sh miguion.sh
contraseña: 3456
Su contraseña es 3456
la primera línea indicamos que el intérprete será el bash.
bash soporta aritmética entera, por ejemplo:
hcaste@azul:~/tmp$ echo $[ 4 * 2 ]
8
hcaste@azul:~/tmp$ echo $(( 10 + 5 ))
15
COOL! no?
Este es un ejemplo de la sentencia de control "if" que se finaliza con "fi", chistes del señor BASH.
#!/bin/bash
echo -n "entre un nombre: "
read var1
echo -n "otro : "
read var2
if [ "$var1" = "$var2" ]; then
echo "los nombres son los mismos"
else
echo "los nombres no son los mismos"
fi
exit 0
Cabe observar que el formato de la sentencia de control es "if ... ; then ...; else...; fi"
La próxima entrega más sentencia de control.
Suscribirse a:
Entradas (Atom)