Некоторые приложения понимают -
как стандартный ввод (проверьте его справочную страницу ), поэтому
sort... | cmd -i - > result.txt
В большинстве систем есть /dev/stdin
специальный файл (, аналогичный /dev/fd/0
), который при открытии ведет себя как дублирование стандартного ввода, поэтому:
sort... | cmd -i /dev/stdin > result.txt
С некоторыми оболочками (ksh, zsh, bash )так же можно писать:
cmd -i <(sort...) > result.txt
Хотя это и сработало бы, этот файл является каналом, поэтому не доступен для поиска . Некоторым cmd
s может потребоваться файл с возможностью поиска или обычный файл, и это приведет к ошибке, если файл является каналом. Тогда у вас не будет другого выбора, кроме как использовать временный файл.
С помощью zsh
вы можете использовать =(...)
форму замены процесса:
cmd -i =(sort...) > result.txt
для zsh
для автоматического создания, заполнения и очистки временного файла.
То же, что и fish
, с использованиемpsub
:
cmd -i (sort... | psub -f) > result.txt
С bash
по-прежнему используется файл /dev/fd/x
, но на этот раз в виде обычного временного файла, который удаляется сразу после его открытия для более надежной очистки -:
tmp=$(mktemp) && {
rm -f -- "$file" &&
sort... >&3 3>&- 4<&- &&
cmd -i /dev/fd/4 3>&-
} 3> "$tmp" 4< "$tmp"
Порядок строк имеет значение, результат /etc/pam.d/system-auth
и /etc/pam.d/password-auth
должен быть примерно таким
auth required pam_env.so
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300
auth requisite pam_succeed_if.so uid >= 1000 quiet
auth required pam_deny.so