シェルスクリプト Tipsまとめ

ここでは、「シェルスクリプト Tipsまとめ」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
シェルスクリプトが楽しいのでググって回っていた.

Tipsを書いてくださっている方がたくさんいらっしゃるので勉強中.

自分用にインデックスをまとめる.中身の説明はリンク先で.


UNIX の小技
www.connect-i.co.jp/tipsblog/
  • pv: パイプラインの速度表示
  • bash のプロセス置換
    • >(list) :teeとあわせてパイプラインの分岐.
    • <(list) :プロセスの出力をファイルとして読む.一時ファイル省略.標準入力受付不可コマンドに流し込む.普通のパイプ処理もプロセス置換で.
    • プロセス置換は名前付きパイプで実装されているらしい.
  • gzip
    動作が決定的/非決定的なる条件の話
  • dd
    パイプライン中でのddの動作


[Tips] シェル(rc)スクリプトを書くときのTips
d.hatena.ne.jp/oraccha/20080902/1220368128
  • `{command}

    コマンド置換.
  • <{command}、>{command}

    プロセス置換.非線形なパイプラインを作れる!これは便利.join で重宝.

シェル(bash)スクリプトを書くときのTips
labs.unoh.net/2008/09/bashtips.html
  • $(...)

    ネストできて便利
  • ((...)), $((...))

    exprと比べて処理が速い(内部コマンドのため)
  • read

    for f in $(find ...); do より find ... | xargs command の方が大量処理向きだが,
    複数コマンドを実行したいときには find ... | while read f; do が便利.



Linux テキスト・ユーティティーでデータ抽出を簡易化する
www.ibm.com/developerworks/jp/linux/library/l-textutils/index.html
  • 正規表
  • grep
  • fgrep
  • egrep
  • cut
  • paste
  • join
    # join -1 4 -2 3 -o 1.1 -o 2.1 -o 1.6 -t":" /etc/passwd /etc/group
  • awk
    awk '/pattern/ {action}' file
    awk -F: '{OFS="-"}{print $1,$6}' /etc/passwd
  • head
  • tail

参考文献の引用:

参考文献

学ぶために




貧相コマンドライン生活 テキストを表示するコマンド
ayapin.film.s.dendai.ac.jp/~matuda/TeX/PDF/11th.pdf
  • colrm 指定カラムを取り除く
  • fold
これは"Linux Japan 連載記事「もう少しだけLinux」"(http://ayapin.film.s.dendai.ac.jp/~matuda/TeX/lj.html)の記事のうちの一つ.



UNIX & Linux コマンド・シェルスクリプト リファレンス
http://shellscript.sunone.me/
コーディングスタイルからデバッグまで.細やかかつわかりやすい.この中から気になったものをピックアップ:

複数行の一括コメントアウト
http://shellscript.sunone.me/tips.html
トリッキーだが,ヒアドキュメントを用いることにより,複数行に渡るコメントアウト可能

: <<'#__COMMENT_OUT__'
hoge
#__COMMENT_OUT__

bash ではパイプで結合したその先がサブシェルで実行される、という仕様(バグ?)が存在している。 先日、シェルスクリプト初心者から、「なぜか変数に値が設定されない」という相談を受けたが、原因はまさにこの仕様であった。

(中略)

今回のような場合、問題を回避するには、パイプではなくリダイレクトを使用するとよい。

(中略)

リダイレクトであれば while ループ内はカレントシェルのままとなるため、期待通りの結果(「bar bar」が出力される)となる。

(中略)

この問題に関しては、以下のサイトに詳しくまとめられている。

Solarisの/bin/shの変数の挙動について(サブシェルの問題)



サブシェルの件はUNIX FAQに載っていた:
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.8.html


複数コマンドのリダイレクトとパイプ
http://shellscript.sunone.me/input_output.html#io-5

スマートに複数コマンドの出力をリダイレクトするには "{}" によるコマンドのグルーピング機能を使用する。

(中略)

もしくは cat コマンドとヒアドキュメントを使用してもよい。


グルーピング機能と同様のもの:
  • for 文の do ~ done ブロックの出力をまとめてリダイレクト
  • 他の制御文も同様にリダイレクト可能
  • 関数全体をリダイレクト
  • 複数コマンドの出力をまとめてパイプに流す




いまさらxargsの便利さを主張してみる
http://openlab.dino.co.jp/2008/02/20/133431188.html
いまさら findと xargsと parallelの便利さを主張してみる
http://d.hatena.ne.jp/hujikojp/20080220/xargs

シェルスクリプトのセキュリティーを高める
http://tm.root-n.com/programming:shell_script:etc:security



UnixパワーツールUnixパワーツール
(2003/09)
シェリー パワーズ、ティム オライリー 他

詳細


UNIXプログラミング環境 (海外ブックス)UNIXプログラミング環境 (海外ブックス)
(1985/09)
Brian W.Kernighan、Rob Pike 他

詳細
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/400-9babc70a
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。