En programación de shell, el carácter dos puntos (:) es mucho más útil de lo que aparenta. Funciona como el llamado "comando nulo" (null command), un built-in del shell que no ejecuta ninguna acción pero sí evalúa sus argumentos, hereda su comportamiento desde la Thompson shell de 1971, donde servía como etiqueta y como primer marcador de comentarios de Unix. Su gran potencia llega al combinarse con la expansión de parámetros. Por ejemplo, escribir : "${1:?falta argumento"} sustituye a un bloque if de cuatro líneas que comprueba si se proporcionó un argumento y aborta con error si falta. La sintaxis ${var:?diagnóstico} imprime el mensaje a stderr y sale del shell con código distinto de cero cuando la variable está vacía o sin definir. La variable puede definirse con un valor por defecto usando : "${VAR:=valor}", o truncarse archivos redirigiendo al comando nulo, como en : > error.log. También permite comprobar si un archivo es legible o escribible sin abrirlo, definir trampas con trap : INT o ejecutar bucles infinitos con while :. En resumen, el comando nulo combinado con la expansión de parámetros reduce líneas, evita condiciones explícitas y mejora la legibilidad de los scripts de Bash y otras shells POSIX.
