Skip to content

takeshiD/nihonsh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nihonsh

酔っ払ってても扱えるシェルを目指します。 勉強と拡張性のために、サードパーティのライブラリは使わず実装しています。 (例) GNU readlineなど 教育用資料として残したい思いもあり、段階的に実装をしています。

内容

キーワード: プロセスの複製, コマンド実行 システムコール: fork, wait, exec

キーワード: ファイルディスクリプタ, パイプ システムコール: read, write, pipe, dup

キーワード: プロセスIDとプロセスグループID, システムコール: getpid, getpgid, tcsetpgrp, sigaction

Stage4

行編集、タブ補完、履歴

Stage5

環境変数、変数展開、クオーティング

Stage6

manや--helpから補完を検出、パイプライン実行前に結果の可視化

メモ

  • シェルの概念とLinuxの関係
  • Linuxの基礎
    • システムコール
    • ファイルディスクリプタ
  • コマンド実行
  • パイプ
  • リダイレクト
  • 端末と行編集
    • 端末
    • 行編集の仕組みを作る
    • タブ補完
    • 履歴
  • 変数
    • 環境変数
    • 変数展開
  • 発展的内容
    • 自動サジェスト
    • man, helpから補完内容を自動推定
    • コマンド実行前に結果の推定と可視化

実装

制御演算子

内容 実装
&&
;
;;
&
NL

文法

pipeline := command | command ("|" | "|&") pipeline list :=

複合コマンド

コマンド 内容 実装
(list)
{list;}
((expression))
[[expression]]
for
select
case
if
while
until

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published