Bash может не иметь встроенного stat
, но другие оболочки могут. Фактически, оболочка может предоставлять встроенные версии любой утилиты, которую он хочет, и пользователь может переопределить stat
своей собственной функцией оболочки или псевдонимом, вызывающим другой двоичный файл.
Нет. Утилита, которую выполняет env
, не может быть встроенной (например, попробуйте ее с cd
). Псевдонимы и функции оболочки также не допускаются.
Руководство просто пытается убедиться, что пользователь получает описанные функции. На мой взгляд, если он хочет быть действительно параноиком, он также должен упомянуть, что в идеале вы должны вызывать stat
с его абсолютным путем. Это имеет больше смысла в системах, отличных от Linux, где GNU coreutils является необязательным дополнением (часто устанавливается в / usr / local / gnu / bin
или в другом месте, либо с префиксом g
, например gstat
, gls
, gmv
и т. д.)
Вы можете изменить разделитель записей AWK, чтобы разделить его ввод на возврат каретки вместо новой строки:
gzcat "$input" | dd status=progress of="$output" 2>&1 | awk -v RS='\r' '/copied/ {print $1}'