UNIXことはじめ
ことはじめ
2011/09/14
はじめに
QNX は UNIX 系の OS
→Windows Automotive とはお作法が違う。
→UNIX の基本思想理解で効率 UP!
基礎知識おさらい
UNIXって?
→OSの一種。例:Solaris、FreeBSD、Mac OS X
POSIXとは?
→APIの規格。
UNIXはこの規格に準拠したAPIを備えている。
おまけ:LinuxがUNIX「ライク」なOSと呼ばれる理由は?
→「UNIX」は商標。The Open Groupで認証通さないと、UNIX
とは名乗れない。
UNIXの基本思想

「シンプル」
単機能なプログラムを組み合わせる
複雑なMultics開発失敗→UNIXの開発へ
プログラム組み合わせの例
“hoge”という文字列を含むテキストファイルを探す。
→3つのプログラムを組み合わせる。
# find . -type f -name "*.txt" | xargs grep "hoge"

find:ファイル検索
xargs:標準入力からコマンド作成
grep:文字列検索
UNIXの重要な3つのキーワード

「ファイル」
「リダイレクト」
「パイプ」
※あくまで個人の視点
あくまで個人の視点
個人の
一つめ「ファイル」

何でも「ファイル」として抽象化
ファイルを扱うプログラムを作れば、様々な場面で流用できる

シリアルポート
HDD

→ /dev/ser0
→ /dev/hdd

※これらは「スペシャルファイル」や「デバイスファイル」と呼ばれます。
「リダイレクト」と「パイプ」の前に
標準入力(/dev/stdin)
標準出力(/dev/stdout)
標準エラー出力(/dev/stderr)

→キーボード
→画面
→画面
※やっぱりファイルです。

※組み込みだと基本はシリアルに設定されている?
二つめ「リダイレクト」
入力元、出力先を切り替える
プログラムのログをファイルに保存
# hoge > hoge.txt
エラーもファイルに保存したい場合はこんな感じ
# hoge > hoge.txt 2>&1
※標準エラー出力(2)を標準出力(1)と同じものにリダイレクトする

パッチを当てる
# patch < dir.diff
三つめ「パイプ」
コマンドの出力結果を別のコマンドの入力に
Cソースファイルの個数を数える
# ls -l | grep '¥.c$' | wc –l
「ls –l」 でファイル一覧表示
↓
「grep ‘¥.c$’」でCソースファイル名のみ表示
↓
「wc –l」で表示されたファイル名の行数をカウント
3つを組み合わせる
つを組み合わせる
Windowsでは面倒なHDDのイメージバックアップ
→標準的なコマンドの組み合わせで実現可能
HDDをバックアップ
# dd if=/dev/hdd | gzip -c > hdd.dump.gz
HDDをリストア
# gzip -dc < hdd.dump.gz | dd of=/dev/hdd
他に重要なキーワード
シンボリックリンク
→リンクの一種。Windowsのショートカットより高機能。
UNIXでは多用される。
環境変数
→各プログラムが参照する共通の変数。実行ファイルのパ
スや、共有ライブラリのパスなど。
ディレクトリ構成
マウント
シェル
マイクロカーネル
etc
おまけ:便利なコマンド(QNX向け)
向け)
おまけ:便利なコマンド(
use
コマンドの説明を表示
export
環境変数を表示、設定
ldd
実行ファイル、ライブラリの依存関係を表示
まとめ
OSは一つの文化
→OSごとに違いはある。日本とアメリカの文化が
違うのと同じ。
UNIXはシンプルなコマンドたくさん
→組み合わせて使いこなせば大幅に効率アップ。
お作法・思想
→OSに限らず、なぜこうなったのか背景を理解す
ると無駄を排除できる かも。
おわり

ご清聴ありがとうございました。

UNIXことはじめ