酔っ払ってても扱えるシェルを目指します。 勉強と拡張性のために、サードパーティのライブラリは使わず実装しています。 (例) GNU readlineなど 教育用資料として残したい思いもあり、段階的に実装をしています。
キーワード: プロセスの複製, コマンド実行 システムコール: fork, wait, exec
キーワード: ファイルディスクリプタ, パイプ システムコール: read, write, pipe, dup
キーワード: プロセスIDとプロセスグループID, システムコール: getpid, getpgid, tcsetpgrp, sigaction
行編集、タブ補完、履歴
環境変数、変数展開、クオーティング
manや--help
から補完を検出、パイプライン実行前に結果の可視化
- シェルの概念とLinuxの関係
- Linuxの基礎
- システムコール
- ファイルディスクリプタ
- コマンド実行
- パイプ
- リダイレクト
- 端末と行編集
- 端末
- 行編集の仕組みを作る
- タブ補完
- 履歴
- 変数
- 環境変数
- 変数展開
- 発展的内容
- 自動サジェスト
- man, helpから補完内容を自動推定
- コマンド実行前に結果の推定と可視化
内容 | 実装 |
---|---|
&& | |
; | |
;; | |
& | |
NL |
pipeline := command | command ("|" | "|&") pipeline list :=
コマンド | 内容 | 実装 |
---|---|---|
(list) | ||
{list;} | ||
((expression)) | ||
[[expression]] | ||
for | ||
select | ||
case | ||
if | ||
while | ||
until |