0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コマンドは成功。なのにターミナルが固まった話【AWS CLI / ページャ】

0
Posted at

はじめに

AWS CLI でリソースを作ったり消したりしていたときのこと。コマンドを実行したら、画面いっぱいに出力が出て——そのあと、ターミナルが固まりました

Enter を押しても反応なし。次のコマンドを貼っても、なぜか変なエラーが出るだけ。

「コマンド失敗した?壊した…?」と一瞬あせりました😅

でも実際は、コマンドは成功していました。固まって見えた正体は、まったく別のものでした。同じく「AWS CLI で急に固まった」人のために残します。

環境

  • macOS / zsh
  • AWS CLI v2

起きたこと

例えば、こういうコマンドを実行したとします。

aws rds describe-db-instances --region ap-northeast-1

すると、出力がずらっと出たあと、画面の一番下が : で止まり、いつものようにコマンドを入力できない状態になりました。

Enter を何度押しても進まない。仕方なく次のコマンドを貼ったら——私の場合は、次のような表示が出ました。

X=: No such file or directory  (press RETURN)

意味の分からないエラー。h を打ってしまったときは、なぜか操作ヘルプの画面が出てくる始末でした。

原因

固まっていたのではなく、ページャ(less)の中に入っていただけでした。

AWS CLI v2 では、ページャが有効になっていると、長い出力が less(ページャ)に表示されることがあります。画面下の : は、less が「次の操作を待っています」という合図。つまりその時点で、キー入力はシェルではなく less への命令として解釈されます。だから——

  • Enter では抜けられないless を終了するキーは q
  • 次のコマンドを貼ると、その文字が**less のコマンドとして誤解**される(h → ヘルプ表示、貼り付けた文字列 → X=: No such file or directory

コマンド自体は成功していて、その出力を less が表示していただけだったんですね。

解決

まず、固まったときは q を押す。これでシェルに戻れます。

そのうえで、毎回ページャに入らないようにするのが楽です。

# このターミナルでページャを無効化
export AWS_PAGER=""

ずっと無効にしたいなら、シェルの設定ファイル(~/.zshrc など)に同じ行を足せばOK。1回だけ無効にしたいなら、コマンドに付ける方法もあります。

aws rds describe-db-instances --region ap-northeast-1 --no-cli-pager

なお、ページャ中に複数行コマンドを貼ると、意図しない文字入力として扱われることがあります。まず q で抜けてから、必要なら1行にまとめて実行すると安全でした。

学び

  • 画面下が : で止まったら、固まりではなくページャ(less)に入っている合図。
  • 抜けるのは q。Enter ではない。 ページャ中の貼り付けは、文字が less のコマンドとして誤動作する。
  • AWS CLI v2 でページャが鬱陶しければ、export AWS_PAGER="" で無効化できる。

おわりに

「固まった!壊した!」と思ったら、まず q——を確認です😅 AWS CLI を触り始めて同じところで止まった人の役に立てば嬉しいです🙌

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?