今回はファイルディスクリプタについてのメモです。
ファイルディスクリプタとはプロセスが対象のファイルへアクセスするときに使われている物で0番から9番まで番号が割り振られています。
・0番は標準入力、1番は標準出力、2番は標準エラーと指定されていますが他の番号は自由に使っても良いみたいです。
・"リダイレクション"とは端末上以外のところへ出力や入力の操作を行うこと。
・ファイルの標準出力の書き込みは">"で行うが正確には"1>"で標準出力の書き込み、"2>"で標準エラーの書き込みとなる。
・">>"で追加の書き込みがでる。
・標準入力は"<"もしくわ"0<"。
・"<<word"で標準入力をヒアドキュメントから読み込む。
・ヒアドキュメントはよくわからないが端末で入力を複数書くことができるような物っぽい。入力後"word"で終了。ただし"word"は例であり任意の単語を使える。
・">filename"で左の文字列をファイルに書き込み。
・">>filename"で左の文字列をファイルに追加書き込み。
・">&n"で左の文字列をn番目のファイルディスクリプタに書き込み。
・">>&n"で左の文字列をn番目のファイルディスクリプタに追加書き込み。
・">&-"で標準出力をクローズ。
・"<filename"で左の文字列をファイルから読み込み。
・"<&n"で左の文字列をn番目のファイルディスクリプタから読み込み。
・"<&-"で標準入力をクローズ。
・制御構造分では完全にクローズしたところでリダイレクトし、全体を1つのコマンドのように扱うため、すべてをひとまとめに渡される。
・execコマンドに引数を与えずリダイレクトすることで現行の処理にリダイレクト処理を行わせる。
・コマンドの入出力を捨てたいときは"/dev/null"(ゴミ箱)へリダイレクトすればよい。
・シェルスクリプトでは"vi"のヴィジュアル部分を省いたコマンドで"ed"や"ex"がある。
おまけ:PATH変数の設定
PATH=$PATH:/home/name/something/.....
export PATH
で追加できます。ただしCシェルではexportコマンドはつかえない、たしかsetenv。環境によりシェル立ち上げ時にPATHがリセットされることがあります。その場合は./bashrcのファイルへコマンドを書き込んでおけば毎度シェルの立ち上げ時にPATHを通してくれます。
参考資料:入門UNIXシェルプログラミング 改訂第2版 第4,5章(発行所:SBクリエーティブ株式会社)
シェルスクリプト その1
シェルスクリプト その2
シェルスクリプト その3
シェルスクリプト その5
シェルスクリプト その6
シェルスクリプト その7