如何在终端 window 的底部显示文本,并使其留在 Bash 中?
How to display text at the bottom of the terminal window, and make it stay there, in Bash?
我正在使用 while 循环来执行生成一堆文件的 ffmpeg 操作,我希望屏幕底部有一个指示器,指示我正在处理的文件,该指示器位于屏幕底部,而 ffmpeg 正在提供输出。有点类似于 apt 包管理器中的方式,有一个进度条始终位于底部,同时它在其上方提供输出信息。我不需要进度条,只需要一串包含文件编号的文本,它始终位于底部。
我的代码的一个非常简化的版本:
# Initialize file number
file_number=1
while IFS=, read -r starttime name endtime; do
# ffmpeg command
ffmpeg -ss $starttime_seconds -i "" -t $duration -codec libopus "$safename" < /dev/null
# Display progress, this is what I want at the bottom of the screen
echo -en "\r--- FILE $file_number ---"
file_number=$((file_number+1))
done < ""
与tput
。替换成你的代码
echo -en "\r--- FILE $file_number ---"
和
print_status
并将其放在您的代码之前:
LINES=$(tput lines)
set_window ()
{
# Create a virtual window that is two lines smaller at the bottom.
tput csr 0 $(($LINES-2))
}
print_status ()
{
# Move cursor to last line in your screen
tput cup $LINES 0;
echo -n "--- FILE $file_number ---"
# Move cursor to home position, back in virtual window
tput cup 0 0
}
set_window
参见:man tput
和 man 5 terminfo
我正在使用 while 循环来执行生成一堆文件的 ffmpeg 操作,我希望屏幕底部有一个指示器,指示我正在处理的文件,该指示器位于屏幕底部,而 ffmpeg 正在提供输出。有点类似于 apt 包管理器中的方式,有一个进度条始终位于底部,同时它在其上方提供输出信息。我不需要进度条,只需要一串包含文件编号的文本,它始终位于底部。
我的代码的一个非常简化的版本:
# Initialize file number
file_number=1
while IFS=, read -r starttime name endtime; do
# ffmpeg command
ffmpeg -ss $starttime_seconds -i "" -t $duration -codec libopus "$safename" < /dev/null
# Display progress, this is what I want at the bottom of the screen
echo -en "\r--- FILE $file_number ---"
file_number=$((file_number+1))
done < ""
与tput
。替换成你的代码
echo -en "\r--- FILE $file_number ---"
和
print_status
并将其放在您的代码之前:
LINES=$(tput lines)
set_window ()
{
# Create a virtual window that is two lines smaller at the bottom.
tput csr 0 $(($LINES-2))
}
print_status ()
{
# Move cursor to last line in your screen
tput cup $LINES 0;
echo -n "--- FILE $file_number ---"
# Move cursor to home position, back in virtual window
tput cup 0 0
}
set_window
参见:man tput
和 man 5 terminfo