who am I?

Как-то странно изговнякали утилиту who в 8-й ветке FreeBSD. Раньше можно было набрать

who am i

или

who –m

и увидеть там приятное

netspider        ttysd     8 мар 12:03 (127.0.0.1)

сейчас же выдается несуразное

root             17        8 мар 14:26

при чем по команде

who

выдаются сразу все пользователи в старом добром формате

root             pts/17    7 мар 23:13 (127.0.0.1)

И как с этим жить? =/ У кого чесались яйца руки? Иногда хочется программистам их оторвать…

UPDATE

В лоб лечится одной циферью:

15:26 [root] who ~> pwd
/usr/src/usr.bin/who
15:26 [root] who ~> diff who.c who2.c
270c270
<               tty = p + 1;
---
>               tty = p - 3;
15:26 [root] who ~> ./a.out am i
root             pts/17    7 мар 23:13 (127.0.0.1)

Знаю, что не комильфо так делать, но зато работает.


Теги: , , , ,

Интерактивное наблюдение

Все *nix’оиды знают команду top и аналоги – htop, mytop и т.д.  Аналогичны эти программы в своем принципе работы – постоянном (интерактивном) обновлении информации на экране.

А если нужно постоянно выводить на экран результат работы какой-то команлы или команд? Да еще и в удобном виде – с обновлением (очисткой) экрана. Как быть?

Способ #1

watch (для FreeBSD его родственник – gnu-watch)

Команда (gnu-)watch позволяет многократно запускать заданную команду или команды, выводя результат на экран. Примеры:

gnu-watch --differences=cumulative ls –la

Данная команда позволяет следить за файлами, при этом у измененных файлов будет подсвечен размер. Если не указывать cumulative, то изменение на экране будет подсвечено только один раз, при первом обнаруженном изменении во время обновления.
Я люблю наблюдать, как идет процесс сборки рейда:

gnu-watch -t gmirror status
Способ #2

работает везде при наличии bash

bash -c 'while true; do echo '^L'; gmirror status; echo; date; sleep 2; done'
# или так
bash -c 'while :; do clear; gmirror status; echo; date; sleep 2; done'

^L – в данном случае это !один! символ “Control-L”. Если вы просто нажмете эту комбинацию, то ничего не произойдет, точнее – вы очистите экран. Чтобы напечатался символ нужно прибегнуть к хитрости:

CTRL+V+L – о таком способе ввода непечатаемых символов я уже упоминал в этой статье.

Может пригодится ;)


Теги: , , , , , , , ,