かべぎわブログ

技術的なことについてかけたらいいな…

シェルスクリプト

cd - で一つ前にいたディレクトリに戻る

概要 cd -コマンドを利用することで一つ前に自分が居たディレクトリに戻ることができます。 コマンド例 $ pwd /Users/kabegiwa/Downloads $ cd $ pwd /Users/kabegiwa $ cd - /Users/kabegiwa/Downloads おわりに これでまちがってcd実行してホームディレク…

pipをプロキシ環境で利用する

概要 pipコマンドをプロキシ環境で利用する方法についてご紹介します。 コマンド例 こんなかんじでオプションをつけてあげることでプロキシをとおした環境でもpipを利用することができます。 pip install awscli --proxy http://example.proxy:8080 [試して…

Ansibleのec2.pyの結果のJSONをホストグループ形式のファイルにしてみる

AnsibleでAWSのイントラを管理するときに利用するec2.pyの結果で応答されるJSONを人間に優しいホストグループ形式に変換してみたいと思います。 スクリプトはこんなかんじ スクリプト自体はこんなかんじです。 シェルスクリプトでsedで変換かけているだけで…

commコマンドで2つのテキストファイルの比較結果を出力する

あんまり知られてないような気がするけれど結構便利なcommコマンドについてまとめてみます。 commコマンドとは? commコマンドとは、2つのソートされたテキストファイルを比較できるコマンドです。 ファイルを比較して、片方のファイルにしか存在しない行や、…

Amazon Linux2 に自作サービスを追加する

今回はAmazonLinux2のSystemdに自作サービスを追加してみようと思います。 手順 サービスとして追加するスクリプトの準備 ユニットファイルを作成する 各項目のちょっとした解説 サービスとして認識されたかどうか確認する サービスを有効化(enable)する サ…

AWSCLIですべてのLambdaについているタグの一覧を表示するシェルスクリプト

概要 AWSCLIでLambdaのすべての関数についているタグの一覧を取得するシェルスクリプトを作成してみました。 aws lambda list-tagsはARNを指定することでその関数にアタッチされているタグを表示することができます。 ARN指定ですのですべての関数を見に行く…

Pythonのコマンドライン引数 雑チートシート(シェルスクリプトでできたことをやりたい)

シェルスクリプトの${なにがし}をPythonだとどうやって書くのかをまとめました。 (Linux上のシェルスクリプトを適宜Pythonにしたい) 雑チートシート Python ShellScript 説明 sys.argv[0] ${0} 自身のファイル名 sys.argv[1] ${1} 1番目の引数 len(sys.argv)…

diffで差分がないところだけ出力する

今回はdiffで差分がないところだけ出力してみます。 前提 比較するファイルは以下のようなものを用意しています。 $ cat foo.txt AAAAA BBBBB CCCCC $ cat bar.txt CCCCC DDDDD EEEEE 実行コマンド 以下のコマンドでdiffで差分のない部分だけを出力すること…

IPアドレスを2進数に分解するシェルスクリプト

IPアドレスとサブネットマスクでどこまでがネットワークアドレスなのかがわからなくなることが多かったので作りました。 ちょっとしたひまつぶしに作成したのでエラー処理等まじめにやっていないです。 実行例 こんなかんじで引数にIPアドレスをCIDR表記でわ…

シェルスクリプトがリモートで呼び出されたかどうかを判定する

シェルスクリプト内でリモートで呼び出されたか否かを判定してみたいと思います。 具体的にはremsh script.shと./script.shそれぞれで実行したときに違う結果を返すようなスクリプトをつくります。 コード ShellScript 結果 ・ローカルで実行 # ./remote_scr…

シェルスクリプトのデバッグ時に使えるbashのオプション5選

シェルスクリプトをデバッグしていてよく使うオプションを5つ紹介します! /bin/bash -e ./script.sh シェルスクリプトの中でエラー(終了ステータスが0以外)が発生した場合、そこでスクリプトを終了します。 ただし、自分の意図と反して終了することもあるの…

【シェルスクリプト】自分自身のPATHを取得する方法【絶対パス/相対パス】

今回はシェルスクリプト内で自分自身のPATHを取得する方法を紹介します。 相対パスを取得する 以下のようなスクリプトを用意します。 #!/bin/bash dirname ${0} たとえば/home/user/kabegiwa配下にsoutai_path.shとして上のスクリプトを用意した場合、実行結…

sshコマンドでシェル変数を扱うときはエスケープすること【シェルスクリプト】

シェルスクリプトを書いていてひさしぶりにハマってしまったのでメモ。 つまったこと sshコマンドをつかってリモート先のシェル変数を実行したい。 たとえばホスト名が「LOCALSVR」というサーバから「REMOTESVR」というサーバへsshで以下のようなコマンドを…

シェルスクリプトのcase文でYESorNOの大文字小文字を区別しない方法

シェルスクリプトでwhile read -pとcaseで対話式のスクリプトを作っているときにちょっとはまったので備忘録的に残しておく。 やりたいこと スクリプトで以下のように聞かれたときにyでもYESでもYesでもいいよって判定させたい。 ほんとうにいいですか? [y/n…