Показывать строку состояния tmux только после отправки префиксного ключа?

Похоже, вы хотите получить все строки, содержащие хотя бы одно слово из набора, из набора файлов.

Предполагая, что у вас нет многих тысяч файлов, вы можете сделать это с помощью одной grepкоманды:

grep -wE '(ID|Instance|NOT|AI|Sitting)'./*merged >outputfile

Это позволит извлечь строки, соответствующие любому слову, указанному в шаблоне, из файлов, чьи имена соответствуют *merged.

-wс grepгарантирует, что заданные строки не будут совпадать как подстроки (, т.е. NOTне будут совпадать вNOTICE). Опция -Eвключает чередование с |в шаблоне.

Добавьте в команду параметр -h, если вы не хотите, чтобы имена файлов, содержащих совпадающие строки, выводились.

Если у вас много тысяч файлов, приведенная выше команда может завершиться ошибкой из-за слишком длинной командной строки. В этом случае вы можете сделать что-то вроде

for file in./*merged; do
    grep -wE '(ID|Instance|NOT|AI|Sitting)' "$file"
done >outputfile

, который будет запускать команду grepодин раз для каждого файла, или

find. -maxdepth 1 -type f -name '*merged' \
    -exec grep -wE '(ID|Instance|NOT|AI|Sitting)' {} + >outputfile

, который будет выполнять как можно меньше вызовов grepс максимально возможным количеством файлов одновременно.

Связанные:

0
03.03.2020, 16:20
1 ответ

Это трудно сделать просто.

Его легко сделать, когда вы нажимаете префикс, просто отключите параметр префикса и вместо этого привяжите клавишу:

set -g prefix None
bind -n C-b set status on \; switchc -Tprefix

Проблема заключается в том, чтобы убедить его выключаться при нажатии клавиши, потому что нет хука для "произошла любая команда". Вы можете изменить другие привязки клавиш, чтобы отключить его, поэтому cстановится:

bind c set status off \; new-window

Но это было бы больно делать для каждого ключа.

Кроме того, вы можете просто отключить его через секунду или около того, независимо от того, что-то вроде:

set -g prefix None
bind -n C-b set status on \; run -b "sleep 1; tmux set -t'#{session_id}' status off" \; switchc -Tprefix

Но это может раздражать, если вы хотите выполнить несколько команд одну за другой. Хотя вы, вероятно, могли бы написать что-то более сложное, чем этот -, возможно, обновить время нажатия C -b в пользовательской опции и снова отключить статус, только если он был достаточно длинным.

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

1
28.04.2021, 23:21

Теги

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