ターミナルとシェル入門
PC/OSについて
プログラミングでは主にパソコンを利用して行いますが、今回のアンケートではOSについての質問がありました。 OSは、Operating Systemの略です。
私達のコンピュータには、大抵の場合1つ以上のOSが搭載されていて、 OSの上でブラウザなどのアプリケーションが動作しています。
代表的なOSとして、次のようなものが存在します。
Windows
macOS
Linux
プログラミングに最適なOSは?
なんらかのプログラミング言語で「本格的に」Webアプリケーションなどのプログラミングにチャレンジする方は、かつては「Windows以外」のOSを利用することを推奨されていました。
https://github.com/perl-entrance-org/workshop-2020/blob/master/1st/part1.md
これは、以下の理由からでした。
- Windows特有のトラブルが多いこと
- プログラミング言語自体はmacOSやLinuxなどのUNIXと呼ばれる環境に最適化されている
- Windows向けのC#, F#などの言語もあるにはある
これはPerlやJavaScriptの実行環境であるNode.jsなどでも同様の問題がありました。 ....が、近年はWSL2というWindowsでLinuxを動かす環境が開発されたため、2025年現在ではWindows10以降のPCであれば比較的どのOSでもプログラミングが出来る。という状態になっています。
しかしプログラミングはそこそこにマシンスペックを要求するので、メモリ16GBほどある環境が良いでしょう。
Linuxか? macOSか?
Linuxの利点は、基本的に無料で使えるという点です。
先進的な要素が多いUbuntu、自分でOSを組み立てていく楽しみがあるArchLinuxなど、多くの種類(ディストリビューション)が存在します。
また、ネットワーク上で様々なサービスを提供する「サーバー」のOSとして高いシェアがあります。
一方、macOSはMacBook AirやMacBook ProなどApple製のPCに搭載されています。
macOSの基礎になっているのはLinuxの前身であるUNIXというOSです。
LinuxとmacOSは、同じ血統を継ぐOSであると言えます。
プログラミング入学式では...
Linuxユーザ・macOSユーザの方は...
特に問題が無い限り、既にお手持ちのPC/環境を利用して頂きます。
Windowsユーザーの方は...
Windowsユーザーの方は、Windows上に直接プログラミング環境を構築すると上記の沼にハマる可能性があるので、WSL2を利用したLinux環境を構築してから、というのをオススメしています。 とはいえ今回の範囲はWSL2がいらないかも、という感じがしますので、エディタのみいれればOKです。
CUI(CLI)
macOSもLinuxも、Windowsと同じくGUIで操作可能です。
ですが、プログラミングをする上でCUI (CLI) は避けられません。
- CUI ... Character User Interface
- CLI ... Command Line Interface
これらは文字によって操作を行うインターフェイスのことを指します。
- Windowsならば、コマンドプロンプトに該当します。
- Linux/macOSではターミナルに該当します。
ただしWindowsのコマンドプロンプトやPowerShellとLinux/macOSが使っているsh系のシェルは大幅に使えるコマンドが異なります。 今回はWindowsの方もWSL2やmsys2経由でsh系のシェルを使うものとしますので、以降はWindowsではそのまま使えないコマンドが中心となります。
CUI(CLI)
実際にCUI(CLI)を操作して体験してみましょう。
ターミナルとシェル
プログラムの起動や制御をCUI(CLI)で行うプログラムのことを、シェルと呼びます。
ターミナルを開くと、シェルを使った操作が出来るようになります。
ターミナルの開き方(macOS)
Launchpadなどから「ターミナル」を選択し、起動します。
ターミナルは頻繁に起動するため、Dockへ追加しておくことをおすすめします。
△ターミナルのアイコン
シェルで使えるコマンド集
Perl入学式の中でもよく使うコマンドを紹介します。
シェルには、これから紹介する以外にも様々なコマンドがあります。
OSやシェルの種類によって使えるもの、使えないものがありますが、使いこなせば作業の負担を軽減することができます。
参考図書:まんがでわかるLinux シス管系女子
プロンプト
ターミナルでは入力待ちの時にプロンプトが表示されます。
zsh, macOS Catalina(10.15)
%
Bash, MSYS32, macOS Mojave(10.14)以前の標準, Linux
$
これら行頭に表示される記号は「入力受付の状態」を示すものです。この記号は入力する必要はありません。
また、プロンプトはカスタマイズも可能です。興味がある人はGoogleで「プロンプト カスタマイズ」等で検索してみましょう。
コマンド集(ls)
[両ユーザ向け]
$ ls
デスクトップ ダウンロード (以下略)
ls
は、現在いるディレクトリにあるファイルを表示します。
コマンド名は'list segments'の頭文字を取ったものです。
ls -a
は、.
(ドット)で始まる、通常は見えない隠しファイルも含め、すべて表示します。
このように、コマンドに追加の命令をつけて動作を変えることができます。
これを引数といいます。
コマンド集(pwd)
[両ユーザ向け]
$ pwd
/home/username
pwd
は、現在いるディレクトリの場所(パス)を表示します。
コマンド名は'print working directory'の頭文字を取ったものです。
コマンド集(mkdir)
[両ユーザ向け]
$ mkdir sample
$ ls
sample デスクトップ ダウンロード (以下略)
mkdir DIRECTORY
は、DIRECTORY
というディレクトリを作ります。
コマンド名は'make directory'を短縮したものです。
コマンド集(cd)
[両ユーザ向け]
$ cd sample
$ pwd
/home/username/sample
$ cd ..
$ pwd
/home/username
cd DIRECTORY
で、DIRECTORY
に移動します。
コマンド名は'change directory'を短縮したものです。
上の階層のディレクトリは..
で表示されます。
コマンド集(touch)
[両ユーザ向け]
$ touch sample1 sample2
$ ls
sample1 sample2
touch
には2つの役割があります。touch FILENAME
とした時・・・
- FILENAME がすでに存在する場合には、ファイルのアクセス日時と更新日時を現時刻に書き換える
- FILENAME が存在しない場合には、空のファイルを生成する
コマンド集(rm)
[両ユーザ向け]
$ ls
sample1 sample2
$ rm sample1
$ ls
sample2
rm [OPTION] FILENAME
は、FILENAME
のファイルを削除します。FILENAME1 FILENAME2
のように半角スペースで区切ることで複数個指定することができます。
コマンド名は'remove'を短縮したものです。
コマンド集(rmdir)
[両ユーザ向け]
$ mkdir del_sample
$ ls
del_sample
$ rmdir del_sample
$ ls
$
rmdir DIRNAME
は、DIRNAME
のディレクトリを削除します。ただしディレクトリは空である必要があります。
コマンド名は'remove directory'を短縮したものです。
ディレクトリの中身ごとを削除するときは、先に紹介したrm -r DIRNAME
で削除します。
-r
という引数はrecursive(再帰的)を意味しています。
コマンド集(cp)
[両ユーザ向け]
$ ls
sample2
$ cp sample2 sample1
$ ls
sample1 sample2
cp [OPTION] SOURCE DEST
は、SOURCE
をDEST
にコピーします。
コマンド名は'copy'を短縮したものです。
ディレクトリをコピーするときは、[OPTION]
として-r
を指定し、cp -r SOURCE DEST
でコピーしなければなりません。
コマンド集(mv)
[両ユーザ向け]
$ ls
sample1 sample2
$ mv sample1 sample_text
$ ls
sample_text sample2
mv [OPTION] SOURCE DEST
で、SOURCE
をDEST
に移動します。
コマンド名は'move'を短縮したものです。
ファイルやディレクトリの名前を変更する為にも使えます。
コマンド集(start)
[Windowsユーザ向け]
$ explorer.exe .
explorer.exe [DIRECTORY]
で、DIRECTORY
をExplorerというファイルマネージャで開きます。
explorer.exe
は対象となるファイルの種類によって動作が変わります。
例えばディレクトリが対象ならば上記のようにExplorerで表示、テキストならばテキストエディタで表示... という動作をします。
コマンド集(open)
[macOSユーザ向け]
$ open .
open [DIRECTORY]
で、DIRECTORY
をFinderというファイルマネージャで開きます。
open
は対象となるファイルの種類によって動作が変わります。
例えばディレクトリが対象ならば上記のようにFinderで表示、テキストならばテキストエディタで表示... という動作をします。
練習問題
ホームディレクトリに
yamanashi-programming
というディレクトリを作りましょう。ホームディレクトリとは、ユーザごとに用意された作業場所のようなものです。
cd
とだけ入力してエンターキーを押すと、ホームディレクトリに移動します。作った
yamanashi-progreamming
ディレクトリの中に移動しましょう。カレントディレクトリのパスを
pwd
で表示し、その後に、explorer.exe
もしくはopen
を使って、ファイルマネージャで開いてみましょう。現在いるディレクトリをカレントディレクトリと言います。
エディタ入門
エディタ
コードを書く時に最も使う道具、それがエディタです。
プログラミングに特化した様々なエディタが開発されていますが、Perl入学式ではその中でもVisual Studio Codeを紹介します。
特にこだわりのない方は、今回紹介するVisual Studio Codeを試してみましょう。
もちろん、EmacsやVim、サクラエディタなど、既に使い慣れているエディタがある方はそちらをお使いください。
Visual Studio Code
Visual Studio Code - Code Editing. Redefinedへアクセスし、「Download」をクリックします。
Visual Studio Code
Windows
ダウンロードしたVSCodeUserSetup-**.exe
をダブルクリックすると、インストールが開始されます。
**
としたところにはバージョン番号が入ります。
インストール後は、スタートメニューから「Visual Studio Code」をダブルクリックすればVisual Studio Codeが起動します。
インストール直後は自動的に起動します。
Visual Studio Code
macOS
ダウンロードしたVSCode-darwin-stable.zip
をダブルクリックすると、Visual Studio Code.app
が生成されます。
これをダブルクリックすればVisual Studio Codeが起動します。
「"Visual Studio Code.app"はインターネットからダウンロードされたアプリケーションです」という警告が出た場合、「開く」をクリックします。
Visual Studio Code
日本語化
メニューが英語でとっつきにくい場合には、日本語化することが可能です。
ウィンドウ左上の View -> Command Palette から
Configure Display Language
と入力して候補を選択する。Install Addicional Languages を選択する。
左側のメニューから「日本語」を選択し、緑色の「Install」ボタンを押す。
一度Visual Studio Codeを閉じて、再度起動する。
英語表記に戻す場合には、1. から en を選択することで英語メニューになります。
WSL2の設定
WindowsでWSL2を使っている場合、Visual Studio CodeをWSL2の環境で使うことができます。
- Visual Studio Codeを起動し、左側のメニューから拡張機能(Extensions)を選択します。
- 検索バーに「Remote - WSL」と入力し、拡張機能をインストールします。
- インストール後、左下の緑色のアイコンをクリックし、「Remote-WSL: New Window」を選択します。
- これでWSL2の環境でVisual Studio Codeが起動します。
Visual Studio Code
ファイルを開く
- 左上メニューの ファイル -> (Windows版)ファイルを開く(macOS)開く
ファイルを保存する
- 左上メニューの ファイル -> 保存
練習問題
yamanashi-programming
ディレクトリ内にprofile.txt
という空のファイルを用意して、Visual Studio Codeで編集します。ファイルの中には、「使用したコマンド1つとその説明」、「今使用しているOS」、「使用しているエディタ」を書いて保存します。
ターミナルを使って、
profile.txt
をprofile2.txt
という名前でコピーしましょう。コピー元の
profile.txt
をターミナルから削除しましょう。コピーした
profile2.txt
をターミナルからprofile.txt
という名前に変更しましょう。
次のページに練習問題のヒントを載せます。
練習問題のヒント
「エディタで保存したファイルがターミナルから見つからない!」という場合、pwd
コマンドで現在いるディレクトリを確認してみましょう。
大抵の場合、エディタがファイルを保存した保存先とは違うディレクトリにいます。cd
コマンドで移動しましょう。
ファイル名の変更は、ファイルの移動と同じmv
コマンドで可能です。