「シェルプログラミング」の版間の差分
ナビゲーションに移動
検索に移動
(→基本) |
|||
(同じ利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
+ | | [[Programming C]] | [[Linux]] | [[Cygwin]] | [[Linux コマンド]] | | ||
==[[シェルプログラミング]]== | ==[[シェルプログラミング]]== | ||
− | |||
これらの本からの覚書。 | これらの本からの覚書。 | ||
17行目: | 17行目: | ||
*ツールをどんどん作る | *ツールをどんどん作る | ||
− | + | ==[[シェルプログラミング 基本|基本]]== | |
− | |||
*[[シェルプログラミング 基本]] | *[[シェルプログラミング 基本]] | ||
− | + | ===リダイレクトとパイプ=== | |
* < を使って標準入力を変更する | * < を使って標準入力を変更する | ||
* > を使って標準出力を変更する | * > を使って標準出力を変更する | ||
27行目: | 26行目: | ||
* | を使ってパイプラインを作る | * | を使ってパイプラインを作る | ||
− | + | ===特殊ファイル=== | |
− | + | ====/dev/null==== | |
*ビットバケツ(bit bucket) と呼ばれる | *ビットバケツ(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 矢木浩人