На странице руководства tmux
есть команда display-message
:
display-message [-p] [-c target-client] [-t target -pane] [message]
(псевдоним: display)
Показать сообщение. Если задано -p, вывод выводится на стандартный вывод, в противном случае он отображается в строке состояния целевого клиента. Формат сообщения описан в разделе ФОРМАТЫ; информация берется из целевой панели, если задано -t, в противном случае - активная панель для сеанса, подключенного к целевому клиенту.
В разделе FORMATS есть переменная с именем имя_сеанса
, она будет заменена именем сеанса, если вы используете его в формате # {имя_сеанса}
.
Попробуйте запустить tmux display-message -p '# {session_name}'
, когда вы находитесь в сеансе tmux. Возможно, вы увидите число, это идентификатор подключенного сеанса. Запустите tmux ls
, чтобы проверить список сеансов.
Однако, когда вы запускаете tmux с помощью tmux new -s myproject
, вы увидите myproject
в качестве вывода, но не число. Потому что вы указали имя сеанса при запуске tmux.
Итак, мое решение - поместить фрагмент кода в файл ~ / .bashrc
:
# [tmux] load scripts in ~/.tmux on creating a new pane
# load order: __before__.sh, ${session_name}.sh, __after__.sh
function tmux_load_startup_scripts_by_session_name() {
if [[ -n ${TMUX} ]]; then
local env_before_script="${HOME}/.tmux/__before__.sh"
[[ -f "${env_before_script}" ]] && { . "${env_before_script}"; }
local env_main_script="${HOME}/.tmux/$(tmux display-message -p '#{session_name}').sh"
[[ -f "${env_main_script}" ]] && { . "${env_main_script}"; }
local env_after_script="${HOME}/.tmux/__after__.sh"
[[ -f "${env_after_script}" ]] && { . "${env_after_script}"; }
fi
}
tmux_load_startup_scripts_by_session_name
mkdir ~/.tmux
cat "__before__.sh" > ~/.tmux/__before__.sh
cat "__after__.sh" > ~/.tmux/__after__.sh
cat "sample.sh" > ~/.tmux/sample.sh
tmux new -s sample
Вы увидите результат на каждой созданной вами панели:
__before__.sh
sample.sh
__after__.sh
Преимущество это решение заключается в том, что вы можете указать разные сценарии для разных проектов или среды.
100 Days = 144,000 Minutes = 144000 Minutes -daystart Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24 hours ago. This option only affects tests which appear later on the command line. find "$(pwd)" -daystart -amin +144000 -exec ls -ltrio {} +