Вы можете использовать только <
перенаправление ввода / вывода для одного файла за раз.
Если что-то сработает, то последняя строка ваших примеров это, но last
распознает-
как означает стандартный ввод?(В комментариях к другому ответу указано «Нет, last
не распознает -
». Теперь вы понимаете, почему важно следовать всем соглашениям - это усложняет жизнь, когда вы этого не делаете.) В противном случае выЯ должен сделать это классическим способом с помощью цикла оболочки.
for file in /var/log/wtmp-*
do
last -f <(bzcat "$file")
done
Ну, если использовать подстановку процесса, как это чисто Bash ... классический способ будет больше похож на:
tmp=/tmp/xx.$$ # Or use mktemp
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15
for file in /var/log/wtmp-*
do
bzcat $file > $tmp
last -f $tmp
done
rm -f $tmp
trap 0