はじめに
アプリケーションの開発を,エディターだけで完結することはできません.
最近ではVScodeをはじめとする多機能エディターが存在し,一部のツールはGUI上でも操作できるようになっています.
しかし,すべてのアプリケーションに対応しているわけではないので多少なりともシェルを使える必要はあると思います.
また,それらはあくまでもシェルで行っていた操作をGUI”でも”行えるようにしただけなので,シェルを学んでおいても損はないと思います.
(CLIが使えるとGUIでの操作はまだるっこしく感じることが多いです)
以下でターミナルとシェルの関係について説明しますが, はじめは同じものだと認識していても問題ありません.
## ターミナル,シェルとはターミナルとは?
ターミナルは,コンピュータとユーザーが文字(テキスト)ベースでやりとりをするためのアプリケーションです.
普段はアイコンやウィンドウで操作するGUI(グラフィカル・ユーザー・インターフェース)を使っている人も多いですが,ターミナルはキーボードからコマンドを直接入力してコンピュータを操作します.
例
- Windows:「コマンドプロンプト」や「PowerShell」,「Git Bash」
- Mac:「ターミナル」アプリ
- Linux:「gnome-terminal」や「konsole」など
シェルとは?
シェルは,ユーザーが入力したコマンドを解釈し,OSに伝えるプログラムです.
つまり,ターミナルの中で実際に「コマンドの受付・実行」を担当するのがシェルです.
よく使われるシェルの種類
- bash(Bourne Again SHell):多くのLinuxやMacで標準
- zsh:カスタマイズ性が高く,近年人気
- fish:わかりやすい構文や補完機能が特徴
ターミナルとシェルの関係
- ターミナル:入力と出力の「窓口」(画面やアプリ)
- シェル:コマンドの「中身」(実際の通訳・操作役)
例えば,Macの「ターミナル」アプリを開くと,その中でbashやzshなどのシェルが動いています.ユーザーはターミナルからコマンドを入力し,それをシェルが受け取って処理します.
はじめてにおすすめのシェル環境
Windowsユーザー向け(Git Bash, WSL など)
-
Git Bash
gitをインストールしたときに一緒についてきます.
はじめてのお試し程度におすすめです.
Windows上で,Bashの動作をエミュレート(模倣)します. -
WSL ( Windows Subsystem for Linux)
シェルだけでなく,Windows上にLinuxのOSを入れるようなものです.
アプリケーション開発とWindowsは相性が悪いことが多いので,ある程度慣れたら(なんなら最初から)WSLをインストールすることをお勧めします.
Mac/Linuxユーザー向け
「ターミナル」アプリを開くと,それぞれのデフォルトのシェルが実行されます.
4. 最初に覚えたい基本コマンド10選
ディレクトリ操作(cd, ls, pwd, mkdir)
cd
Change Directory
カレントディレクトリ(作業中のディレクトリ)を移動するためのコマンドです.
cd # ホームディレクトリへ移動
cd ディレクトリ名 # 指定したディレクトリへ移動
cd .. # 一つ上のディレクトリへ移動
ls
List
現在のディレクトリ内にあるファイルやディレクトリの一覧を表示します.
ls # 一覧表示
ls -l # 詳細情報付きで表示
ls -a # 隠しファイルも含めて表示
pwd
Print Working Directory
今いる(作業中の)ディレクトリのフルパスを表示します.
pwd # 現在のディレクトリのパスを表示
mkdir
Make Directory
新しくディレクトリ(フォルダ)を作成します.
mkdir 新しいディレクトリ名 # 新しいディレクトリを作成
- ファイル操作(cp, mv, rm, cat)
cp
Copy
ファイルやディレクトリをコピーします.
cp ファイル名 コピー先 # ファイルをコピー
cp -r ディレクトリ名 コピー先 # ディレクトリをコピー
mv
Move
ファイルやディレクトリの移動や,名前の変更をします.
mv ファイル名 移動先 # ファイルを移動
mv 古いファイル名 新しいファイル名 # ファイル名の変更
rm
Remove
ファイルやディレクトリを削除します.
※重要なデータを消さないよう注意しましょう.
rm ファイル名 # ファイルを削除
rm -r ディレクトリ名 # ディレクトリを再帰的に削除
rm -f ファイル名 # 確認なしで強制的に削除
cat
Concatenate
ファイルの中身を表示します.
cat ファイル名 # ファイルの内容を表示
おわりに
ここで紹介したものは,本当に基本的なファイルやディレクトリの操作に関するコマンドだけです.
実際に開発を進めるには,使いたいそれぞれの技術(docker, next, goなど)のコマンドも使えるようになる必要があります.
がんばってください!