Hed*_*ego 16 terminal bash zsh command-line oh-my-zsh
我想知道如何才能zsh做到bash这一点:我希望命令输出始终显示在终端中这些命令的正下方。
例如,当我运行以下命令时,其结果显示如下bash:
john-doe@machine:~$ aws sts get-caller-identity
{
"UserId": "USERID",
"Account": "123456789",
"Arn": "arn:aws:iam::123456789:user/jonh-doe"
}
Run Code Online (Sandbox Code Playgroud)
而在 中执行时zsh,结果显示在单独的“编辑器”中,我可以在看到这些结果后退出,但一旦退出,我也无法访问命令的输出。下面有一个截图:
我不想总是将输出通过管道传输到文件。
我正在运行 Ubuntu 20.04 并oh-my-zsh使用主题powerlevel10k(我也测试了其他主题,并且zsh行为与我上面提到的相同)。我还使用TerminatorUbuntu 的默认终端程序进行了测试。
是否有任何设置可以覆盖此zsh行为?
任何帮助将不胜感激。谢谢你!
Cry*_*ool 21
zsh您看到的行为与vs无关bash。oh-my-zsh由于修改shell 环境的方式而发生的行为zsh。在 中~/.oh-my-zsh/lib/misc.zsh,您会发现这两行:
env_default 'PAGER' 'less'
env_default 'LESS' '-R'
Run Code Online (Sandbox Code Playgroud)
作用env_default是仅在尚未设置环境变量的值时设置环境变量的值,因此顾名思义,它定义变量的默认值。它还在设置变量时导出该变量。因此,如果变量PAGER和LESS尚未设置为其他任何值,则这些行相当于:
export PAGER='less'
export LESS='-R'
Run Code Online (Sandbox Code Playgroud)
这些行的作用是将默认的 Linux 寻呼机设置为less. 这就是导致您看到的令您烦恼的行为的原因。如果您在 shell 中运行这两行bash,它将开始以相同的方式运行。
有多种方法可以通过在代码开始运行这两行代码之前显式设置这两个变量之一的值来禁用此行为。这样做的好地方是 ~/.oh-my-zsh/custom/config.zsh. 一种方法是将PAGER环境变量设置为空字符串,如下所示:
export PAGER=""
Run Code Online (Sandbox Code Playgroud)
您可以做的另一件事是将less工具配置为不表现出此特定行为,除非相关输出至少是完整控制台窗口的输出。这将阻止您的示例中的行为。你可以用这一行来做到这一点:
export LESS="-F -X -R"
Run Code Online (Sandbox Code Playgroud)
选项-F就是这个的作用。我不知道为什么-X也需要这个选项,但似乎是这样。
最后,我会指出每个特定的 Linux 工具都会决定是否应该使用寻呼机。如果是这样,它通常会PAGER在这样做时尊重该变量。ls例如,该命令根本不使用寻呼机。无论它向控制台打印多少输出,它都不会表现出分页行为。如果命令使用寻呼机,您通常可以使用特定于工具的命令仅针对该工具禁用此行为。例如,要禁用 的寻呼机git,您可以执行以下操作:
export GIT_PAGER=""
Run Code Online (Sandbox Code Playgroud)
您还可以通过单个命令禁用寻呼机git。例如:
git --no-pager branch
Run Code Online (Sandbox Code Playgroud)
将运行git branch而不通过当前寻呼机运行输出。
我不知道是否有任何方法可以配置该aws命令是否/如何使用寻呼机。另一个答案提供了一些有关如何关闭单个任意命令的分页的选项。这是另一种方法,根据上面给出的信息禁用寻呼机:
PAGER="" aws sts get-caller-identity
Run Code Online (Sandbox Code Playgroud)
小智 0
快速解决方法是使用 bash 运行它。
bash -c "aws sts get-caller-identity"
Run Code Online (Sandbox Code Playgroud)
或者正如mpy所说,您应该检查您的配置文件或使用此命令之一
aws sts get-caller-identity | cat
Run Code Online (Sandbox Code Playgroud)
aws sts get-caller-identity | less
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7129 次 |
| 最近记录: |