==シェルプログラミング==| [[Programming C]] | [[Linux]] | [[Cygwin]]| [[Linux コマンド]] |==[[シェルプログラミング]]==
これらの本からの覚書。
{{amazon|4873112672}}
==基本ソフトウェアツールの開発理念=====[シェルプログラミング 基本https://www.amazon.co.jp/exec/obidos/ASIN/4873112672/typea09-22 詳解シェルスクリプト] [基本]===イントロダクション*[シェルプログラミング 基本] [基本]一つのことをしっかりやる===[シェルプログラミング 変数] [変数]===*バイナリデータではなく文字列を扱う*[シェルプログラミング 変数] [変数]===[シェルプログラミング 条件] [条件]===正規表現を使う*[シェルプログラミング 条件] [条件]===[シェルプログラミング 制御] [制御]===特に指定がなければ標準入力と標準出力を使う*[シェルプログラミング 制御] [制御]===[シェルプログラミング リスト] [リスト]===余計な出力は行わない*[シェルプログラミング リスト] [リスト]===[シェルプログラミング 関数] [関数]===入力データと同じ形式で処理結果を出力する*[シェルプログラミング 関数] [関数]===[シェルプログラミング コマンド] [コマンド]===一つのプログラムで全てをこなそうと思わない*[シェルプログラミング コマンド] [コマンド]ツールをどんどん作る
==[[シェルプログラミング 基本|基本]]==
*[[シェルプログラミング 基本]]
===リダイレクトとパイプ===* < を使って標準入力を変更する* > を使って標準出力を変更する* >> を使ってファイルに追記する* | を使ってパイプラインを作る ===特殊ファイル=======/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<pre>$ grep "hoge" *-bash: /usr/bin/grep: Argument list too long</pre>*書き換え<pre>$ echo * | xargs grep "hoge"</pre>
===複数ファイルを処理===
*ディレクトリのファイルをまとめて解凍
----
*[[Programming C]]
*{{ref shellprog.zip}}