IT技術

bashで切り取った文字列の履歴をさかのぼって貼り付ける

bashで、Ctrl-kやCtrl-wで切り取りとった文字列をCtrl-yで貼り付けすることは少しbashに慣れた人ならよくやると思いますが、Ctrl-yで貼り付けした直後に M-y (Alt-y)を押すと、履歴を遡って貼り付けすることがで...
IT技術

ログアウトしてもプロセスを止めないようにする@bash

bash上で何かプログラムを走らせている時に、ログアウトしてもプロセスを動かし続ける方法として、いくつかまとめてみました。 nohupを使う コマンド起動時に、 $ nohup ./プログラム名 & としてログアウトする screenを使う...
IT技術

シェルで逐一時間表示@bash

デバッグを目的に、 逐一コマンド実行時に時間を表示させたい場合があります。 $ trap "date" DEBUG これでコマンド実行時に日付が表示されます。 ちなみに、無効にするには $ trap DEBUG を実行します。
IT技術

bashで配列のエクスポートができない@bash 3.2

bashにおいて、サブシェル(呼び出し先の別のシェル)内で呼び出し元の変数を参照しようとする場合、export または declareに-xオプションを使用する必要がありますが、配列変数も同様にexportしても参照できません。 例えば以下...
IT技術

電車の運行情報をチェックしてメール送信をするシェルスクリプト@bash

電車の遅延や事故などの運行情報を公開しているサイトがありますが、使用している路線に何か変化があった場合に携帯にメールを送るサービスは有料ばかりなので、ちょこっとシェルを書いてみました。 24時間起動しているサーバ環境があることが前提です。ま...
IT技術

evalで変数名を変数にする@bash

シェルスクリプトで変数を使用していると、変数名を変数にしたい場合が出てきます。 しかし、以下のようなシェルを書いてもエラーになってしまいます。 #!/bin/bash HOGE_1=1 HOGE_2=2 for i in 1 2; do e...
IT技術

パイプを使ったループの中で使用した変数をループ外で参照できない@bash

bashでパイプを使って以下のような処理をすると、ループ内の変数の値をループ外で参照できないようです。 #!/bin/bash HOGE="hoge" echo -e "$HOGE" | while read I ; do HOGE="$H...
IT技術

パイプでつないだコマンドの戻り値を調べる@bash

シェルスクリプトで、実行したコマンドの戻り値を知る方法は有名ですよね。 以下のように、$? で知ることができます。 ※false は つねに 1 を返すコマンドです。 # false; echo $? 1 しかし、パイプ "|" でつないだ...
IT技術

ドメイン名一覧をドメイン毎にソート(文字列の反転)@bash

Webページのアクセス解析をドメイン毎に集計してみようと思って、IPを抜き出しホスト名を逆引き、そしてsortしようとしたが、sortコマンドは単純に文字列を並べるだけなので、ドメイン毎に集計できません。 例えば、aaa.com でひとまと...
IT技術

標準出力と標準エラー出力を入れ替える方法@bash

標準出力と標準エラー出力を入れ替える方法を、結論だけを先に書くと 3>&2 2>&1 1>&3 というリダイレクトを行うと可能です。 以下は、あまりリダイレクトに詳しくない人向けに説明書いてみました。 ファイルディスクリプタは、0番が標準入...