1 Linuxの基礎知識
¶
ターミナル
¶
概要
¶
コマンド入出力の画面を提供するソフトウェア
「ターミナル」の中で「シェル」が動いている
「シェル」と分けているのは、Linuxが「1つのプログラムは1つのことをうまくやらせる」という設計思想に基づくため
シェル
¶
概要
¶
LinuxのCLIを提供するソフトウェア
Linuxカーネルに対してコマンドを伝えて、実行結果を表示する
画面構成
¶
シェルには「ユーザー名」「ホスト名」「プロンプト」が表示されている
プロンプト以降にコマンドを入力する(コマンド待機状態になっている)
「$(プロンプト)」は、コンピュータが入力する箇所、人間が入力する箇所を識別する記号
[jack@localhost~]$
jack :ユーザー名
localhost : ホスト名
$ :プロンプト(管理者の場合は「#」)
シェルの仕組み
¶
1: ユーザーがプロンプトにコマンドを打つ
2: シェルが入力された名前のコマンドを探す
3: Linuxカーネルが見つかったコマンドを実行する
4: シェルが実行結果を画面に表示する
シェルの種類
¶
sh
¶
最も古いシェル
ほぼすべてのUnixで利用できる標準的なシェル
機能が少ない
bash
¶
shを基本として機能を拡張したシェル
Linux環境でデフォルトのログインシェル
初心者が学習で使うのにオススメ
zsh
¶
bashの機能を取り込んだ上で独自機能を拡張したもの
機能が豊富なシェル
「ゼットシェル」とも呼ぶ
Virtual Boxの操作
¶
仮想マシンに入る
¶
画面上で何かのキーを押す
仮想マシンから出る
¶
キーボードの右の「ctrl」キーを押す
AWSの操作
¶
EC2 Linuxの開始
¶
AWSのEC2を開く
インスタンスの開始
パブリックIPのコピー
Tera Termを起動
ホスト/ユーザー名/キーペアを設定
ホスト: EC2のパブリックIP or Elastic IP
ユーザー名:ec2-user
秘密鍵の選択
EC2 Linuxを終了
¶
TeraTerm上で「exit」を入力
AWSのEC2を停止
2 ショートカット
¶
基本操作
¶
ターミナルを閉じる
¶
Crtl + d
$ exit
カーソルの移動
¶
行の先頭に移動
¶
Ctrl + a
行の最後に移動
¶
Ctrl + e
一単語だけ次に移動
¶
Esc ⇒ f
一単語だけ後に移動
¶
Esc ⇒ b
文字列の編集
¶
カーソール左を一文字削除
¶
Ctrl + h
カーソール部分を一文字削除
¶
Ctrl + d
カーソール右の単語を削除
¶
Ctrl + w
カーソール一から行頭までを削除
¶
Ctrl + u
カーソール一から行末までを削除
¶
Ctrl + k
最後に削除した内容を挿入
¶
Ctrl + y
トラブル時の対応
¶
実行中のコマンドを強制終了
¶
Ctrl + c
画面消去(文字化けクリア)
¶
Ctrl + l
$ clear
画面表示のロック
¶
キーボードからの文字入力を受け付けなくなる
Ctrl + s
画面表示のロック解除
¶
Ctrl + q
入力補完
¶
コマンド/パスの補完
¶
パスやファイル名の補完入力で有効
Tab
履歴確認
¶
↑ :一つ前の履歴を表示
↓ :一つ後の履歴を表示
履歴一覧
¶
過去に入力したコマンドが一覧表示される
$ history
インクリメンタル検索
¶
Ctrl + r
その他の基本操作
¶
カレンダー表示
¶
$ cal
現在の月のカレンダーを表示
$ cal -y
「-y」を付けると現在の月を含む年の全ての月のカレンダーを表示
$ cal 2020
2020年の全ての月のカレンダーを表示
システム日付の表示
¶
$ date
3 ディレクトリの知識
¶
概要
¶
ディレクトリ構造
¶
Linuxの「ディレクトリ」とは、Windowsの「フォルダ」と同じ概念
ディレクトリは入れ子構造になっている
Linuxは「/(ルートディレクトリ)」を頂点とした入れ子構造となっている(Windowsはドライブが頂点)
パス情報
¶
ディレクトリのファイル住所情報のことをいう
「絶対パス」と「相対パス」がある
絶対パス: 「/」(ルートディレクトリ)から記載したパス
相対パス: カレントディレクトリから記載したパス
特別なディレクトリ指定
¶
カレントディレクトリ
¶
現在自分がいるディレクトリ
「.」で指定する
親ディレクトリ
¶
1つ上の階層のディレクトリ
「..」で指定する
ホームディレクトリ
¶
「/home/user_name」のディレクトリ
「~」で指定する
ルートディレクトリ
¶
頂点のディレクトリ
「/」で指定する
ディレクトリの役割
¶
/bin
¶
一般ユーザーおよび管理ユーザーの両方が使用するコマンドの実行ファイルを格納
特に、Linuxの動作に最低限必要な重要度の高いコマンドの実行ファイルを格納
/dev
¶
デバイスファイルを格納
「デバイスファイル」とは、ディスクやキーボードなどのハードウェアをファイルとして扱えるようにしたファイル
/etc
¶
設定ファイルを格納
「アプリケーションの設定ファイル」「Linux自体の設定ファイル」が格納されている
/home
¶
ホームディレクトリが配置される
「ホームディレクトリ」とは、Linuxのユーザーごとに割り当てられた個人用ディレクトリ
ユーザーはホームディレクトリ内に自由にファイルやディレクトリを作成することができる
/sbin
¶
管理者ユーザー向けのコマンド実行ファイルを格納
/tmp
¶
一時的なファイルを格納
アプリケーションの実行中に一時的にファイルを保存することなどに使われる
定期的にファイル削除を行っている
/usr
¶
各種アプリケーションと付随ファイルを格納
「uxr」はuserの意味
/var
¶
変化するデータを格納
アプリケーションを動作するうえで作成されるログなどを格納
4 ディレクトリの操作
¶
ディレクトリ移動:cd
¶
概要
¶
「Change Directory」の略称
「cd」でオプションを設定することは少ない
「cd」で指定するディレクトリは入力補完が適用される(et + Tabキー ⇒ etc)
書式
¶
$ cd [オプション][ディレクトリ]
特殊ディレクトリへの移動
¶
ルートディレクトリに移動
$ cd /
ルートディレクトリ直下の「etc」ディレクトリに移動
$ cd etc/
一つ上のディレクトリに移動
$ cd ..
ホームディレクトリに移動
$ cd ~
カレントディレクトリ表示:pwd
¶
概要
¶
「Print name of Working Directory」の略称
オプションを設定することは少ない
今いるディレクトリがわからなくなったらpwdコマンドで確認(Linuxでは現在のディレクトリの場所を意識する)
書式
¶
$ pwd [オプション]
ディレクトリの中を表示:ls
¶
概要
¶
「list」の略称
パス名展開を使ってファイルを絞り込むことができる
パス名はTabキーによる入力補完で入力していく
書式
¶
$ ls [オプション][ディレクトリ名]
現在のディレクトリの中を表示
$ ls
指定したディレクトリの中を表示
$ ls /bin
パス名展開
¶
*: 任意の複数文字を示す
?: 任意の一文字を示す
オプション:詳細情報
¶
ディレクトリ内のファイルの詳細情報を表示する
$ ls -l
オプション:全ファイル表示
¶
ディレクトリ内の隠しファイルを含めたすべてのファイルを表示する
$ ls -a
オプション:全ファイルの詳細情報
¶
ディレクトリ内の隠しファイルを含めたすべてのファイルの詳細情報を表示する
$ ls -al
オプション:ファイル種別表示
¶
ディレクトリ内のファイル種別を表示する
$ ls -F
オプション:ファイル名で逆順表示
¶
ディレクトリ内のファイルを逆順に表示
$ ls -r
オプション:更新日付順に表示
¶
ディレクトリ内のファイルを更新日付順に表示
$ ls -t
ディレクトリ作成:mkdir
¶
概要
¶
「Make Directory」の略称
ディレクトリ名はアルファベットで作成する(日本語は文字化けの可能性あり)
書式
¶
$ mkdir [オプション]<作成するディレクトリ名>
オプション:複数階層の作成
¶
深いディレクトリを一度に作成する(通常は順番にディレクトリを作成していく必要がある)
$ mkdir -p test/2019/08
ディレクトリ削除:rmdir
¶
概要
¶
「remove Directory」の略称
空のディレクトリを削除する
隠しファイルなどが残っている場合はエラーとなり削除できない
書式
¶
$ rmdir <ディレクトリ名>
ディレクトリ削除:rm
¶
概要
¶
「remove」の略称
指定したディレクトリを削除するコマンド(ファイルが存在しても削除することができる)
「rm」でディレクトリを移動する場合は「-r」オプションが必須
書式
¶
$ rm -r <ディレクトリ名>
ディレクトリ移動:mv
¶
概要
¶
「move」の略称
「mv」でディレクトリを移動する場合は「-r」オプションが必須
書式
¶
$ mv [オプション] <移動元> <移動先>
ディレクトリのコピー:cp
¶
概要
¶
「copy」の略称
「cp」コマンドは元々ファイルを操作するコマンド
「cp」でディレクトリをコピーする場合は「-r」オプションが必須
書式
¶
$ cp -r [オプション] <コピー元のディレクトリ> <コピー先のディレクトリ>
5 ファイルの操作
¶
ファイルの種類
¶
テキストファイル
¶
「テキストファイル」とは、文字列(文字コードで定められた文字)のみ書かれたファイルのことをいう
文字コードとは、文字の種類に数字を割り振ったもの(A:1000001、B:1000010)
Linuxでは設定情報はすべてテキストファイルで管理している
バイナリファイル
¶
「バイナリファイル」とは、画像ファイル、音声ファイル、実行ファイルなどをいう
「バイナリファイル」は、テキストファイル以外はすべてのファイルと考えてもよい
catコマンドで開こうとすると文字化けする(強引にテキストファイルとして解釈しているため)
ファイルを表示:cat
¶
概要
¶
「concatenate」の略称
ファイル内容を表示する際に利用されるコマンドの一つ
<ファイル名>を半角スペースを入れて複数指定すると、複数ファイルをまとめて表示することができる
書式
¶
cat [オプション] <ファイル名>
オプション:-n
¶
行番号を表示する
$ cat -n /etc/hosts
複数ファイル表示
¶
$ cat /etc/hostname /etc/hosts
ファイルを表示:more
¶
概要
¶
書式
¶
ファイルを表示:view
¶
概要
¶
書式
¶
ファイルをスクロール表示:less
¶
概要
¶
「less - opposite of more」の略称(moreの逆)
別画面が開いてファイルの中身を見やすくする
書式
¶
less [オプション] <ファイル名>
参考1:スクロール操作
¶
一画面下にスクロール
スペースキー or 「f」キー
一画面上にスクロール
「b」キー
一行下にスクロール
「j」キー
一行上にスクロール
「k」キー
lessコマンドを終了
「q」キー
参考2:検索操作
¶
下方向に向かって検索
/<文字列>
上方向に向かって検索
?<文字列>
次の検索結果に移動
「n」キー
次の検索結果に移動
「shift + n」キー
空のファイルを作成:touch
¶
概要
¶
「touch」の略称
ファイルが存在しない場合は空のファイルを作成(もともとタイムスタンプの更新がメイン)
ファイルが存在する場合は既存ファイルのタイムスタンプを更新
書式
¶
$ touch <新規ファイル名1> <新規ファイル名2>
空のファイルの削除:rm
¶
概要
¶
「remove」の略称
実行するとごみ箱に行くのではなく、完全に削除されるので注意
既存ファイルが対象となるので、Tabキーによる入力補完を使うと便利
書式
¶
$ rm <削除ファイル名1> <削除ファイル名2>
オプション:-r
¶
ディレクトリも併せて削除する(ディレクトリに含まれる他のファイルも削除される)
$ rm -r <ディレクトリ>
オプション:-f
¶
ファイルを削除する際に警告文を表示しない(削除ファイルが多い場合に使用する)
「-r」オプションと併せて使用することが多い(誤って削除しないように注意)
$ rm -f <ファイル名>
オプション:-l
¶
ファイルを削除する前に確認する
$ rm -l <ファイル名>
ファイルの移動:mv
¶
概要
¶
「move」の略称
ファイルを移動することができることに加えて、ファイル名を変更することもできる
書式
¶
$ mv [オプション] <移動元> <移動先>
オプション:-i
¶
上書きする前に確認する
$ mv -i <ファイル名1> <ファイル名2>
ファイルのコピー:cp
¶
概要
¶
「copy」の略称
コピー先のファイルが既に存在する場合は上書きするので注意
書式
¶
$ cp [オプション] <コピー元> <コピー先>
オプション:-i
¶
上書きする前に確認する
$ cp -i <コピー前ファイル名> <コピー後ファイル名>
リンクを貼る:ln
¶
概要
¶
「link」の略称
Linuxではファイルに別名をつけることができ、別名をつけることを「リンクを貼る」という
リンクには「ハードリンク」と「シンボリックリンク」の2種類がある
ハードリンクは、1つのファイルの実体に複数の名前を付ける機能をいう(ファイルを別名で保存)
元のファイルを削除してもリンクは消えない
ディレクトリに対して使用することはできない
オプションをつけないとハードリンクになる
シンボリックリンクは、リンク先のパス名が書かれた特殊ファイルをいう(Windowsのショートカットと同じ)
参照先ファイルを削除すると、シンボリックリンクはファイルを参照できなくなる
使いどころ
¶
長いパス名を省略したいとき
複数バージョンを共存させて最新バージョンを区別したいとき
書式
¶
$ ln [オプション] <リンク元ファイル名> <リンク名>
オプション:-s
¶
上書きする前に確認する
$ ln -s <リンク元ファイル名> <リンク名>
ファイルの検索:find
¶
概要
¶
ファイルを探す際にはfindコマンドを使用する
リンクには「ハードリンク」と「シンボリックリンク」の2種類がある
書式
¶
$ find <検索開始ディレクトリ> [検索条件] [検索アクション]
検索条件:-name
¶
ファイル名を指定してファイルを検索
ファイル名の大文字/小文字は区別する
ワイルドカード(* ?)を使うことができる
$ find .-name README.md
検索条件:-iname
¶
ファイル名を指定してファイルを検索
ファイル名の大文字/小文字は区別しない
$ find .-iname README.md
検索条件:-type
¶
ファイルの種類で検索
「-type f」は通常ファイル、「-type l」はシンボリックリンク、「-type d」はディレクトリを検索
検索条件:-a
¶
複数の検索条件を指定
6 viエディタ
¶
基本操作
¶
In [ ]:
7 標準入出力
¶
はじめに
¶
標準入出力とは
¶
標準入出力は、「標準入力」「標準出力」「標準エラー出力」の3つを合わせて標準入出力と呼ぶ
「標準入力」とは、プログラムの標準の入力チャネル(通常はキーボードから出力)
「標準出力」とは、プログラムの標準の出力チャネル(通常はディスプレイに出力)
「標準エラー出力」とは、プログラムのエラーメッセージを出力する(通常はディスプレイに出力)
Linuxではコマンドの入出力先を抽象化することで、入出力先を柔軟に変更できるようにしている
処理の組み合わせが可能となる
リダイレクト
¶
概要
¶
リダイレクトというのは入出力先を変更する機能のことをいう
「入力のリダイレクト」とは、キーボードの代わりにファイルから入力する機能
「出力のリダイレクト」とは、コマンド実行結果をディスプレイではなくファイルに保存する機能
エラー出力のリダイレクト
¶
In [ ]:
In [ ]:
In [ ]:
In [ ]:
パイプライン:|
¶
概要
¶
複数のコマンドを連携される機能
コマンドの「標準出力」を別のコマンドの「標準入力」につなげる
書式
¶
コマンド | コマンド
具体例
¶
ls /bin | less
lsの結果が多いので、lessを使って別画面で表示する
ls /bin | grep systemd | less
lsの結果が多いので、指定した文字列で絞り込んで、lessを使って別画面で表示する
8 パーミッション
¶
はじめに
¶
パーミッションとは
¶
「パーミッション」とは、ファイル操作とディレクトリ操作の権限管理のことをいう
Linuxはサーバーなど複数人が同時にログインして作業を行う環境を想定して設計されている
オーナーとグループ
¶
Linuxはデータすべてファイル形式で管理されている
Linuxでは全てのファイルに対して「オーナー(所有者)」と「グループ(所有グループ)」が設定されている
「オーナー」は、ファイルの所有者(作成者)のことをいう
「グループ」は、ユーザーをグループ単位で設定することでユーザー管理を効率化する
パーミッションの詳細
¶
権限記号
¶
「r」は読み取り(read)を意味する
「w」は読み取り(write)を意味する
「x」は実行(execute)を意味する
「-」は権限なしを意味する
権限対象
¶
パーミッション情報は権限記号の3種類を順列挙して示している(3文字ずつに分けて見る)
「オーナー」「グループユーザー」「その他のユーザー」の順番に3文字ずつで表記する
権限の見方
¶
rwxr-xr-x(rwx r-x r-x)
「オーナー」は「Read」「Write」「Execute」の権限を持つ
「グループユーザー」と「その他ユーザー」は「Read」「Execute」の権限を持つ
ファイルモード変更:chmod
¶
概要
¶
「change mode」の略称
ファイルやディレクトリのパーミッションを設定する
構文
¶
$ chmod [ugoa] [+-=] [rwx] <ファイル名>
[ugoa]は「権限対象」を示し何れかの1文字を入力する
[+-=]は「権限設定方法」を示し何れかの1文字を入力する
権限対象
¶
[u]:所有者の権限
[g]:グループの権限
[o]:その他のユーザーの権限
[a]:全ユーザーの権限
権限設定方法
¶
[+]:権限の追加
[-]:権限の削除
[=]:記述した権限にする
具体例
¶
$ chmod u+r file
「所有者の権限」を「読み取り専用」を「追加」する
スーパーユーザー操作:sudo
¶
概要
¶
「Switch user and do」の略(スードゥーと読む)
「スーパーユーザー」とは管理者権限を持つ特別なユーザーのことをいう
sudoコマンドはユーザーを切り替えて実行するコマンド(デフォルトでは管理者権限)
構文
¶
sudo <コマンド>
具体例
¶
$ sudo mkdir /storage
/(ルートディレクトリ)の直下でのファイル作成は管理者権限がないと行うことができない
9 プロセス管理
¶
プロセス管理
¶
はじめに
¶
「プロセス」とは、実行中のプログラムのことをいう
コマンドを実行すると、実行ファイルをメモリに格納してメモリ上でプログラムを実行する
1つのコマンドを実行すると新しいプロセスが1つ作られる
プロセスの表示:ps
¶
概要
¶
「process statuds」の略称
1行ごとに実行中のプロセスを表示される
PIDはプロセスID、CMDに実行中のコマンドが表示される
書式
¶
$ ps [オプション]
オプション:aux
¶
全ユーザーのプロセスを詳細情報を併せて表示(3つのオプションが合わさったオプション)
「x」はpsコマンドを実行したユーザーのすべてのプロセス
「a」は全てのユーザーのすべてのプロセス
「u」は詳細情報を併せて表示するという意味
オプションだが「-」をつけない(-auxは別の意味となる)
$ ps aux
プロセスの終了:kill
¶
概要
¶
「kill process」の略称
実行中のプロセスを終了させる
書式
¶
$ kill [オプション] <プロセスID>
ジョブ管理
¶
はじめに
¶
「ジョブ」とは、まとめて実行されるプロセスの集まりのことをいう(シェルごとに管理される)
「フォアグラウンド」とは、ユーザーが画面で対話的に操作することをいう
「バックグラウンド」とは、対話画面を介さずにバックグラウンドでジョブを実行することをいう
ジョブ一覧の表示:jobs
¶
概要
¶
現在のジョブ一覧を表示するコマンド
「ジョブID」「実行状況」「実行コマンド」を表示する
書式
¶
$ jobs
フォアグラウンドに変更:fg
¶
概要
¶
ジョブをフォアグラウンドに戻して対話的に操作したいときに使う
書式
¶
$ fg %<ジョブID>
バックグラウンドに変更:bg
¶
概要
¶
ジョブをフォアグラウンドからバックグラウンドに変更する
実行時間の長い処理をバックグラウンドで実行することで、コマンドが終了するのを待たなくてもよくなる
書式
¶
$ bg %<ジョブID>
ジョブの終了:kill
¶
概要
¶
「kill process」の略称
停止中やバックグラウンドのジョブを終了させる
フォアグラウンドのジョブは「Ctrl+c」で終了することができる
構文
¶
$ kill %<ジョブID>
$ kill <シグナル名> %<ジョブID>
シグナル名ではデフォルトでは「-TERM」が省略されて入力される