例子

例子

例子

终端屏幕上显示的内容如下:

user@host ~ % ls
dir1
dir2
dir3

user@host ~ % whoami
user

user@host ~ % date
Wed May 24 16:25:26 -03 2023

user@host ~ % [CURSOR IS HERE]

我正在尝试实现一种方法来仅清除 las 命令的输出(在示例中date)。它可以是一个脚本(我正在尝试使用 bash/zsh 和 perl)或一个快捷方式。

因此,继续这个例子,我们应该看到:

user@host ~ % ls
dir1
dir2
dir2

user@host ~ % whoami
user

user@host ~ % [CURSOR IS HERE]

如果我再次这样做,它应该删除whoami

user@host ~ % ls
dir1
dir2
dir2

user@host ~ % [CURSOR IS HERE]

在 Terminal.app (macOS) 上有一个快捷方式cmd+L(清除至上一个标记

我认为在某些情况下它很方便。经过彻底的搜索,我找不到在其他终端仿真器上实现它的方法。

我能得到的答案是这样的。我放弃了尝试,但可能走在正确的轨道上:

#!/usr/bin/perl
use strict;
use warnings;
print "\e[1F\e[0J";
# zsh function
function clear_until_previous_command() {
  local previous_output_lines=$(( $(tput lines) - $(fc -l -1 | wc -l) ))
  echo -ne "\033[${previous_output_lines}F\033[0J"
}

但两者都清除了整个屏幕。

我使用 Alacritty 但我认为可以为这项任务制定一个便携式解决方案?

有任何想法吗?

相关内容