將命令換行到提示符號中

將命令換行到提示符號中

是否可以在提示中的命令後面插入分隔符號?這是一個例子:

~/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 中,您可以使用DEBUGtrap 設定 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循環語句中的項目之間。它使讀取腳本輸出變得更加容易。

相關內容