Да, с помощью команды list-panes
.
tmux list-panes -a -F '#D #{pane_tty}'
%0 /dev/pts/9
%1 /dev/pts/10
Вы можете использовать это, чтобы перечислить многое другое:
tmux list-panes -a -F '#D #T #{pane_tty} #{pane_current_command} #{pane_current_path}'
tmux list-windows -a -F '#{window_id} #W #{window_layout}' | while read w i; do echo $w $i; tmux list-panes -t "$w" -F " #D #{pane_tty} #T #{pane_current_command}"; done
Посмотрите раздел ФОРМАТЫ на справочной странице tmux
.
При использовании правой стороны канала существуют некоторые ограничения.
Я изменил ваш код, чтобы переменные не устанавливались перед использованием, и немного сжал его.
#! /bin/sh
unset firstline secondline
printf '%s\n%s\n' line1 line2 > myfile
cat myfile | { read firstline; read secondline
echo "internal 1: $firstline" # "line1" in most shells
echo "internal 2: $secondline" # "line2" in most shells
}
echo "Outside 1: $firstline" # "line1" in ksh, zsh (even called as sh).
# Empty in sh, bash, mksh, dash, ash, yash.
echo "Outside 2: $secondline" # "line2" in ksh, zsh.
# Same as above for other shells.
Внутренние элементы составной команды {...}
имели значения, внешние(Outside
)во многих случаях были пустыми (, особенно POSIX, портативный вариант ).
Только если вы установите shopt -s lastpipe
, вы получите bash, чтобы сохранить значения справа от символа вертикальной черты.И ksh (93 ), и zsh сохраняют считанные значения по умолчанию.
Итак, проблема состоит в том, чтобы избежать символа вертикальной черты |
, ну, в данном случае это очень просто. Либо <file {... }
, либо {...} <file
, и вы настроены на переносимость значений переменных.
#! /bin/sh
unset firstline secondline
printf '%s\n%s\n' line1 line2 > myfile
{ read firstline; read secondline
printf '%s\n' "internal 1: $firstline" # "line1" in most shells
printf '%s\n' "internal 2: $secondline" # "line2" in most shells
} < myfile
printf '%s\n' "Outside 1: $firstline" # "line1" in most shells.
printf '%s\n' "Outside 2: $secondline" # "line2" in most shells.
Эта работа во всех протестированных оболочках, кроме старой оболочки Bourne (в ней отсутствует структура {...}, которая работает в настоящей оболочке, обходной путь становится более сложным, не стоит времени, прочитайте ответ @schily для этого ).