質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

3回答

672閲覧

awscliのalias登録でteraterm上は実行できるが、aliasに登録すると構文エラーが発生する原因についてしりたいです。

fujiyama3

総合スコア5

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/07/12 04:29

awscliをAliasに登録してコマンドを実行できるようにしたいです。
環境は、Amazon Linux2です。
Aliasに登録したいコマンドは、下記のインスタンスの名前、インスタンスID、起動状況、プライベートIPアドレスを取得コマンドとなります。

aws ec2 describe-instances | jq -r '.Reservation[].Instances[] | (.Tags[] | select(.Key == "Name").Value) + "\t" + .InstanceId + "\t" +.State.Name + "\t" + .PrivateIpAddress'

Teraターム上では、上記コマンドを実行すると、正常に実行結果が表示されますが、.bashrcの#User specific aliases and functionsに下記コマンドを

alias il='aws ec2 describe-instances | jq -r '.Reservation[].Instances[] | (.Tags[] | select(.Key == "Name").Value) + "\t" + .InstanceId + "\t" +.State.Name + "\t" + .PrivateIpAddress''

登録しますと
-bash: .bashrc:19行:予期しないトークン`('周辺に構文エラーがあります)
と表示されます。

どこが悪いのかわからないので、原因を教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

いつか必要になりそうという動機もあり、CloudShell環境で検討・テストしました。
otnさんの回答と重複しますが、シングルクォートで囲まれた文字列の内部にシングルクォートがある場合、内部の方のシングルクォートで文字列が終了していると解釈されますので使用できません。また、bashの仕様上、シングルクォートをエスケープして扱うこともできません。
ですので、可読性が多少犠牲にはなるのですが、一番外側のみシングルクォートで囲い、その他のクォートはダブルクォートで統一(必要に応じエスケープ)するのが懸命、と個人的に思います。

bash

1[cloudshell-user@ip-10-0-xx-xxx ~]$ alias il='aws ec2 describe-instances | jq -r ".Reservations[].Instances[] | (.Tags[] | select(.Key == \"Name\").Value) + \"\t\" + .InstanceId + \"\t\" +.State.Name + \"\t\" + .PrivateIpAddress"' 2[cloudshell-user@ip-10-0-xx-xxx ~]$ il 320170909-windows i-0xxxxxxxxxxxxxxxx stopped 172.31.16.126 420180211-ubuntu i-0xxxxxxxxxxxxxxxx stopped 172.31.32.241 5[cloudshell-user@ip-10-0-xx-xxx ~]$

投稿2022/07/12 14:45

ninja250r

総合スコア152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

'で囲んだ中に、データとして'を含めることは出来ません。

元のコマンドラインが、"'の両方があるので、面倒ですね。
全体を'でなく"で囲んだ上で、中にデータとして出てくる"\"\\\と書きます。

sh

1alias il="aws ec2 describe-instances | jq -r '.Reservation[].Instances[] | (.Tags[] | select(.Key == \"Name\").Value) + \"\\t\" + .InstanceId + \"\\t\" +.State.Name + \"\\t\" + .PrivateIpAddress'"

テストしてません。
わかりにくいと思ったら、aliasでなくシェルスクリプトにしましょう。シェルスクリプトなら、コマンドラインで実行したままそのまま書けば良いです。

投稿2022/07/12 04:47

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご教授ありがとうございます!
とても勉強になりました。
今後ともよろしくお願い致します。

投稿2022/07/13 12:25

fujiyama3

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問