Странное поведение команды очистки Bash удаляет буфер обратной прокрутки.

Если вы только ищете для стандартные (не AUR) пакеты, тогда вы можете просто использовать pacman . Это будет искать пакеты только в core , extra и community . (При поиске yaourt единственная дополнительная функция - поиск aur )

Вы можете затем установить эти пакеты с помощью yaourt , если хотите.

Если вы действительно хотите использовать yaourt для поиска, вы также можете отфильтровать с помощью grep, конечно:

yaourt --color -Ss query | grep '^\S*[ce]\w*/' -A1

Объяснение:

  • - color заставляет выводить цветной вывод (обычно уходит, поскольку он обнаруживает, что его вывод идет в конвейер)
  • \ S * пропускает escape-коды, используемые для раскраски, и обеспечивает соответствие только имен пакетов (описания пакетов всегда начинаются с четырех пробелов )
  • [ce] \ w * / соответствует префиксу core / , extra / и community / перед имена пакетов, но не aur /
  • Ключ -A1 также печатает описание пакета в строке, следующей за совпадением
2
23.10.2016, 07:01
2 ответа

Комментарий «от верхней части экрана до текущей строки» неоднозначен. Если вы имели в виду верхнюю часть видимой части экрана, это не прокрутка . Обратная прокрутка терминала - это часть, которую вы можете увидеть только с помощью полосы прокрутки (или подходящих клавиш, таких как shift pageup).

XTerm Control Sequences документирует соответствующую escape-последовательность:

CSI Ps J  Erase in Display (ED).
            Ps = 0  -> Erase Below (default).
            Ps = 1  -> Erase Above.
            Ps = 2  -> Erase All.
            Ps = 3  -> Erase Saved Lines (xterm).

Возможность описания терминала clear использует предпоследний, например,

clear=\E[H\E[2J

, чтобы поместить курсор в верхний влево, а затем очистить весь (видимый) экран. Вы могли использовать Удалить ниже , но это не используется в описании терминала.

Относительно очистки прокрутки : Это специфическая для терминала функция, изначально escape-последовательность в xterm ( 1999 , описанная в ctlseqs.ms , но не упомянутые в изменениях) и позже ( 2011 ) реализованы как расширение для консоли Linux и соответствующее описание терминала. В базе данных терминала он указан как «разное расширение» .

В настоящее время в этих описаниях терминалов есть функция:

  • linux3.0 (текущее значение по умолчанию для «linux»)
  • putty
  • xterm + basic (строительный блок, используемый в большинстве Варианты "xterm")

Вопрос о том, поддерживается ли он в аналогах xterm, таких как VTE, нужно будет проверить (нет полезной документации для VTE или Konsole).

Если вы предпочитаете не использовать расширение, вы можете удалить возможность E3 из описания терминала, которое вы используете, например,

infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo

Я предложил использовать параметры -1 и -x , чтобы упростить форматирование и показать возможность изменения. Пример, приведенный в https://ghostbin.com/paste/kfsbj , соответствует этому совету:

  • путь /home/flowerpick/.terminfo/x/xterm будет может использоваться ncurses
  • , возможности AX и XT - это расширенные возможности (например, E3 ), показанные с параметром -x .

Если вы используете более одного типа терминала, вам придется сделать это для каждого (значение $ TERM ), и изменение применяется только к машине, на которой вы запускаете clear .Первая пара строк вывода infocmp показывает, над какой из них вы работаете:

#   Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),

Например, uxrvt устанавливает для $ TERM что-то вроде ] rxvt-unicode , создавая такие строки в infocmp :

#       Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode       
rxvt-unicode|rxvt-unicode terminal (X Window System),

Программа st использует xterm (или, возможно, xterm-256color ), хотя прошло некоторое время с тех пор, как я видел копию того , которая работала достаточно хорошо, чтобы давать комментарии.

Между прочим, вы могли иметь псевдоним для clear , который отправляет заданную escape-последовательность (игнорируя описание терминала), но я не видел, чтобы кто-нибудь об этом сообщил .

Если вы хотите «очистить выше», это не так просто, как ввести «очистить». Escape \ 033 [1J стирается из верхнего левого угла в текущую позицию курсора. Вы можете создать сценарий, который сделает это, чтобы очистить только строки над вашим текущим курсором:

  • используйте отчет о положении курсора, чтобы найти строку / столбец, в котором находится курсор в данный момент, и
  • если курсор находится не на первой строке (сохраняя эту позицию), переместите курсор на одну строку вверх, а затем (с помощью последовательности hpa ) переместите вправо большое число,
  • выдать «очистить выше» и
  • вернуться в исходное положение с помощью чашки (адресация курсора).

Кажется, что часть с отчетом о положении курсора не будет работать (например) в привязке строки чтения, поэтому я предложил сценарий.Вы могли бы сделать привязку, которая использовала бы возможности курсора сохранения / восстановления, если бы не было проблемы с нахождением в первой строке.

5
27.01.2020, 21:56

Я обычно использую clear, чтобы моя командная строка переместилась в верхнюю часть экрана и непреднамеренно очистила буфер обратной прокрутки, часто с важным содержимым, таким как полезные сообщения об ошибках из предыдущих операций.

Проверяя справочную страницу, там четко указано:

clear clears your screen if this is possible, including its scrollback buffer (if the extended “E3” capability is defined).

Там же есть вариант:

-x do not attempt to clear the terminal's scrollback buffer using the extended “E3” capability.

С тех порЯ добавил это в свой список псевдонимов в ~/.bashrc :

.
alias clear='clear -x'

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

1
13.10.2021, 08:50

Теги

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