知っておくと便利なbash知識
TL;DR
便利そうなbashコマンドをまとめていきます。
基本
長い文章を出力する
コマンド結果を変数に格納する
$()か、``でくくる。
ファイルの代わりに標準入力を受け取らせて変数に格納
計算系
整数の四則演算
割り算は切り捨て。
小数の四則演算
bcをつかう。
ファイルを取得する
ファイル名を操作する
拡張子を除く
%を使うと可読性も高くて楽。後ろから見てマッチする文字列を除去できる。拡張子以外にも応用できる
パスからファイル名とそれ以外を取得
basenameを使うと楽。もう一つは##を使う方法もある。こっちは前から見てマッチする文字列の最大を除去する。
区切り文字を使ってファイル名から情報を取得する
%%は後ろから見てマッチする文字列の最大を除去する。
拡張子の一括置換
.txt -> .csv
csvやtsvをある程度フォーマットした状態で読み込む
columnの-sはデフォルトだとtabなので、tsvなら-s以下が要らない。
csvなどの区切り文字を変換する
csv -> tsv
変数が定義されているかを確認する
[ -v variable ]で確認できる。
シェルスクリプト内でaliasを使う
非対話モードではaliasはデフォルトでは動かない。
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
をすれば動く。関数で同様のことができるのでそっちを使った方が楽かもしれない。
Dockerをカレントディレクトリをマウントしつつ動かす例。