bash の使い方を1から見直すシリーズ
シェルスクリプトは、もうbashで書いていいよね。bashが動かない環境なんてないんだし。
bash の紛らわしい記号や歴史的経緯によるPOSIXかき分けなどがあって、bashに特化した記事って少ないし断片的なので、色々と調べたことを再構成してまとめて記事にしました。
私自身 [[ / [
の違いが全然わからないので調べ始めました。その結果あれこれ知見が得られたので書きながら復習をしていました。
気づけば、bash の教科書的なものになってしまいました。
何かの役に立てばいいと思って記事のインデックスをまとめておきます。まだ一部書けてないですがそのうち書きます。
はじめに
変数と配列と数値計算
- 変数
- 配列のまとめ
- 組込 let による数値計算とインクリメント
- 連想配列(assoc array / hash ) を使う。
- 文字列の追記(append)演算子の紹介
- 可変変数(抽象化)をする。
- 数値計算
変数の展開と置換
- ブレース展開機能の紹介と用例
- パラメータ展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換
- 展開機能をクールに使って、ファイルのバックアップのコピーを楽チンにする
- 変数の初期値
- 変数文字列の置換
- 変数文字列の削除
- コマンド実行結果に置換
条件分岐とif の条件とループ
関数の定義と引数
- bashで関数の定義と実行と削除
- bash引数を使う位置パラメータについてのまとめ
- bashの関数定義には「リダイレクト」も含まれる
- bashの条件判断の関数名を美しくする
- オプション引数を扱う getopts 使い方
- bash(csh)のhashとか言う、気づかないけど便利な機能
- bashのalias に引数を渡すには?
- シェルにコマンドが存在するか調べる
- cron/crontab で 複数行の実行には波括弧 {} を使う
- alias
正規表現とglob パターン
ループの構文のあれこれ
- bash の for ループ : for in スタイル
- bashでC言語スタイルforループ
- bashのwhile/until ループ構文について
- case の例
- select の例
- read の例
bashの似てて紛らわしいものシリーズ。
- bash の for と パイプ(xargs) の一番大きな違い
- bashの似てて紛らわしいもの [[ / ((
- bashの似てて紛らわしいもの (( / $((
- bashの似てて紛らわしいもの ( / ((
- bashの似てて紛らわしいもの [[ / [ / test はどこが違うの?
- bashの似てて紛らわしいもの =/==と= 代入&比較の注意点
- bashの似てて紛らわしいもの `バッククオートと $() について
- bashの似てて紛らわしいもの . / source について
- bashの似てて紛らわしいもの declare/typeset/localの変数宣言
- bashの似てて紛らわしいもの let / (( について
- bashの似てて紛らわしいもの() / {} について
プロセスとジョブ
パイプ
- ssh 経由で dd と転送を同時にやる。サーバーでddをパイプしつつ、ローカルに保存
- tar で圧縮と転送と解凍を一気にやっちゃう
- ffmpegを応用する。ファイル転送しながら、エンコード
- パイプ起動と変数
- STDERR STDOUT STDIN EOF
- リダイレクト
環境変数
- export
- env
- HOME
- bashrc の読み込まれる順番
- shopt
- shopt の使い方
- 変数あれこれ
- inputrc
- inputrc オプション
- bash のチルダ展開をやめさせる方法。
- Bashで大文字小文字の無視をする
- 特殊変数とBASH_XXX変数
- bashのブレース展開の変数置換でPATHをぱぱっと確認する。
コマンドのオプション補完
知ってたら得する話。
- bashのcd/pwd/pushd/popdのまとめ
- ヘルプ(help) コマンドで関数マニュアルを調べる使い方
- bash のシンタックスチェック
- bashの何もしない特殊コマンド : コロン
- bashの再起動execとbashrc を無視する起動オプション
- bashの複数タブ間コマンド履歴(ヒストリ)共有とPROMTO_COMMAND変数について
- time コマンド
- exec コマンド
- 並列実行でロックなど
- Shell Shock 脆弱性
- PS1を作ってくれるスクリプト
- Bashのスクリプトの書き方のマナー
- デバッグ実行
- インタプリタを追いかける
- printf を使う
- 文字列の右寄せ
- 文字列の左寄せ
- 数字の0埋め
- 数字の桁区切り
関連リンク
参考資料
- The Bash Hackers Wiki [Bash Hackers Wiki]
- BashGuide/Practices - Greg's Wiki
- http://mywiki.wooledge.org/BashFAQ/031
- Bash - ArchWiki
- Stray Penguin - Linux Memo (BASH)
- http://nlp.dse.ibaraki.ac.jp/~shinnou/zemi2006/zemi06-bash.html
TODO
各ページに、記事間のリンクの貼ること