Util для обрезки вывода к терминальной ширине?

Когда я делаю

ps aux

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

Я понимаю, что это - правильное поведение, так как PS больше не производит к tty, и весь вывод мог бы быть крайне важен для обработки. То, что я хочу, является другим util, который обрежет вывод назад, когда я буду сделан.

Я хочу смочь сделать что-то вроде этого:

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

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

Есть ли что-то вроде этого?

11
задан 22.10.2009, 15:37

3 ответа

Можно использовать 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
14
ответ дан 07.12.2019, 12:17

Можно обрезать выходное использование 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} -
3
ответ дан 07.12.2019, 12:17

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

седла tput

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

$ COLUMNS= (tput седла)

2
ответ дан 07.12.2019, 12:17

Теги

Похожие вопросы