10

Когда я делаю

ps aux

Вывод корректно обрезается по ширине моего терминала, поэтому длинные описания процессов не занимают более одной строки. Однако, если я отправлю это во что-то еще, длинные строки вернутся.

Я понимаю, что это правильное поведение, так как ps больше не выводит tty, и весь вывод может иметь решающее значение для обработки. Что я хочу, так это еще одна утилита, которая обрезает вывод обратно, когда я закончу.

Я хочу быть в состоянии сделать что-то вроде этого:

ps aux | grep -v 'www-data' | nowrap  

nowrap - это воображаемый инструмент, который я ищу. Это гарантирует, что длинные строки будут обрезаны и не переполнены.

Есть ли что-то подобное?

3 ответа3

14

Вы можете использовать команду cut чтобы нарезать вывод. Например:

ps aux | grep -v 'www-data' | cut -c-80

Это сохранит только первые 80 символов каждой строки. Вы можете, конечно, установить это на любую ширину, которую вы хотите.

Если вы используете командную строку bash, вы можете сделать это:

ps aux | grep -v 'www-data' | cut -c-$COLUMNS

Если вывод имеет вкладки, то ширина может быть вычислена неправильно. expand можно превратить вкладки в пробелы:

ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS
3

Вы можете обрезать вывод, используя cut . например

PS Aux | grep -v 'www-data' | cut -c1 - $ {COLUMNS}

где ${COLUMNS} предоставляет текущую ширину терминала. Команда resize может использоваться для повторного генерирования текущей ширины:

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

Вы можете, если хотите автоматизировать это, обернуть это в скрипт nowrap:

#!/bin/bash

eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -
2

И в дополнение к тому, что сказал nagul, вы можете использовать в bash:

Tput Cols

чтобы получить ширину:

COLUMNS = $(Tput Cols)

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