AWS CLI の 結果出力からプロンプトに戻る方法を確認しました

AWS CLI の 結果出力からプロンプトに戻る方法を確認しました

Clock Icon2023.12.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

この記事は アノテーション株式会社 AWS Technical Support Advent Calendar 2023 | Advent Calendar 2023 - Qiita 2日目の記事です。

はじめに

こんにちは。アノテーションのこのみです。

AWS CloudShell などの環境で describe~ などの AWS CLI コマンドを実行したとき、結果が長い場合は一度に表示されません。
Space キー等でページを進めると、下記画像のように最後の行に (END) と表示されますが、どのキーを押して元のプロンプトに戻ったらいいのかが分かりませんでした。
Linux をよく利用されている方にとっては常識かもしれませんが、私はチームのメンバーに教えてもらうまで答えにたどり着けなかったので、ここに残します。

この記事の対象となる方

  • Linux 環境で AWS CLI を実行している方
  • AWS CloudShell で AWS CLI を実行している方

※Windows 環境で AWS CLI を実行している方は、基本的にはこの記事の状態にはならないため対象外です。
理由は後ほど説明します。

先に結論

「q」キーでプロンプトに戻れます。

調べたこと、試したこと

画面上で exit と打ってみたり、Ctrl+C や、Esc キーなどを押してみたりしましたが、元のプロンプトは戻ってきませんでした。
ちなみに、Ctrl+C では、一見元のプロンプトが戻ったように見えますが、それ以降プロンプトに文字を入れても表示されなくなってしまいます。(こうなると直らないので AWS CloudShell は再起動していました)

とはいえ検索しようにも、今出会っている事象がどういうことなのかが分からなかったので、「CLI 結果 抜け方」や「JSON 結果 プロンプト 戻る」など、 仕組みが分かっている現在の私からすると全然的外れな調べ方をしていました。

解決

チームメンバーに画面を見てもらったときの回答をもとに、自分でも調べた内容を整理します。

はじめに、デフォルト設定の AWS CLI では、結果が長くなった際に一度に表示せず、ページの分割が行われる仕様があります。 そのページ分割は、AWS CloudShell などの Linux 環境では less という仕組み(ページャー)で動いています。(参考資料参照)
そして、less で表示された結果を抜けるには「q」キーを押します。

上記のことから、Linux 環境において、AWS CLI の出力結果が長くてページ分割が行われた場合には、「q」を押せば元のプロンプトに戻れると理解しました。

なお、Windows の場合はデフォルトのページャーが more のため、一番下までページを表示したら自動的に元のプロンプトに戻ります。
そのため、Windows 環境から CLI を実行している場合には、基本的に今回の様な状態にはならないため、今回の対象からは外させていただきました。

参考資料

クライアント側のページャー - AWS CLI のページ分割オプションを使用する

Linux and MacOS
特に指定しない場合、AWS CLI バージョン 2 がデフォルトで使用するページャーは less です。

Windows
特に指定しない場合、AWS CLI バージョン 2 がデフォルトで使用するページャーは more で、追加のフラグはありません。

おわりに

私のように、これまで Windows 環境を利用されてきて、最近 Linux 環境で AWS CLI を利用するようになった方の混乱を助けることができれば幸いです。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。
現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.