Я не эксперт по tmux, но, возможно, вы могли бы улучшить эту идею :разделить панель на две стороны -по -стороне и показать список убывающих чисел в новой панели, который заканчивается на 0 для самой нижней строки. Например, в вашем ~/.tmux.conf
установите привязку для символа=
bind-key -T copy-mode-vi = split-window -h -p 90 'seq 24 -1 1;sleep 15'\; swap-pane -dU
Затем в режиме копирования vi ввод =
разделит текущую панель и перечислит числа от 24 до 1 в новой панели на 15 секунд. Так как новая панель помещается справа, swap-pane
перемещает ее влево.
the 2nd command can start executing without its input being ready.
Да. В этом нет ничего плохого.
В конвейере producer | consumer
две стороны работают одновременно¹. Потребитель не ждет, пока производитель закончит. Его даже не волнует, начал ли продюсер. Все, что нужно потребителю, — это место, откуда можно прочитать информацию. Это место существует, как только канал был создан вызовом pipe
.
Чтение из канала является блокирующей операцией. Если данные еще не были записаны в канал, считыватель блокируется. Читатель будет разблокирован, когда данные будут записаны в канал. В более общем случае считыватель блокируется, если в канале нет доступных данных. Чтение данных из канала потребляет их. Поэтому не имеет значения, начал ли производитель писать к тому времени, когда потребитель начал читать. Потребитель будет просто ждать, пока производитель запишет некоторые данные.
Потребитель получает данные, как только они становятся доступными.² Обычно он считывает и обрабатывает данные фрагментами. Большинству потребителей не нужно иметь все данные, прежде чем они смогут начать их обработку. Если потребителю действительно нужны все доступные данные, он сохранит их в памяти или во временном файле и дождется окончания ввода.
Поскольку производитель и потребитель являются отдельными процессами, они выполняются одновременно. Тот факт, что один из них может быть запущен, не препятствует запуску другого. Если и производителю, и потребителю требуется процессорное время, ядро будет делить ЦП между ними (и между любым другим процессом, которому требуется процессорное время ). Таким образом, даже когда потребитель инициализируется или обрабатывает некоторые данные, производитель также может работать и производить больше данных.
¹ Можно сказать, что они идут параллельно. Технически это не правильно, но достаточно близко.
² На практике производитель может буферизовать данные внутри себя. Но как только производитель действительно записывает данные в канал, потребитель может их прочитать.