「シェルプログラミング」の版間の差分
ナビゲーションに移動
検索に移動
(→基本) |
|||
(同じ利用者による、間の10版が非表示) | |||
1行目: | 1行目: | ||
+ | | [[Programming C]] | [[Linux]] | [[Cygwin]] | [[Linux コマンド]] | | ||
==[[シェルプログラミング]]== | ==[[シェルプログラミング]]== | ||
− | |||
これらの本からの覚書。 | これらの本からの覚書。 | ||
7行目: | 7行目: | ||
==ソフトウェアツールの開発理念== | ==ソフトウェアツールの開発理念== | ||
− | + | [https://www.amazon.co.jp/exec/obidos/ASIN/4873112672/typea09-22 詳解シェルスクリプト] イントロダクション | |
*一つのことをしっかりやる | *一つのことをしっかりやる | ||
*バイナリデータではなく文字列を扱う | *バイナリデータではなく文字列を扱う | ||
14行目: | 14行目: | ||
*余計な出力は行わない | *余計な出力は行わない | ||
*入力データと同じ形式で処理結果を出力する | *入力データと同じ形式で処理結果を出力する | ||
+ | *一つのプログラムで全てをこなそうと思わない | ||
+ | *ツールをどんどん作る | ||
+ | |||
+ | ==[[シェルプログラミング 基本|基本]]== | ||
+ | *[[シェルプログラミング 基本]] | ||
+ | ===リダイレクトとパイプ=== | ||
+ | * < を使って標準入力を変更する | ||
+ | * > を使って標準出力を変更する | ||
+ | * >> を使ってファイルに追記する | ||
+ | * | を使ってパイプラインを作る | ||
+ | ===特殊ファイル=== | ||
+ | ====/dev/null==== | ||
+ | *ビットバケツ(bit bucket) と呼ばれる | ||
+ | *このファイルに送られるデータは全て削除される | ||
+ | *データを読み込むと、常にファイル終端文字が返される | ||
+ | ====/dev/tty==== | ||
+ | *プログラムが実行された端末にリダイレクトされる | ||
+ | *パスワードなど必ず手入力して欲しい場合などに便利 | ||
+ | ===文字列の検索と置換=== | ||
+ | *当初から存在していた、grep(POSIXのBRE:Basic Regular Expressionsに対応)、拡張された、egrep(ERE:Extended Regular Expressionsに対応)、正規表現に対応しない代わりに、高速な固定検索をおこなう、fgrepが、歴史的な経緯で存在しているが、1992年のPOSIX標準で、grepに統合され、オプションで切り替えられるようになった(現実的には削除されずに残っている) | ||
+ | ====[[正規表現]]==== | ||
− | + | ==[[シェルプログラミング 変数|変数]]== | |
− | |||
− | |||
− | |||
*[[シェルプログラミング 変数|変数]] | *[[シェルプログラミング 変数|変数]] | ||
− | + | ==[[シェルプログラミング 条件|条件]]== | |
*[[シェルプログラミング 条件|条件]] | *[[シェルプログラミング 条件|条件]] | ||
− | + | ==[[シェルプログラミング 制御|制御]]== | |
*[[シェルプログラミング 制御|制御]] | *[[シェルプログラミング 制御|制御]] | ||
− | + | ==[[シェルプログラミング リスト|リスト]]== | |
*[[シェルプログラミング リスト|リスト]] | *[[シェルプログラミング リスト|リスト]] | ||
− | + | ==[[シェルプログラミング 関数|関数]]== | |
*[[シェルプログラミング 関数|関数]] | *[[シェルプログラミング 関数|関数]] | ||
− | + | ==[[シェルプログラミング コマンド|コマンド]]== | |
*[[シェルプログラミング コマンド|コマンド]] | *[[シェルプログラミング コマンド|コマンド]] | ||
==[[Tips]]== | ==[[Tips]]== | ||
+ | ===grepで対象のファイル数が多く argument list too longとなる場合=== | ||
+ | *NG | ||
+ | <pre> | ||
+ | $ grep "hoge" * | ||
+ | -bash: /usr/bin/grep: Argument list too long | ||
+ | </pre> | ||
+ | *書き換え | ||
+ | <pre> | ||
+ | $ echo * | xargs grep "hoge" | ||
+ | </pre> | ||
===複数ファイルを処理=== | ===複数ファイルを処理=== | ||
*ディレクトリのファイルをまとめて解凍 | *ディレクトリのファイルをまとめて解凍 |
2020年10月29日 (木) 14:09時点における最新版
| Programming C | Linux | Cygwin | Linux コマンド |
目次
シェルプログラミング
これらの本からの覚書。
ソフトウェアツールの開発理念
詳解シェルスクリプト イントロダクション
- 一つのことをしっかりやる
- バイナリデータではなく文字列を扱う
- 正規表現を使う
- 特に指定がなければ標準入力と標準出力を使う
- 余計な出力は行わない
- 入力データと同じ形式で処理結果を出力する
- 一つのプログラムで全てをこなそうと思わない
- ツールをどんどん作る
基本
リダイレクトとパイプ
- < を使って標準入力を変更する
- > を使って標準出力を変更する
- >> を使ってファイルに追記する
- | を使ってパイプラインを作る
特殊ファイル
/dev/null
- ビットバケツ(bit bucket) と呼ばれる
- このファイルに送られるデータは全て削除される
- データを読み込むと、常にファイル終端文字が返される
/dev/tty
- プログラムが実行された端末にリダイレクトされる
- パスワードなど必ず手入力して欲しい場合などに便利
文字列の検索と置換
- 当初から存在していた、grep(POSIXのBRE:Basic Regular Expressionsに対応)、拡張された、egrep(ERE:Extended Regular Expressionsに対応)、正規表現に対応しない代わりに、高速な固定検索をおこなう、fgrepが、歴史的な経緯で存在しているが、1992年のPOSIX標準で、grepに統合され、オプションで切り替えられるようになった(現実的には削除されずに残っている)
正規表現
変数
条件
制御
リスト
関数
コマンド
Tips
grepで対象のファイル数が多く argument list too longとなる場合
- NG
$ grep "hoge" * -bash: /usr/bin/grep: Argument list too long
- 書き換え
$ echo * | xargs grep "hoge"
複数ファイルを処理
- ディレクトリのファイルをまとめて解凍
#!/bin/sh for f in `ls *.zip` do unzip $f done
日付
書式
+で書式設定
# date +%Y%m%d%H%M%S 20130817093545
スクリプト中で使う
sufix=`date +%Y%m%d%H%M%S` echo $sufix
© 2006 矢木浩人