スキップしてメイン コンテンツに移動

bashの小ネタ集

Bashの小ネタ集です。あるあるからなんじゃそりゃまで、小ネタのパラダイスとなっております。




スペースも何もない行をgrepする

grep "^$"

grep -v "^$"とすれば、空白行を排除できる。


bashでsubstr

bashにはsubstrというコマンドはないです。
なので、cutコマンドで対応します。
# "abcdefg"から先頭の3文字(abc)を取り出す
echo "abcdefg" | cut -c-3        #cut -c1-3でも可
abc

# "abcdefg"から4~6文字目(def)を取り出す
echo "abcdefg" | cut -c4-6
def

# "abcdefg"から1、3、6文字目(acf)を取り出す
echo "abcdefg" | cut -c1,3,6
acf

# ちなみに指定する順序が違っても出てくる文字列は同じ
echo "abcdefg" | cut -c1,6,3
acf

# 上を組み合わせてこんな事もできる
echo "abcdefg" | cut -c-2,5
abe

# こちらも指定の順序ではなく元の文字列の順序に準じる
echo "abcdefg" | cut -c5,1-4
abcde

ifの条件

ifの条件部分は[]やtestコマンドだけではなく、色んなコマンドを入れられる。
if echo "abcde" | grep "abc"; then
  echo "true"
fi

# ただ、上のスクリプトの結果は次のようになる
abcde
true

grepの結果も表示されているので、これをうまく排除する必要がある。以下修正版。
if echo "abcde" | grep "abc" > /dev/null; then
  echo "true"
fi

# 結果
true

要は、戻り値が0とか1になるコマンドならなんでもOKということで、grepは検索結果がヒットすれば行単位で表示するが、表示されないけれど終了ステータスも出力している。grepの場合は、ヒットした場合は0、ヒットしなかった場合は1を返す。

終了ステータスは0が正常、1が異常なので、一般的なif文とは逆のような感じではあるけれど、これはこういうもんです。


xargsで大量のファイルを移動する

引数の数が多すぎてエラーになるほど大量のファイルを移動したい場合は、xargsで一発。
find . -name "hoge*" | xargs -I{} mv {} /tmp

findでファイルを引っ掛けて、ファイル名をxargsに渡します。その後、xargsがファイル名を1つずつmvで移動するという寸法です。
mvに渡る引数は常に1ファイル分なので、シェルスクリプトでwhileを回しているような感じ。
xargsに関しては、エンジニアの数だけ使い方があると言っても過言ではない応用の効くコマンドです。

転ばぬ先の杖的なat

atコマンドはcronの影に隠れがちなコマンドですが、根本的に違うのは、1回きりの実行を時限爆弾のように仕込める事。
時間指定が少々お茶目(manページで微笑んでください)ですが、iptablesの設定を遠隔で行う時など、設定に失敗するとコネクションが張れなくなるような局面(限定的すぎる・・・)に使うのはどうでしょう。
iptablesはストップすると設定がクリアされるので、SSHを開け忘れたとか、全パケットを破棄するような何時使うのか分からないフィルタリングを設定してしまった場合、筐体が海外にあるとかは絶望的なのでぜひatコマンドでiptables stopをatコマンドに引っ掛けてから設定してテストしましょう。 → Man page of AT


思いついたら書き貯めてを繰り返し、ようやく数が出揃ったので放出。再びネタ集めの日々が始まります。
なんだかな~と思うネタからおおっと思うネタまで玉石混交ですが、探偵ナイトスクープの小ネタ集を目指して頑張ります。


see also:
BASHが好きになる! 13の便利なコマンド


コメント

このブログの人気の投稿

[VB.NET]オレオレ証明書でSSL通信するための短絡的な解決法

VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。 いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。

[JS]Canvasでよく使う描画テクまとめ

HTMLで画像をいじくりたい時は、canvasを利用して編集するのは一般的ですが、WindowsストアアプリではHTML+CSS+JSでのアプリ開発ができる事もあって、簡単な画像編集であれば、C#やVBを使うより分かりやすいし資料が多く、C++でDirectXをガリガリ書くよりお手軽。入出力もファイルピッカーを使えば簡単に実装できます。今回は、Windowsのコードではなく、Canvasを利用する時のJavaScriptを使いどきに合わせてまとめていきます。

curl の基本的な使い方 -設定編-

今回のcurl TIPSは、curlをより日常的に使っていくためのHow toです。curlには、数多くのオプションが用意されていて、それらを組み合わせる事で様々な事が楽になるでしょう。サービス監視の自動化などにはまさにcurlの得意分野です。 今回は、curlを更に自分のものにしていくために大事なカスタマイズの部分を解説します。