答案1
單程
如果您需要真正的提示,您可以使用一些遊標操作,如下所示:
#!/bin/bash
# Save cursor position
printf '\033[s'
# Move the cursor up 1 line
printf '\033[1A'
# Clear the screen
printf '\033[1J'
# Restore cursor position
printf '\033[u'
echo "new thing"
如果上面的範例需要更多調整,請參閱範例ANSI 轉義序列:遊標移動並且ANSI 轉義序列對於更多這樣的人。
其他方式
如果您願意,您仍然可以使用clear
,然後像這樣重新繪製提示:
#!/bin/bash
# Clear the screen
clear
# Build the prompt as it was before "clear"
line="$(printf '%s' "$USER@$HOSTNAME:$PWD$ $0")"
# For "root" prompt i.e. "#", comment out the above line and uncomment the below line
# line="$(printf '%s' "$USER@$HOSTNAME:$PWD# $0")"
# Print the prompt
echo "${line/\/home\/$USER/\~}"
echo "new thing"
或甚至像這樣:
#!/bin/bash
clear
line="$USER@$HOSTNAME:$PWD$ "
read -t 0.01 -ei "$(echo "$0")" -p "${line/\/home\/$USER/\~}"
echo
echo "new thing"
外表是騙人的,但外表可能就是你想要的……但這並不是真正的提示。
答案2
你的問題不是很clear
(諷刺的是,這是你想要使用的命令),但無論如何我都會嘗試回答。
據我了解,您使用命令調用腳本(假設它被稱為./myscript
),並且希望在腳本運行之前清除螢幕。
您可以透過兩種方式做到這一點。
清空螢幕,然後執行腳本:
$ clear; ./myscript
將
clear
命令作為腳本中的第一行:#!/bin/bash # Beginning of ./myscript clear # The rest of the script goes here
然後運行腳本,這將清除螢幕,然後繼續執行其他操作:
$ ./myscript
最後,如果您想要建立清除螢幕的別名,然後重新執行最後一個命令,您可以定義:
alias clrun='clear; $(fc -ln -1)'
然後運行clrun
將執行以下操作:清除螢幕,然後重新運行上一個命令。
如果這不能回答您的問題,您必須更準確地表達您想要的內容。