1

Обычно, когда длинные строки выводятся в терминал / консоль / xterm, они автоматически переносятся. Однако есть случаи, которых нет. ps - один из таких случаев - он обрезает вывод прямо на ширину окна.

 ps ax | grep [d]nsmasq
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

Для dnsmasq , даже я максимизирую свой xterm, вывод все еще сокращается.

Я пробовал,

 $ ps ax | fold | grep [d]nsmasq
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

 $ ps ax | grep [d]nsmasq | fold
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

 $ ps ax | grep [d]nsmasq | fold --spaces
 4459 ?        S      0:03 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsm

Такое сокращение make ps похоже не на запись в стандартный вывод, но его реакция на grep доказывает обратное. Но почему тогда fold не работает?

Как обернуть такие длинные строки, чтобы показать все вместо резки по ширине окна?

3 ответа3

1

Дух, нашел ответ вскоре после того, как я его спросил.

COLUMNS=500 ps ax | grep [d]nsmasq | fold

Тот же трюк работает и для dpkg .

0

Проверьте справочную страницу. Сравните эти 3 выхода:

ps ax
ps axw
ps axww
0

ps проверяет, поступает ли его вывод на терминал, и если да, то запрашивает ширину терминала. Затем ps сам усекает каждую строку в соответствии с этой шириной. Это не терминал, который их рубит, он даже не получает эти данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .