aws cli 输出自动发送到 vi

aws cli output automatically being sent to vi

我目前正在学习 AWS CLI (v2) 并将其安装在 Ubuntu 18.04 上。我正在 运行ning zsh 并安装了 oh-my-zsh。我试图让 aws 命令输出作为 JSON 字符串(甚至作为文本)报告回终端,但输出总是 重定向到 vi.

我的 AWS 账户是全新的——没有 EC2 实例。当我运行以下命令时:

aws ec2 describe-instances

它发送预期的输出值(例如 { "Reservations": [] }),但直接发送到 vi,而不是将 JSON 字符串输出到要求之后关闭 vi 的终端。无论输出格式如何(json、文本、table)或我使用什么 shell(bash、zsh),都会发生这种情况。

我不确定这是 AWS CLI 配置 issue/change 还是 shell/Linux 配置 issue/change

感谢您 any/all 的建议。

AWS 上有一篇标题为 Controlling Command Output from the AWS CLI 的文档。根据这个文档,正确的语法应该是

aws ec2 describe-instances --output json

我建议创建一个新的用户帐户 and/or 进入没有配置文件的子 shell 并再次尝试 运行 您的 AWS 命令​​。例如...

username:~$ sudo -u `whoami` bash --noprofile
# Now it drops us into a sub-shell with no /etc/profile or any scripts
bash-3.2$ aws ec2 describe-instances

以上将您带入一个不包含任何配置文件(/etc/profile 或 .bash_profile)文件的子 shell。它应该是原始的。从这里我们再次尝试你的命令,看看它做了什么。我想在这里它会工作得很好,不会让你进入 VI。如果是这样,那么您需要在别处寻找导致这种情况发生的 bash/zsh 包含的内容(例如:/etc/profile)。

注意:如果这不能解决您的问题,您的问题可能在 ~/.aws 文件夹中,我会清除该文件夹并从头开始,重新运行 aws configure 然后再次尝试您的命令。

这是 PAGER 环境变量设置为“less”(我与 vi 混淆了)。

此修复是更新 ~/.aws/config 文件并将 cli_pager 设置为空值,例如:

[default]
region = us-west-2
output = json
cli_pager =

感谢 Sorin 对我的问题发表评论并引导我找到答案。

只需 运行 你的命令 --no-cli-pager 就像这样

aws ec2 describe-instances --no-cli-pager

您还可以运行一个单行命令:

aws configure set cli_pager ""