“w | хвост” прерывает текст в правом поле (78 символов)

Иногда, emerge --unmerge дает это предупреждающее сообщение:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Кажется, что это - рекомендуемый способ сделать зависимость, проверяющую прежде, чем не объединить пакет. Я все еще надеюсь, тем не менее, что существует лучший, более автоматизированный, способ достигнуть этого.

7
14.05.2013, 01:58
1 ответ

Когда wвывод переходит к терминалу. w запрашивает терминальный драйвер для числа столбцов и корректирует ширину соответственно.

Когда произведенный не переходит к терминалу такой как тогда, когда он переходит к каналу, он возвращается к фиксированной ширине 80 столбцов. Версии procps с тех пор 3.3.2 позволяют переопределять то значение по умолчанию с $COLUMNS переменная среды.

Некоторые оболочки как zsh или bash установите $COLUMNS переменная, но не экспортируют его. В них можно сделать

COLUMNS=$COLUMNS w | tail

Если Вы не хотите, чтобы строки были усеченными вообще независимо от того, насколько широкий терминал, можно сделать:

COLUMNS=512 w | tail

Если у Вас есть более старое w, у Вас, вероятно, не будет опции, но эмулировать широкий терминал. С zsh:

zmodload zsh/zpty
zpty W 'stty cols 512 -opost && w'
{zpty -r W} | tail
zpty -d W

Другие вещи, которые могут эмулировать терминал:

ssh localhost -t 'stty cols 512 -opost && w' | tail

expect -c 'set stty_init {cols 512 -opost}; spawn -noecho w; expect eof' | tail
8
27.01.2020, 20:17
  • 1
    я использую удар 4.2.0 (1), w версия procps 3.2.7 в CentOS 5.3. Var СТОЛБЦОВ не делает несколько отличающимся –  RSFalcon7 13.05.2013, 17:52
  • 2
    Если я экспортирую переменную СТОЛБЦОВ, не был должен использование w та установка? [попробованный это] –  Razzlephrazz 13.05.2013, 17:53
  • 3
    COLUMNS=0 не работает на меня. Однако COLUMNS=1000 делает. –  peterph 13.05.2013, 18:01
  • 4
    @Razzlephrazz, да, хотя это влияло бы на другие команды также. Ваша проблема состоит, вероятно в том, что у Вас есть слишком старая версия w для поддержки переопределения ширины. –  Stéphane Chazelas 13.05.2013, 18:06
  • 5
    Спасибо, Stephane. Вы знаете, как я могу узнать, какого возраста мой "w" и когда версия, где это было зафиксировано созданное? Это, по-видимому - ошибка в команде "w". Или возможно моя версия команды w использует другой огибающий var, а не СТОЛБЦЫ. –  Razzlephrazz 13.05.2013, 18:13

Теги

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