シェルスクリプトメモ
なにこれ?
- ググったり調べたりしたコマンドや構文の一覧。
- 現時点で知っているコマンドや構文は出てこない。どこかで追記できればいいが・・・。
- シェルは基本的に bash 。
目的
- 自分が把握できているコマンドや構文を整理する。
command - コマンド
cut
sh cut -f 1 -d "=" $HOGE_CONF
- HOGE_CONF の各行を "=" でsplitして、各行の第1要素を取得。インデックスは1から。)
- d(delimiter) オプション - デリミタ(区切り)を指定
- f オプション - 何番目の要素を抽出するかを指定
- c オプション - 指定した文字数の文字を取り出す
- 文字数の指定には「開始位置-終了位置」のように範囲で指定できる
eval
$ val="1234"; test="val"; x=\$${test}; echo $y
- ->
1234
- ->
- bash は一度に変数を複数展開できない。一気に展開したいときに使う。この例では $y が一気に展開されている。
paste
pdsh
psdh -R ssh -f $PARA_NUM -l $DST_USER -w $SERVER "コマンド"
- f オプション - 並行稼動リモートコマンド数
- l オプション - リモートサーバでコマンドを実行するユーザを指定
- w オプション - ターゲットサーバ
rsh
との差異 -> パラレルが可能。rsh
はシングルのみ。
tr
tr [A-Z] [a-z] $FILE
- FILE の大文字を小文字に変換
echo "test,,,test" | tr -s ',' ' '
- ->
test test
- s(squeeze-repeats) オプションは、
同じ文字の繰り返しを 1 文字に置き換える。この操作は変換や削除のあとに行われる。 SET1 にある文字の繰り返をし、その文字 1 文字に置き換える。
- ->
sort (2014/3/3追記)
cat hoge | sort -gk1 -gk2 -gk3
- hoge の 第1カラム -> 第1カラム -> 第1カラム の順に、各カラムを数字として行をソートする
- k オプション(-k POS1 [POS2]) - POS1 以降 POS2 までをほキーとしてソートする
- g オプション - 数字としてソートする
grep (2014/3/3追記)
tree (2014/3/4追記)
- ディレクトリの階層構造を標準出力する
expr (2014/3/4追記)
expr "abcdefghogeijkl" : ".*\(h\)oge.*"
- ->
h
.*\(h\)oge.*
がabcdefghogeijkl
に文字列として一致するか正規表現検索し、マッチすれば()内を標準出力
- ->
sha1sum (2014/3/5追記)
syntax - 構文
バッククオートによる、
`コマンド`
は古い書式だし、可読性が低い。$(コマンド)
を使おう
ドット
.
で外部ファイル読込- 例)
. $HOGE_CONF
- 例)
比較(test)
- 文字列
- -z : 文字列の長さが 0 なら true (2014/3/4追記)
- ファイル属性確認
- -r : 読み取り可能ファイルなら真(2014/3/31追記)
- 文字列
ifの謎構文 (2014/3/5追記)
変数の文字列処理 (2014/3/14追記)
- shとbashでの変数内の文字列置換など - ろば電子が詰まっている
- ${変数名#パターン} → 前方一致でのマッチ部分削除(最短マッチ)
- ${変数名##パターン} → 前方一致でのマッチ部分削除(最長マッチ)
- ${変数名%パターン} → 後方一致でのマッチ部分削除(最短マッチ)
- ${変数名%%パターン} → 後方一致でのマッチ部分削除(最長マッチ)
- ${変数名/置換前文字列/置換後文字列} → 文字列置換(最初にマッチしたもののみ)
- ${変数名//置換前文字列/置換後文字列} → 文字列置換(マッチしたものすべて)
- shとbashでの変数内の文字列置換など - ろば電子が詰まっている
オプション解析 (2014/3/14追記)
番外編 - 特殊パーミッション
- suid(Set User ID)
- 実行ファイルに設定される属性
- 実行ファイルの所有者の権限で動作する
- 例) /usr/bin/passwd
- sgid(Set Group ID)
- 実行ファイル、もしくはディレクトリに設定される属性
- 実行ファイルにSGIDが設定された場合
- SUIDと同じく、実行ファイルは所有グループの権限で動作
- ディレクトリにSGIDが設定された場合
- そのディレクトリ以下で作成したファイルおよびディレクトリの所有グループは、自動的に親ディレクトリと同じになる
- 例) /usr/bin/wall
- sticy(Sticky bit)
- ディレクトリに設定される属性
- 実際のパーミッションに関係なく、ファイルもしくはディレクトリの所有者と、rootユーザーのみが名前の変更と削除を行える
- 例) /tmp
UNIX処方箋:SUIDとは - ITmedia エンタープライズ
Linuxの特殊なパーミッション – No:227 – Linuxで自宅サーバ構築(新森からの雑記)