test
es un shell incorporado que (obviamente) prueba alguna condición dada. Algunos proyectiles más viejos necesitan un comando especial. Así que también encontrarás un programa en /usr/bin/test
.
[
También es un programa para probar alguna condición. Este software también necesita un soporte de cierre y puede encontrarlo en /usr/bin/[
.
[[…]]
es una alternativa a test
y [
. Fue desarrollado para el shell Korn ( ksh
). Pero también lo encuentra en las versiones Bash mayores de 2 y en el Z Shell. Los corchetes dobles tienen algunas características ingeniosas:
- El shell no divide palabras ni expande nombres de archivos.
- No necesitas citas.
- En lugar de
-a
(AND) u -o
(OR) puede usar &&
o ||
.
- El
=
puede hacer mucho más.
((…))
es equivalente a let
. Entonces básicamente ((expression))
es lo mismo que let "expression"
. Sin embargo, con let
usted puede usar más de una expresión, pero las llaves dobles solo permiten una expresión.
$((…))
(y también $[…]
) hace algunos cálculos. Tu shell intenta calcular la expresión dentro de las llaves y reemplaza la expresión con el resultado. Así echo $((1+1))
lleva a echo 2
. Entonces tus conchas imprimen el número 2.
Cada vez que desee comparar dos números, debe usar la opción con un guión y dos letras ( -ge
, -lt
etc.). Si desea comparar cadenas, debe usar =
o !=
.
Su pregunta sobre escapar es bastante difícil de responder. Porque depende del software que uses además del shell. Es decir, grep
y grep -E
necesita escapar diferente. Este es también el caso con sed
, awk
y otros. Entonces, la mejor opción es echar un vistazo a la página de manual. Después de un tiempo te acostumbras y sabes cuándo usar el escape.