我试图在终端中运行命令的第一行之前添加几个空行,并在最后一行之后添加另一个空行(以便始终运行任何命令),因为当我编辑时,PS1
我只能在第一行之前添加空行,但是如果它有长结果,当我运行某些命令时它就会消失,即:运行update
导致忽略添加的空行。
类似这样的事情(直到运行更新):
当我最大化终端窗口时,我可以有最后一个空行,然后我也希望在普通窗口中有这个空行。第一行之前的空行并不重要,但最后一个空行对我来说非常重要。我该如何处理运行命令的结果?如果我实现了这个,那么我就可以有最后一个空行。拜托!
答案1
我保留之前的答案,并根据我们的讨论再添加一个。
这不是完美的解决方案,但我认为我们可以共同改进它:
#!/bin/bash
new_line(){
echo -e "";
}
n=0 # line counter
H=$(stty size | cut -d" " -f1) # this is height of current terminal
# uncomment next line if you want to add empty line after (height - 1) lines
# H=$((H - 1))
new_line
eval $@ |
while IFS= read -r line
do
echo $line;
n=$(($n+1));
if !((n % H)); then # every H lines it is true
new_line
fi;
done
new_line
使用任意名称创建该脚本,在我的情况下为test.sh
,并使其可执行。
现在运行您想要作为参数的脚本和路径命令
$ ./test.sh sudo apt-get update
更新
对 OP 有用但对我没用但最终版本的脚本:
#!/bin/bash
eval $@ |
while IFS= read -r line
do
echo $line
done
答案2
如果你想要完全空白的行,试试这个:
打开终端并创建这两个函数,然后执行trap
:
$ preexec () { echo -e ""; }
$ preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
preexec
}
$ trap 'preexec_invoke_exec' DEBUG
现在尝试执行任何命令并查看结果
请务必注明help trap
:
如果 SIGNAL_SPEC 为 DEBUG,则执行 ARG前每个简单的命令。
如果它按您希望的方式工作,请将此功能添加trap
到您的.bashrc
您可能还想将preexec
功能更改为此项preexec () { echo "-------------------------------"; }
,因为它看起来更加独特。
欲了解更多信息,请阅读:
答案3
最佳解决方案:我发现了一个非常有趣的命令 stty。从 man stty:stty - 更改和打印终端线路设置。
在 tty1 中我运行了此命令:sudo stty rows 20
。现在我的 tty 屏幕限制为 20 行,这允许屏幕上显示 20 行。它与 sudo apt-get install libreoffice -s 和任何其他命令配合使用。
现在,它似乎无法与 gnome-terminal 或 xterm 配合使用,但现在我正在努力寻找解决方案。可能必须在 .bashrc 文件中进行一些更改。
简约的解决方案问题在于使用 less 或 more 或 pg。例如,如果我模拟安装 libreoffice,
sudo apt-get install libreoffice -s | less
这样,最后一行就被替换为 : ,并且仍然可以运行该命令。唯一的缺点是您必须按 Enter 键,以在 pg 的情况下跳到下一页,或在 less/more 的情况下跳到下一行。
另一个解决方案是使用head
或tail
命令。如果您不关心整个输出,而只关心输出的第一部分和结尾部分,这种方法会很有效。顾名思义,这些允许您查看输出的顶部(头部)或输出的结尾(尾部)。例如,
sudo apt-get install libreoffice -s | head -n20;
这将给你第一的20 行输出(我发现默认值是 10)。要获取最后的20 行,与 tail 相同:
sudo apt-get 安装 libreoffice -s | tail -n20;
但是,这些解决方案的问题在于,如果您正在运行一些具有长输出的交互式命令,这可能会阻止您与该命令进行交互,因此请记住这一点。