======Operadores en Unix======
Existen cinco tipos de operadores bolsicos en [[Unix]], que son:
- Aritméticos
- Relacionales
- Lógicos Booleanos
- de Archivaje
- A nivel Bit
====Operadores Aritméticos====
Los operadores aritméticos se emplean para realizar operaciones matemáticas. Los siguientes son algunos de los operadores:
^ **Operador** ^ **Operación** ^ **Ejemplo** ^
|**Adición** ''+'' | Realiza sumas entre 2 operandos | Ej: ''c=`expr $a + $b`'' |
|**Substracción** ''-'' | Realiza restas entre dos operandos | Ej: ''c=`expr $a – $b`''|
|**Multiplicación** ''*'' | Multiplica el valor de 2 operandos | Ej: ''c=`expr $a \* $b`'' |
|**División** ''/'' | Divide el primer operando por el segundo | Ej: ''c=`expr $a / $b`'' |
|**Módulo** ''%'' | Provee el resto obtenido al dividir el primer operando por el segundo | Ej: ''f=`expr $a % $b`'' |
|**Asignador** ''='' | Asigna un valor dado en el segundo operando al primero | Ej: ''c=$b''
|**Incrementador** ''++''| Incrementa en uno el valor del operando. | Ej: ''((a++))'': Post-incremento, ''((++a))'': Pre-incremento, ''((a–))'': Post-decremento, ''((–a))'': Pre-decremento |
> Los operadores aritméticos pueden utilizarse independientemente, ya sea que existan otros tipos de operadores en uso - para utilizar otras [[tutorial_de_programacion_en_bash#if|declaraciones condicionales tales como ''if'']] para utilizar su funcionalidad.
====Operadores Relacionales====
Los operadores relacionales se utilizan para comparar y descubrir relaciones entre dos operandos. Estos son algunos de los operadores relacionales:
| **Operador** | **Resultado** | **Ejemplo** |
|**Igualdad** ''=='' o ''-eq'' | Devuelve ''true'' si ambos operandos son iguales y ''false'' si no lo son. | Ej: ''$a == $b'' |
|**No-igualdad** ''!='' o ''-ne'' | El operador opuesto al operador de igualdad. Devuelve ''true'' si ambos operandos son no iguales, y devuelve ''true'' si ambos operandos son iguales. | Ej: ''$a != $b'' |
|**Mayor que** ''>'' o ''-gt''| Devuelve ''true'' si el primer operando es mayor que el segundo, y viceversa. | Ej: ''$a > $b'' |
|**Menor que** ''<'' o ''-lt'') |Devuelve ''true'' si el primer operando es menor que el segundo, y viceversa. | Ej: ''$a < $b''
|**Mayor que o Igual a** ''>='' o ''-ge''| Devuelve ''true'' si el primer operando es mayor o igual al segundo operando, y ''false'' si no lo es. | Ej: ''$a >= $b'' |
|**Menor que o Igual a** ''<='' o ''-le''| Este devuelve ''true'' si el primer operando es inferior o igual al segundo operando, y ''false'' si no lo es. | Ej: ''$a <= $b'' |
====Operadores lógicos====
Estos se utilizan para realizar operaciones de lógica de Boole sobre los operandos. Las devoluciones de lógica es ''VERDADERO'' (''true'') o ''FALSO'' (''false'')
^ **Operador lógico** ^ **Resultado booleano** ^ **Ejemplos** ^
| **Lógico Y** ''AND'' ''&&'' o ''-a'' | Este devuelve un valor ''true'' booleando si ambos operandos satisfacen la condición de verdad. En todo lo demas devuelven ''false'' | Siendo ''a=20'' y ''b=5'' esto ''[ $a -lt 10 -a $b -gt 1]'' se convierte en ''false'' porque ''a'' no es menor a ''10'' |
| **Lógico O** ''OR'' ''||'' o ''-o'' | Este devuelve un ''true'' booleano si cualquiera de los operandos satisface la condición, en cualquier otro caso devuelve ''false''. | siendo ''a=20'' y ''b=5'' esto ''[ $a -lt 10 -o $b -gt 1s]'' se vuelve ''true'' ya que ''b'' siendo mayor a ''1'' es ''true'' |
| **No Igual a** ''!'' | Devuelve un ''true'' Booleano si el valor del operando es ''false'' y viceversa. | Si ''a=true'' ''[! $a == true]'' es ''false'' |
====Operadores de Archivo====
Estos se utilizan para evaluar las propiedades asociadas con los ficheros del sistema de archivaje Unix.
^ **Operador de Archivo** ^ **Resultado booleano** ^
|**-b**|Devolverá ''true'' cuando exista el fichero y tiene un tamaño de bloque especial, de lo contrario retornará ''false''. |
|**-c**|Devolverá ''true'' cuando exista el fichero y es un fichero de caracter especial, si no devolverá ''false''. |
|**-d** |Devolverá ''true'' si el nombre de fichero dado es un directorio, sino retornará ''false''. |
|**-e** |Devolverá ''true'' si el fichero dado existe, sino retornará ''falso''. |
|**-g** |Devolverá ''true'' si el el bit de SGID (Set Group ID) del fichero está puesto en ''true''. |
|**-k** |Devolverá ''true'' si el sticky bit del fichero dado está puesto en ''true''. |
|**-r** |Devolverá ''true'' si el fichero dado es legible por el usuario logueado, sino devolverá ''falso''. |
|**-s** | Comprueba el tamaño del fichero dado y devuelve ''true'' si es mayor que cero, sino devolverá ''false''. |
|**-u** | Devolverá ''true'' si el fichero dado tiene su bit SUID (Set User ID) puesto en ''true''. |
|**-w** | Devolverá ''true'' si el fichero dado tiene acceso de escritura para el usuario logueado, sino devolverá ''false''. |
|**-x** | Revisará y devolverá ''true'' si el fichero dado puede ejecutarse por el usuario, sino devolverá ''false''. |
====Operadores de Bit====
Estos se emplean para realizar operaciones a nivel bit sobre los operandos.
^ **Operador** ^ **Resultado booleano** ^ **Ejemplo** ^
|AND ''&'' de nivel bit | Aquí la operación ''AND'' se realiza sobre cada bit del operando. | Ej: Considerando ''a = 55'' y ''b = 23'' para todo los siguientes ejemplos: ''a & b = 01'' |
|OR ''|'' de nivel bit | Aquí la operación ''OR'' se desarrolla en cada bit del operando. | ''a | b = 77'' |
|XOR ''^'' de nivel bit | Aquí la operación ''XOR'' se realiza sobre cada operando. | ''a ^ b = 76''
|Complemento ''~'' | Este realiza el complemento de cada bit de un operando y devuelve el valor. | ''~a = AA'' |
Esto concluye los principales tipos de Operadores en Unix, junto con sus ejemplos. Puedes aprender mucho más con el [[Tutorial de Programación en Bash]]