在 .zshrc 中提示
Prompt in .zshrc
当我启动终端模拟器时,它会创建一个新的 tmux 会话(名为 $(whoami)
),或者如果它已经存在,则附加到该会话。但是,如果已经有一个活动会话,我希望能够选择创建一个新会话。
之前的行为是我的 .zshrc
脚本的一部分,所以我想我可以把额外的逻辑放在那里。这是我在一个单独的脚本中想出的:
sessions=$(tmux list-sessions -F "#{session_created},#S")
sessionCount=$(echo "$sessions" | wc -l)
if (( $sessionCount > 0 )); then
now=$(date +%s)
echo -e "Attach to an existing session, or start a new one:\n"
# List sessions in reverse chronological order
echo "$sessions" | sort -r | while read line; do
created=$(cut -f1 -d, <<< $line)
session=$(cut -f2 -d, <<< $line)
age=$(bc <<< "obase=60;$now - $created" | sed "s/^ //;s/ /:/g")
echo -e "\t\x1b[1;31m$session\x1b[0m\tcreated $age ago"
done
echo
read -p "» " choice
else
# Default session
choice=$(whoami)
fi
exec tmux -2 new-session -A -s $choice
模会话附件,这有效。但是,这个 放在我的 .zshrc
中时 不起作用。 read
行报错:
read: -p: no coprocess
有什么问题?
(这是在 OS X 下,如果有区别的话。)
read -p "» " choice
是 bash
语法,用于在等待用户输入之前显示提示。在zsh
中,等价于
read 'choice?» '
(即由变量名和提示符组成的一个单词,由 ?
连接。整件事都被引用了,尽管实际上只需要 ?
来防止 zsh
从将单词解释为模式。)
当我启动终端模拟器时,它会创建一个新的 tmux 会话(名为 $(whoami)
),或者如果它已经存在,则附加到该会话。但是,如果已经有一个活动会话,我希望能够选择创建一个新会话。
之前的行为是我的 .zshrc
脚本的一部分,所以我想我可以把额外的逻辑放在那里。这是我在一个单独的脚本中想出的:
sessions=$(tmux list-sessions -F "#{session_created},#S")
sessionCount=$(echo "$sessions" | wc -l)
if (( $sessionCount > 0 )); then
now=$(date +%s)
echo -e "Attach to an existing session, or start a new one:\n"
# List sessions in reverse chronological order
echo "$sessions" | sort -r | while read line; do
created=$(cut -f1 -d, <<< $line)
session=$(cut -f2 -d, <<< $line)
age=$(bc <<< "obase=60;$now - $created" | sed "s/^ //;s/ /:/g")
echo -e "\t\x1b[1;31m$session\x1b[0m\tcreated $age ago"
done
echo
read -p "» " choice
else
# Default session
choice=$(whoami)
fi
exec tmux -2 new-session -A -s $choice
模会话附件,这有效。但是,这个 放在我的 .zshrc
中时 不起作用。 read
行报错:
read: -p: no coprocess
有什么问题?
(这是在 OS X 下,如果有区别的话。)
read -p "» " choice
是 bash
语法,用于在等待用户输入之前显示提示。在zsh
中,等价于
read 'choice?» '
(即由变量名和提示符组成的一个单词,由 ?
连接。整件事都被引用了,尽管实际上只需要 ?
来防止 zsh
从将单词解释为模式。)