Linux勉強会(LinuxClub)
シェル周りの資料
- コラム【Linux道場 入門編】第9回 - シェルとコマンド実行
- bash 例解: 第1回 Bourneシェルの生まれ変わり(bash)による初歩のプログラミング
- 初心者が調べた。shellとは - Qiita
- Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して
- コマンドを組み合わせる「のり」としてのシェルスクリプト
-
システムコールとシェルスクリプトを利用して、Fortranのコードから「ディレクトリがなければ作る」を実行 - dynamicsoar's log
- 知ってトクするシステムコール(1):システムコールについてどれくらいご存じですか? (1/2) - @IT
- チュートリアル – システムコールの書き方 | プログラミング | POSTD
- execve - システムコールの説明 - Linux コマンド集 一覧表
- Man page of SYSTEM
- 芝浦工大
- 小俣光之:コンピューターのページ
- イントロダクションhttp://bacspot.dip.jp/virtual_link/www/si.musashi-tech.ac.jp/www/os_basis/top.html
- Linux におけるシェルの進化
昔のシェル達
- Bourne シェル(ボーノ)
- Tenex C シェル
- Korn シェル(コーン)
(Bourne シェルのソースコード) http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh
「linux 自作シェル システムコール」で検索したらいろいろ見つかった
シェルの実装
while(1){
gets();
// 空白区切りで分割
// arg配列に代入
// リダイレクトはfopen -> ストリームをwrite -> fclose
}
田胡先生のアドバイス
- シェルづくり
- 標準入力とは何か
- カーネルの外側
- man 2 システムコール
★ シェルの作り方 - システムコール - lsで何が起きているのかコードに落とす。
★疑問を書き留めて重要性を仕分けして。答える会。
★カーネルの内側 - ソースを読んで - カーネルのコードはそんなに大きくない - 例えばnet, kernel, arch, fsかnet
★mmu とカーネル - プロセス管理はハード寄り - プロセス切り替え(その仕組み)
★疑問やメモ - バイナリとは - ネットワークスタック
Linuxのシェルの機能
機能を洗い出してみる
- 標準入出力
- リダイレクト
- パイプ
- ファイルの実行(コマンド)
-
変数
-
★コマンドの解釈・実行(コマンドインタプリタ)
- コマンド履歴の記録(ヒストリ)
- コマンド入力・編集の支援
- ▲コマンド入出力のファイルへの切り替え(リダイレクション)
- コマンド入出力の連結(パイプライン/パイプ)
- メタキャラクタの解釈
- その他:環境の設定、ジョブ管理、コマンドファイル(シェルスクリプト)