Skip to content

MS_Shell

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

シェル

概要

シェルとは対話型でOSをControl可能なUIのことである。

詳細

インタラクティブ・シェルのUI

インタラクティブ・シェルのUIには、CUI型のものとGUI型のものがある。

CUI

GUI

  • OSと人間のUIがGUI = GUIシェル
  • Windowsでは、
    • Windows shell(MS_WindowsShell.md
    • Windows Explorer(MS_WindowsExplorer.md

シェル・スクリプト

  • シェルのプログラミング言語をシェル・スクリプト
  • シェル・スクリプトによるプログラミングをシェル・スクリプティング

と呼ぶ。

シェル言語のタイプ

シェルで使用される言語には以下の様なタイプがある。

  • テキストベースのシェル言語
  • オブジェクトベースのシェル言語

※ リダイレクションとパイプがテキストか?オブジェクトか?(→ 詳細

シェル・スクリプティングとは?

シェル言語やスクリプト言語を使用した、シェル向けのスクリプティング。

  • CMD や PowerShell は、インタラクティブ・シェルとシェル・スクリプティングの機能も持つ。
  • 一方で、WSH(MS_WSH.md)(の標準言語である VBS(MS_VBS.md))などは、スクリプティングの機能しか持たない。

インタラクティブ・シェルとシェル・スクリプトの違い

  • インタラクティブ・シェル — 対話的に実行可能
  • シェル・スクリプト — スクリプト化して対話的にバッチ実行。

Windowsシェル

インタラクティブ・シェルのUI

GUIシェル

現代の Microsoft Windows はシェルとして Windows shell を使用している。

CUIシェル

CUIシェルには、以下のものがある。

移行メモ(誤記): 原文の「4DOSMS」は、 Wikipedia の当該項目に照らして「4DOS」の誤記と解して整えた。

シェル・スクリプト

CUIシェルを持つスクリプト言語

  • テキストベースのシェル言語、オブジェクトベースのシェル言語がある。
  • 変数に文字列 "*.exe" を代入して、
    変数に入れた文字列(というか文字列しか入らない)を「使う」と、
    あたかもコマンドを手打ちしたようにそのまま動いてしまう。
  • CUIシェルの仕様は、プログラミング言語的には、違和感があるが、
    これがCUIシェルの特性であると割り切ると理解しやすい。

CUIシェルを持たないスクリプト言語

  • CUIシェルを持たないスクリプト言語では、

    • VBS:WScript.Shell オブジェクト
    • .NET:Process オブジェクト
    • Perl:system 関数か、exec 関数
    • Python:subprocess モジュール

    を使わないとEXE起動できない。

  • また、起動したEXEとは、標準入出力で明示的に通信する必要がある。

Notebook系はインタラクティブ

Notebook系(MS_AzureDatabricksNotebook.md)では、CUIシェルを持たないスクリプト言語(代表的なものはPython)でも、インタラクティブに実行可能。

UNIX / Linuxのシェル

インタラクティブ・シェルのUI

GUIシェル

Linuxのデスクトップ環境

CUIシェル

Windowsの様に特別、名称は付与されていない
(ソフトウェアが複数存在したりしない)。

  • シェルの外枠
    • コンソール
      • 昔のハードの延長上で使われる言葉
      • 物理的なハードウェア直でホストを触るケース
    • ターミナル
      • TSS でネットワーク経由でホストを触るケース
      • リモート・シェルの SSH(プロトコル)が代表的な手段

シェル・スクリプト

CUIシェルを持つスクリプト言語

  • B系
    • Bash(Bourne-Again Shell)(MS_Bash.md
    • sh(Bourne Shell)
    • ksh(Korn Shell)
  • C系
    • csh
    • tcsh

CUIシェルを持たないスクリプト言語

Perl、Python などの単なるスクリプト言語をシェル用に使うケース

その他、様々なシェル

ターミナル・アプリ

ターミナルとはシェルの外枠を意味する。

Windowsのターミナル

※ Windows 11 では Windows Terminal が既定のターミナルになり、 cmd.exe / powershell.exe はその中のプロファイルとして動く。 ターミナル(外枠)とシェル(中身)の分離が Windows でも明確になった。

エミュレータ・シェルの類

  • エミュレータ機能部分がシェルの外枠となるケース。
  • 「Linuxサブシステム」(特にWSLなど)が参考になる。(MS_LinuxSubsystem.md

リモート・シェルの類

リモート機能部分がシェルの外枠。

リモート・シェル

Windows

RDP(MS_RDP.md)、WinRM

※ 現在は OpenSSH サーバーが Windows の機能として同梱され、 PowerShell Remoting も SSH をトランスポートに使える。

Linux

  • SSH(MS_SSH.md)のソフトウェアである OpenSSH、Tera Term、KiTTY(PuTTY)
  • かつては、Telnetやrsh(remote shell)、rloginといった
    プロトコル(ソフトウェア)も使用されていたらしい。

※ 其々のプロトコルやソフトウェアのスタックがどうなっているか?は未調査

Azureのシェル

MS_AzureShell.md

  • Azure PowerShell(MS_AzurePowerShell.md
  • Azure Cloud Shell(MS_AzureCloudShell.md
  • Azure CLI(MS_AzureCLI.md

参考

UI (CUI)

UI (GUI)

  • Windows shell(MS_WindowsShell.md
  • Windows Explorer(MS_WindowsExplorer.md
  • 自作CUI(CLI)の話(MS_BuildingYourOwnCLI.md

体で覚えるLinuxの基本

  • 再入門 体で覚えるLinuxの基本 - ITpro
    • シェルの基本操作法(前編):シェルの役割と種類 / 使い方 / オンライン・マニュアル / リダイレクションとパイプ
    • シェルの基本操作法(後編):エイリアスとヒストリ / 名前の補完とプロセスの実行 / シェル変数と環境変数 / 設定ファイル / プロンプト文字列
    • シェル・スクリプト:シェル・スクリプトとは / プログラミング / 基本文法 / 引数 / 引数の高度な利用法
    • システム管理に役立つコマンド:uname, hostname, uptime / ps, date, whoami, last

Tags: シェル, インフラストラクチャ, Windows

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally