是否可以在提示中的命令后面插入分隔符?这是一个例子:
~/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
循环语句中的项目之间。它使读取脚本输出变得更加容易。