Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう
Highest Rated
Rating: 4.6 out of 5(90 ratings)
1,322 students

自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう

コマンドを実行する「シェル」を自作しながら、Linux のしくみや OS に近い領域のプログラミングを学ぼう!「シェルって何?コマンドの実行って何?標準入出力って何?ターミナルって何?」といった疑問をシェルの実装レベルで解消しよう!
Last updated 12/2023
Japanese

What you'll learn

  • シェルとカーネルの関係
  • シェルによるコマンドの実行の基本
  • シグナルとシグナルハンドリングの基本
  • Linux におけるシェルスクリプトの実行
  • 標準入出力のしくみ
  • リダイレクト・パイプのしくみと実装方法
  • シェルとターミナルエミュレータ、疑似端末の関係
  • 基本的なシステムコール(fork/execve/open/close/read/writeなど)

Course content

9 sections48 lectures3h 3m total length
  • このコースについて6:16

    このコースの概要や学習すること、対象者や前提知識を確認します。

  • 受講ガイド1:51

    このコースを受講するときの進め方について説明します。

Requirements

  • 「変数・if・for・関数」程度の Python の基礎知識がある
  • 絶対パス・相対パス程度のコンピュータの基礎知識がある
  • Linux にふれたことがあり、ターミナルで ls、cd などの基本的なコマンド操作を実行できる
  • Vim や nano など、ターミナルで使用可能なエディタを使うことができる
  • プログラミングに使用可能な PC を所有している
  • PC に Docker と Visual Studio Code をインストールしてある
  • 学習に使える AWS アカウントがある(AWS アカウントは、一部のセクションで AWS のサーバを使用するために必要です。AWS アカウントがない場合、そのセクションのハンズオンをスキップしても以後の学習には影響ありません)

Description

IT エンジニアとして活動していると、何かの機会に Bash や Zsh といった「シェル」にふれるはずです。


「シェル」についてはよく「カーネル」を囲む図で説明されたりしますが、それ以上はよく知らないという方も多いのではないでしょうか?

そもそも「カーネル」についても「OSのコア」ぐらいの簡単な説明が多く、結局何なのかよく分からないという方は少なくないと思います。


さて、「シェル」で行うことといえば「コマンドの実行」ですが、そもそも「コマンドの実行」とは何なのでしょうか?

他には、「何かをインストールする」というのもよく分からない、何か理解の及ばない変化がコンピュータに起こるもの、と思っている方も少なくないと思います。


そこでこの講座では...

「シェル」を自作しながら、Linux のしくみや OS に近い領域のプログラミングを学んでいきます。

「シェルってなに?コマンドの実行ってなに?」といった疑問を解消していきます。


コースで自作するシェルには、次のような機能を実装します。

  • インタラクティブにコマンドを実行できる

  • Linux サーバで使うことができる

  • シェルスクリプトも実行できる

  • リダイレクトとパイプをサポートしている


これらの機能をどのように実装するのか丁寧に説明したうえで、実際に実装して動かしてみます。


■使用するプログラミング言語


シェルのような OS に近い領域のプログラムの実装には、C や Go、Rust といったプログラミング言語が使われることが多いです。

しかし、これらの言語よりも少ない前提知識で挑戦できるよう、このコースでは「Python」を使ってシェルを実装します。


最終的に完成する自作シェルは Python で 150 行程度ですが、この小さなコードから多くのことを学ぶことができます。


■このコースで学ぶこと・学ばないこと


シェルの自作は、大きく 2 つの知識から成り立ちます


1.「Linux システムプログラミング」(OS に近い領域のプログラミングの知識)

2.「インタプリタの作り方」(プログラミング言語の解析・実行の知識)


このコースで学ぶのは「Linux システムプログラミング」の知識です。

このコースでは「インタプリタの作り方」は扱いません。

※ 実装するシェルも、あくまで学習目的の簡易的なものです


Who this course is for:

  • Linux に入門して基本的なコマンドを身につけたが、もっと詳しくしくみを理解したい方
  • Linux における「シェル」や「コマンドの実行」「標準入出力」などのしくみを、シェルの実装のレベルで知りたい方
  • OS に近い領域のプログラミングに興味がある方
  • プログラムをすらすら実装できるようになってきて、少し発展的な題材の実装に挑戦してみたい方