是否可以在提示中的命令後面插入分隔符號?這是一個例子:
~/Desktop: ls -al
-------------------------------------
total 80
drwx------+ 6 eddie staff 204B Apr 29 16:57 .
drwxr-xr-x+ 54 eddie staff 1.8K Apr 30 10:54 ..
~/Desktop:
具體來說,我想在發出命令後添加 --------- 部分,以便更容易地區分命令和結果
答案1
在zsh中,可以定義hook函數preexec
在執行每個命令之前回顯指定的字串。
在 bash 中,您可以使用DEBUG
trap 設定 preexec 掛鉤來執行相同的操作。
您可以定義一個 preexec() 函數,如下所示:
preexec () { echo "-------------------------------"; }
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
preexec
}
trap 'preexec_invoke_exec' DEBUG
查看更多詳細信息bash 是否有一個在執行命令之前運行的鉤子?
我不認為這適用於所有版本的 bash。在我的舊 Ubuntu 伺服器上,運行 bash 3.2.39(1),help trap
說
如果 SIGNAL_SPEC 為 DEBUG,則執行 ARG後每個簡單的命令。
在另一台伺服器上,運行 bash 4.1.2(1),它說
如果 SIGNAL_SPEC 為 DEBUG,則執行 ARG前每個簡單的命令。
這就是我們所需要的。因此,請確保在您的 bash 版本中help trap
顯示“前每一個簡單的指令。
答案2
如果您的 shell 使用 bash 或 ksh,則可以在點檔案之一(.profile、.bash_profile 等)中建立函數,如下所示:
function hr {
echo "--------------------------------------------------------------------------------"
}
然後,只要您希望使用該分隔符號&&
或;
將其用作命令分隔符,您就可以將其新增至命令前面。如:
bash-[534]$ hr && ls
--------------------------------------------------------------------------------
ddtool_23.jnlp prtconf-pv
或者
bash-[536]$ hr ; ls -la
--------------------------------------------------------------------------------
total 36K
drwxr-xr-x 2 tim staff 4 2012-12-06 15:02 ./
drwxr-xr-x 46 tim staff 134 2013-04-30 14:59 ../
-rw------- 1 tim staff 2.7K 2012-12-06 15:00 ddtool_23.jnlp
-rw-r--r-- 1 tim staff 24K 2012-12-06 15:02 prtconf-pv
我做這個。我還有第二個功能,可以列印更厚的分隔符號。
function hr2 {
echo "================================================================================"
}
我經常在 shell 腳本中使用這些函數來分隔腳本的不同部分,例如hr2
主要任務之間以及hr
循環語句中的項目之間。它使讀取腳本輸出變得更加容易。