🍊

Web開発者ロードマップを学習する 第2章 ターミナル〜基本操作〜

2021/02/07に公開

はじめに

WEB DEVELOPER Roadmap 2021
webエンジニアが身につけておくべきスキルの順序が示されています。
このロードマップに沿って、各スキルの要点を抑えた記事を書きます。

WEB DEVELOPER Roadmap 2021 Introduction

今回はターミナル操作について学習します。
まとめた記事は今後リンク更新していきます!

UNIXとは

  • 最も古いOS(オペレーションシステム)
  • インターネットを構成するサーバー向けOS
  • 一時期無料のOSS(オープンソフトウェア)として配布
  • POSIX規格で基本的なコマンドは統一されている
  • CUIで操作する
  • macOSの元

※OSとは
例 Windows , macOS , iOS , Linux

※OSSとは
ソースコードが無償で配布されているOSSの定義に準拠されたソフトウェアです

CUI(キャラクターユーザーインターフェイス) または
 CLI(コマンドラインインターフェイス): キーボードのみで操作すること。

GUI(グラフィカルユーザーインターフェイス): 画面上で操作すること。画面クリックなど

POSIX(ポジックス)とは

  • OSがUNIX系と名乗るために、そのOSが満たすべき規格
  • UNIX系のOSはいくつもある、だが本質的には異なるもの
  • UNIX系のOSで互換性を保つために定められた
  • OSによってアプリケーションが動作しないことを防ぐため
  • ANSI(アメリカ規格協会)やISOで標準規格

プロンプト

macの方はcommnd⌘ + スペースキーでターミナルと検索すると出てきます。
モザイクが入ってますが、左側の文字列がプロンプトです。

• デフォルトでは、左からログインユーザー名、コンピューター名、現在の位置が表示されている
• $マークは一般ユーザーのことを指す

※UNIX系のユーザーはスーパーユーザー一般ユーザーに分けられます。
 システム管理に関わることはスーパーユーザーだけが持ちます。
 スーパーユーザーは権限が強いため必要な時にしか使用しません。

ターミナル表示を設定してみたい方は参考にしてみてください。
お前らのターミナルはダサい
【Mac】ターミナル、シェル環境の初期設定

ディレクトリの構成

GUIではフォルダと言われていますが、CUIではディレクトリといいます。
CUIでディレクトリの表現の仕方は、絶対パスと相対パス2つの方法があります。

ディレクトリ 説明
/root(/) 最上層のディレクトリ  /(スラッシュ)で表現される
/bin コマンド実行ファイル
/dev デバイス用ファイル
/etc 各種設定ファイル
/home(~) 一般ユーザーが使う場所 自由にディレクトリ•
ファイルの作成保存ができる ~(チルダ)と表現されることもある
/sbin 管理者用のコマンド実行ファイル
/tmp 一時ファイル用
/var アプリケーションのデータファイル等

絶対パス

• 上層から順を追って表示
/homeディレクトリ配下にsampleディレクトリがある時、

sampleディレクトリの位置
/home/sample

相対パス

• 現在のディレクトリの位置は .(ドット)で表す
• 現在のディレクトリからみて親ディレクトリは .. で表す

Linuxコマンドをお試しする環境を作る

Vagrant(VirtualBox)やDockerを利用すると簡単にLinux環境を用意できます。

$ vagrant init ubuntu/focal64
$ vagrant up
$ vagrant ssh
$ docker run -it ubuntu:focal bash

環境構築のやり方は以下の記事を参考にしてみてください!
【ペチオブ】仮想環境ハンズオン 第2回 VirtualBox編

〜基本的なコマンド〜

cd

指定したディレクトリに移動

$ cd ディレクトリ名

/home配下にsampleディレクトリがある時、

sapmleディレクトリに移動
$ cd sample

親の/homeに戻る
$ cd ..

pwd

現在の位置を表示

$ pwd
sampleディレクトリに移動
$ cd sample

現在の位置表示
$ pwd
sample

history

キーボードの上下キーでコマンド履歴を辿れる

ls

ファイル一覧表示

$ ls [オプション] ファイル/ディレクトリ
オプション オプション説明
-l Long形式で表示
-a 隠しファイルもすべて表示

man

• コマンドのマニュアル表示
• コマンドの正式名称
• コマンドのオプション
• コマンド説明
などが記述されています。

$ man [コマンド名] 

ワイルドカード

• 不特定の文字列を表現するのに利用される記号

オプション オプション説明
* 0文字以上の任意の文字
? 任意の一文字
[] 指定した文字の中の1文字
{,} 指定した文字列の中のいずれか
「s」が含まれるtxtファイルを表示
$ ls [s]*.txt
sample.txt single.txt

任意の3文字の拡張子を表示させる
$ ls *.???
aaa.txt bbb.xml ccc.php

touch

• ファイルの最終更新日を変更できる
• 指定したファイルがなければ、空のファイルを作成

$ touch [オプション] ファイル名
オプション オプション説明
-t 更新時刻指定 [[cc]yy]MMDDhhmm[.SS]形式

cp

• ファイルのコピー

$ cp [オプション] コピー元 コピー先
オプション オプション説明
-i 処理の確認
-r ディレクトリ、ディレクトリの中身すべてコピー
-p コピー元のファイル情報をコピー先に保存

mv

• ファイルの移動
• ディレクトリも指定可能

$ mv [オプション] 移動先のファイル名 移動先のファイル名
オプション オプション説明
-i 処理の確認
-f 強制的にファイルを移動

rm

• ファイル削除
• オプションでディレクトリも削除できる

$ rm [オプション] ファイル名
オプション オプション説明
-i 処理の確認
-f 強制的にファイル削除
-r 指定したディレクトリとディレクトリの中身すべて削除

mkdir

ディレクトリを作成

$ mkdir [オプション] ディレクトリ名
オプション オプション説明
なし 指定したディレクトリを作成
-p 指定した上位のディレクトリも作成

rmdir

ディレクトリを削除
※中身が空のディレクトリのみ削除できる

$ rmdir ディレクトリ名
オプション オプション説明
なし 最上層のディレクトリを削除
-p 指定した階層すべてのディレクトリを一括削除

cat

• ファイルの内容を表示
• 25行目以降は表示されない可能性がある

$ cat ファイル名
$ cat sample.txt
aaaaaaaa
bbbbbbbbb
ccccccccc
ddddddddd
eeeeeeee
   :
オプション オプション説明
-n 行番号を追加表示

#ページャー

• ファイルの内容の行数が多くても、ページごとに分けて表示させる
• コマンド操作でページを切り替える
• moreかlessを使う

more

$ more ファイル名

moreの切替コマンド

コマンド 説明
スペース 次のページに進む
一画面戻る
一画面進む
q 終了

less

$ less ファイル名

lessの切替コマンド

コマンド 説明
次の行に進む
前の行に戻る
スペース 次のページに進む
一画面戻る
一画面進む
q 終了
他にもlessコマンドは沢山あるので参考にしてみてください。
lessコマンド(よく使いそうなものだけ版)

wc

ファイルの文字数、行数、単語数を表示

$ wc [オプション] ファイル名
オプション オプション説明
-c バイトを表示
-l 行数を表示
-m 文字数を表示
-w 単語数を表示

ファイルの先頭を表示

$ head [オプション] ファイル名

| オプション | オプション説明 |
| ---- | ---- | ---- |
| なし | 先頭から10行表示 |
| -n | 先頭から指定した行を表示 |
| -c | 先頭から指定した行バイトを表示 |
| -f | リアルタイムでログが見れる |

tail

ファイルの末尾を表示

$ tail [オプション] ファイル名

| オプション | オプション説明 |
| ---- | ---- | ---- |
| なし | 末尾から10行表示 |
| -n | 末尾から指定した行を表示 |
| -c | 末尾から指定した行バイトを表示 |
| -f | リアルタイムでログが見れる |

grep

文字列の検索を行う

$ grep [オプション] 検索条件 ファイル名
sample.txtの中身
$ cat sample.txt
red
green
blue
black

sample.txtファイルの中の、greenのみテキストを表示
$ grep green sample.txt
green
オプション オプション説明
-e 文字列を検索
-i 英文字、小文字の区別なし
-v 検索した文字とマッチしない行を選択

研修でgrepコマンドを使ってみました

find

• ファイルやディレクトリが存在するか検索
• パスの配下にあるファイル/ディレクトリを検索

$ find [パス] -name ファイルorディレクトリ
sampleディレクトリの中のsample.txtを検索、存在すれば表示される
$ find sample/sample.txt
sample/sample.txt

存在しない場合以下が表示される
find: sample/sample.txt: No such file or directory

もっと知りたい方はこちらを参考にしてみてください。
Linuxコマンド「find」とオプションの使い方(ファイルやディレクトリ・フォルダを検索する)

which

• コマンドのパスを表示
※PATH環境変数の配下にコマンドがないと表示されない

$ which コマンド名
$ whitch git
/usr/bin/git

リダイレクト

• 処理結果をファイルに書き込む
• > を使って表す
• >> で追記して書き込めます

$ コマンド処理 > ファイル名

パイプ

• |(パイプ)を使って記述
• |(パイプ)の左側の処理結果が右側に渡ってくる

$ コマンドA | コマンドB

&&(アンド、論理積)

• &&を使って記述 
• &&の左側の処理が成功した時、右側の処理をする
• 左側の処理が失敗した場合、右側の処理は実行されない

$ コマンドA && コマンドB
sampleディレクトリに移動後ファイル一覧表示
$ cd sample && ls
sample.txt

sampleディレクトリがなかった場合の表示 lsの処理は実行されない
cd: no such file or directory: sample

;(セミコロン)

• 左側の処理が失敗しても右側の処理が実行される
• 異なった処理を1行にまとめる時に使用

$ コマンドA; コマンドB

\ (バックスラッシュ)

• 改行ができる
• コマンドの処理が一気にできる
• 改行で複数のコマンド処理がみやすくなる

$ コマンド \
コマンドを出力 echo ABCD efgh 1234 56789 と同じ処理
$ echo \
"ABCD" \
"efgh" \
"1234" \
"56789"

ABCD efgh 1234 56789

ブレース

• {}(ブレース)の中を展開出力する

$ コマンド {}
$ echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

A,B,C これらのディレクトリを一気に作成
$ mkdir {A,B,C}
$ ls 
A  B  C

コマンド実行例→Mac ターミナルの基本的な使い方・操作方法(1)

#アクセス権

• UNIX系OSは複数のユーザーで使用できるように設計してある
• 複数のユーザー → 「グループ」 として扱う
• ユーザーは必ずグループに所属している

ファイルのアクセス権
→ 新たにファイル作成を行うと、ファイルの所有権は作成したユーザー、
  所有グループは作成したユーザーが所属しているグループになる

所有ユーザー
→ ファイルの所有者

所有グループ
→ ユーザーは各所属している所有グループの権限が与えられる
特定のグループのみ使用できる権限を設定する時などに使われる

chown

• 所有ユーザー(ファイルの所有者)変更
• 所有グループ変更

所有ユーザー変更
$ chown [オプション] 所有ユーザー名 ファイル/ディレクトリ
所有グループ変更
$ chown [オプション] :所有グループ名 ファイル/ディレクトリファイル/ディレクトリ
所有ユーザーとグループ変更
$ chown [オプション] 所有ユーザー名:所有グループ名 ファイル/ディレクトリ
オプション オプション説明
-R 指定したディレクトリ内のファイルやディレクトリに対して、
一つ一つたどって処理をする

chmod

• ファイルのアクセス権変更
• ファイルの所有者かスーパーユーザーだけが実行できる

$ chomod [オプション] パーミッション ファイル/ディレクトリ
オプション オプション説明
-R 指定したディレクトリ内のファイルやディレクトリに対して、
一つ一つたどって処理をする

パーミッション

記号 数字 説明
r 4 読み書き権限
w 2 書き込み権限
1 実行権限

アクセス権の対象

記号 説明
u 所有ユーザー
g 所有グループ
その他
a すべて

アクセス権、パーミッション、chown、chmodあたりの詳しい解説はこちらを参考にしてみてください。
chmod? chown? よくわからんって人のための、ファイル権限系まとめ

sudo

• root権限(スーパーユーザー)でコマンド実行

$ sudo コマンド名
オプション オプション説明
なし root権限(スーパーユーザー)でコマンド実行
-u 指定したユーザーでコマンド実行

vi(vim)

• ファイルのテキスト編集ができる
• CUIで使用されるテキスト編集ソフト
• コマンドモードでコマンドを入力
• インサートモードでテキストを入力
• VimとはViに拡張機能を持たせたもの、コマンド操作に大差はない

$ vi ファイル名

ファイルを開くと以下のようなViエディタが表示されます。
ファイルの中身はそれぞれ書き込んだものが表示されます。

コマンド入力したい時
• ESCキーを押して(コマンドモードにして)からコマンドを入力

コマンド コマンド説明
:q ファイルを閉じる
:w ファイル保存
:wq ファイル保存して閉じる
:q! ファイルを強制的に閉じる

テキストを編集したい時
• iキーを押して(インサートモードにして)テキストを編集
• 編集後、保存やファイルを閉じる場合ESCキーを入力してコマンド入力する

Vi(Vim)にはまだ他にも沢山のコマンドと機能があります。
知識0から始めるVim講座

細かいコマンドや操作を出したらきりがありませんが、より詳しく知りたい方は下の記事がおすすめです。

より多くのコマンドの操作方法がまとめられています。
この量まとめた方すごい...
Mac ターミナルの基本的な使い方・操作方法(1)

UNIX互換であるLinuxを勉強してみたい方はこちらがおすすめです。

アンケートに答えるだけで、無償でLinuxの基礎知識がまとめられたPDFがダウンロードできます。
20万ダウンロード突破!
初心者の方が基礎からLinuxを学習するために最適な教科書

今回の記事は自分が最初の頃に知っておきたかった内容をまとめています。Gitに続いてコマンドが多いですね。笑 コマンドは暗記仕切れませんが、できることを知るだけでも今後の役に立つと思います! この記事がUNIXについて学びたいけど、どう学んだらいいかわからない方や復習したい方のお役に立てれば幸いです。

Discussion