Когда я делаю
ps aux
Вывод приятно обрезается к ширине моего терминала, так, чтобы длинные описания процессов не проводили больше чем одну строку. Однако, если я передаю его по каналу во что-либо еще, возврат длинных линий.
Я понимаю, что это - правильное поведение, так как PS больше не производит к tty, и весь вывод мог бы быть крайне важен для обработки. То, что я хочу, является другим util, который обрежет вывод назад, когда я буду сделан.
Я хочу смочь сделать что-то вроде этого:
ps aux | grep -v 'www-data' | nowrap
nowrap
мнимый инструмент, который я ищу. Это удостоверится, что длинные линии обрезаются и не переполнение.
Есть ли что-то вроде этого?
Можно использовать cut
управляйте для разрезания вывода. Например:
ps aux | grep -v 'www-data' | cut -c-80
Это сохранит только первые 80 символов каждой строки. Можно, конечно, установить это на любую ширину, которую Вы хотите.
При использовании командной строки удара Вы могли сделать это:
ps aux | grep -v 'www-data' | cut -c-$COLUMNS
Если вывод имеет вкладки, то ширина не может быть вычислена правильно. expand
может превратить вкладки в пробелы:
ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS
Можно обрезать выходное использование cut
. например.
PS aux | grep-v 'www-данные' | сократил-c1-$ {СТОЛБЦЫ}
где ${COLUMNS}
обеспечивает текущую ширину терминала. resize
команда может использоваться, чтобы повторно создать текущую ширину:
$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;
Вы, если Вы хотели автоматизировать это, могли бы обернуть это в сценарии nowrap
:
#!/bin/bash
eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -
И в дополнение к тому, какой сказанный nagul, можно использовать в ударе:
седла tput
получить ширину:
$ COLUMNS= (tput седла)