Синтаксис псевдонима, который вы используете, не подходит для оболочки POSIX, для оболочки POSIX необходимо использовать:
alias name='replacement'
Но для всех оболочек это не может работать, поскольку замена псевдонима выполняется на ранней стадии синтаксического анализа.
Перед выполнением настройки вашего псевдонима вся строка была прочитана анализатором, и по этой причине ваша командная строка не будет работать.
Если псевдоним появится в следующей командной строке, он будет работать.
Los -d
y -z
no son comandos sino opciones de las utilidades test
y [
. Estas utilidades están integradas en bash
y documentadas en el manual bash
. Estas utilidades y estas banderas también están estandarizadas por POSIX, por lo que están disponibles en cualquier shell POSIX, no solo bash
.
Si está en una sesión interactiva bash
, puede obtener documentación para el -integrado en variantes de estas utilidades escribiendohelp test
(help [
también funciona, pero su texto solo hace referencia a la documentación paratest
).
man test
y man [
también deberían funcionar. Estos manuales describen las utilidades externas , probablemente /bin/test
y /bin/[
, no las que usa por defecto en bash
.
Entonces, por ejemplo,
! test -z "$dir" && test -d "$dir" && printf '%s is a directory' "$dir"
es exactamente equivalente a
! [ -z "$dir" ] && [ -d "$dir" ] && printf '%s is a directory' "$dir"
o, si se quiere,
if ! test -z "$dir" && test -d "$dir"; then
printf '%s is a directory' "$dir"
fi
y
if ! [ -z "$dir" ] && [ -d "$dir" ]; then
printf '%s is a directory' "$dir"
fi
(! [ -z "$dir" ]
probablemente se escribiría más comúnmente [ ! -z "$dir" ]
o [ -n "$dir" ]
, y solo he usado la prueba -z
anterior porque se mencionó en la pregunta, la prueba -d
en una cadena vacía fallaría de todos modos ).
Véase también: