Начиная с версии coreutils 8.24, есть другой способ:
tee -p dev / zero> ( голова -c10M | wc -c)>> (голова -c1 | wc -c) | numfmt --to = iec
Результатом будет
1
10M
Ключевые моменты здесь:
Используйте -p
, что вызовет tee
предупреждать об ошибках при записи в любой выход, а не в канал. Это означает, что ошибка EPIPE на fwrite
не приведет к завершению работы tee
, а tee
будет работать, пока есть хотя бы один выходной файл, открытый для записи. Если вы хотите получить предупреждение о выводе EPIPE в stderr, используйте - output-error = warn
вместо -p
.
Используйте >> (head -c1 | wc -c)
, чтобы перенаправить стандартный вывод tee на другой > (подстановка процесса)
. Это важно по двум причинам. Вам нужно позаботиться о выводе stdout, производимом tee
. Если вы используете > / dev / null
, например, tee
будет работать, пока stdin имеет данные (в данном случае навсегда). В то же время это позволит отправить вывод > (подстановка процесса)
на стандартный вывод для дальнейшей обработки. Другие возможности, но не столь элегантные, - это закрыть вывод stdout tee
другими способами. Две возможности: > / dev / full
и > & -
. Однако они будут выдавать предупреждения (tee: стандартный вывод: на устройстве не осталось места и tee: стандартный вывод: неверный дескриптор файла соответственно)
Согласно инструкции(man last
относится к man utmpx
), /var/run/utmpx
.
Это было /var/log/wtmp
до Mac OS 10.3, согласно комментарию к заголовочному файлу Apple. Этот файл больше не существует и не используется. Базовые функции библиотеки C для доступа к базе данных входа в систему, на которой основан last
, теперь общаются с ASL.