初心者のためのLinux学習コマンド一覧

# 初心者のためのLinux学習コマンド一覧
## はじめに
Linuxとは、コンピュータを動かすための、基本ソフトウェアの1つです。サーバー用や組み込み用など幅広い場所で用いられているため、そういった場所でマシンを操作するために必要になってくるOSです。
このブログでは、現在プログラミング学習中の私や、同じ状況の初心者の皆さんの確認のために、基本的なLinuxのコマンドをまとめましたので、「もう一回かるく振り返ってみよう」というときに読んでいただけると幸いです。

## Linuxの主要コマンドたち

#### ーディレクトリの操作編ー
1. **cdコマンド**
cd(chage directory)コマンドは、ディレクトリを変更するコマンド。
現在いるディレクトリを変更することが出来る。
【書式】`cd ディレクトリ名`
1. **pwdコマンド**
pwd(print working directory)コマンドは、現在自分がどこのディレクトリの中にいるのかを表示するディレクトリ。
【書式】`pwd`
1. **lsコマンド**
ファイルやディレクトリ名を指定して情報を得ることができるコマンド。ディレクトリ名を指定した場合、そのディレクトリの中にあるファイルやディレクトリ名の一覧を取得することが出来る。*や？をワイルドカードとして使うこともできる。
【書式】`ls オプション　ファイル`
ここで…
オプションとは：それをつけることで、どの動作を変えることが出来る記号。
上記のlsコマンドは、単体で用いるとカレントディレクトリの中身を表示するコマンドですが、オプション次第で、その如何をかえることができます。
【オプション】
　`-a` :　.で始まる隠しファイル等もすべて(All)出力する。
　`-l` :　長(long)形式で出力する。
　`-t` :　最終更新時間(Time)によって、ソートをして出力する。
　`-r` :　逆順(Reverse)にソートをして、出力する。

1. **mkdirコマンド**
ディレクトリを作成するコマンド。
【書式】mkidr オプション　ディレクトリ名
【オプション】
`-p`　:　指定されたディレクトリの上位ディレクトリも作成する。

1. **rmdirコマンド**
ディレクトリを削除するコマンド。
【書式】`rmdir ディレクトリ名`
【オプション】
`-p`　：　指定した階層までのディレクトリを一括で削除する。オプションをつけないでrmdirコマンドを実行した場合は、最下層のディレクトリのみ削除する。ただしいずれの場合も、対象とするディレクトリ内は空でなければいけない。

---
#### ーファイルの操作編ー
1. **catコマンド**
ファイルの内容を確認するコマンド。
【書式】`cat ファイル名`
【オプション】
`-n`　：　行番号を付加して表示する。

1. **lessコマンド**
沢山の行があっても、画面制御を行ってクスロールを途中で止めてくれる(ページングしてくれる)コマンド。
【書式】`less ファイル名`
ページャでファイルを開いたあとは、次のようにコマンドを入力すると操作ができる。
　`スペース`　：　次のページに進む。
　`b`　：　前の一画面に戻る
　`f`　：　次の一画面に進む
　`↑`　：　前の行に進む
　`↓`　：　次の行に進む
　`/単語`　：　単語を検索する。nキーで検索結果をジャンプする。
　`q`　：　ページャコマンドを終了(quit)する。
1. **tailコマンド**
ファイルの末尾をみることができるコマンド。
【書式】`tail　オプション　ファイル名`
【オプション】
`-n`　：　末尾から指定した行を標準出力する。
`-c`　：　末尾から指定したバイトを標準出力する。
tailはファイルの終わりの部分を標準出力する。オプションをつけない場合は、末尾から10行を標準出力する。
1. **touchコマンド**
タイムスタンプ（最終更新日）を変更するコマンド。ファイルが存在しない場合、中身がからである０バイトのファイルを作成する。
【書式】`touch オプション　ファイル名`
【オプション】
`-t`　：　ファイルの更新時刻を指定するオプション。

1. **rmコマンド**
ファイル、ディレクトリを削除するコマンド。
【書式】`rm 　オプション　　削除するファイル名1 　削除するファイル名2・・・`
【オプション】
`-r`　：　ディレクトリも併せて削除（ディレクトリの中のファイルやディレクトリもまとめて削除される。）
`-f `　：　ファイルを削除するのに警告文を表示しない。
`-i`　：　ファイルの削除前に確認する。

1. **mvコマンド**
ファイルを移動するときに利用するコマンド。ファイル名の変更もできる。
【書式】mv 移動元ファイル　移動先ファイル
【オプション】
`-i`　：　処理を行うときに確認をする。ファイルを上書きするときなどに、コンピュータが確認のための問い合わせをしてくる。謝って上書きするのを防げる。
`-f`　：　強制的に処理を実行する。一部の処理では、mvコマンドが確認のための問い合わせとする。強制的に処理を実行するためのオプション。

1. **cpコマンド**
ファイルを扱う上で、複製を作成するなど、コピーをするコマンド。
【書式】
`cp オプション　コピー元　コピー先`
【オプション】
`-i`　：　処理を行うときに確認をする。
`-r`　：　ディレクトリをコピーする。
`-p`　：　元ファイルの情報を保存する。

cpコマンドには、以下の使い方がある。
- ファイルを別名のファイルとしてコピー　:　コピー元がファイル名で、コピー先が存在しないファイル名のとき、コピー元ファイルのコピーを作成する。
- ファイルをディレクトリにコピー　：　コピー元がファイル名で、コピー先がディレクトリのとき、コピー先ディレクトリの下にコピー元ファイルを作成する。
- ファイルを新しいファイルで上書き　：　コピー元がファイル名で、コピー先が存在するファイルのとき、コピー先ファイルはコピー元ファイルの内容で上書きされる

1. **lnコマンド**
リンクを貼るコマンド。
ここで、「リンクを張る」とは・・・
Linuxでは、ファイルに別名をつけることが出来る。それを「リンクを張る」という。Windowsでいうショートカットのようなもの。
リンクには、
- ハードリンク：　1つのファイルの実体に、複数の名前をつける機能。
- シンボリックリンク：　リンク先のパスが書かれた特殊ファイル。リンク先ががファイルの実体。
の2種類がある。
リンクは、長いパス名を省略したいときや、複数バージョンを共存させ、最新を区別したいときに使う。
※ハードリンクとシンボリックリンクだと、シンボリックリンクを使う事の方が多い。ハードリンクはいくつかの制限があって、異なるディレクトリをまたいで作成できなかったり、ディレクトリに対して使えない。シンボリックリンクはそのような制限を受けない。
  
【書式】`ln オプション　リンク元ファイル　リンク名`
【オプション】
`-s` 　：　シンボリックリンクを張る。

14. **findコマンド**
ファイルがどこのディレクトリに存在するか、検索できるコマンド。
【書式】`find　パス　-name ファイル名`

---
#### ーパーミッション編ー
パーミッションとは、ファイルへアクセスし、閲覧、編集、実行または移動する権限の事です。ファイルのパーミッションは、読み込み・書き込み・実行または移動の3つの領域でそれぞれ設定できるようになっています。
1. **chmodコマンド**
ファイルのアクセス権を変更するコマンド。
ここで・・・
ファイルは、ファイルを所有するユーザ、フィル所有グループからファイル所有者を除いたユーザ、その他のユーザの３つのレベルで権限を設定できる。ファイルにはユーザで分けた３つのレベルごとに読み、書き、実行の3つの権限がある。
【書式１】`chmod (ugoa)(+-=)(rwx)ファイル名`
【詳細】
`u` : 所有者の権限
`g` : グループの権限
`o` : その他のユーザーの権限
`a` : 全ユーザーの権限
`+` : 権限を追加
`-` : 権限を削除
`=` : 記述した権限にする
例えば、`$ chmod u+r file`のようなコマンドがあったら、fileの「所有者に対して」「読み取りの権限を」「追加する」。という意味になる。

　【書式２】`chmod 8進数の数値　ファイル名`
　【詳細】
　ｒ：４、ｗ：２，ｗ：１の数字が割り振られており、オーナー・グループ・その他　の順番で権限の変更を設定することが出来る。
　例えば、オーナーがrwx（読み・書き・実行）、グループがr－w（読み・実行）、その他のユーザーがr－w（読み、実行）の権限に設定するとき、
　オーナー：４＋２＋１＝７、グループ：４＋１＝５、その他：４＋１＝５
　で、`$ chmod 755 file `のようにコマンドを打ち込むとできる。

1. **chownコマンド**
ファイルの所有者を変更するコマンド。
【書式】`chown ユーザ（.グループ）　ディレクトリ`
【オプション】
`-R`　：　ディレクトリを対象にする。


---
#### ープロセス・ジョブの管理編ー
プロセスとは：
実行中のプログラムを管理する単位を、プロセスとよぶ。
ジョブとは:
Linuxが実行中のプログラムを管理する単位であるプログラムに対して、ジョブは、シェルが管理するプログラムの単位。まとめて実行されるプロセスの集まりがジョブ。シェルからコマンドを実行する場合、ジョブをフォアグラウンドとバックグラウンドに切り替える機能がある。

17. **psコマンド**
現在実行されているプロセスの砂プショットを表示する。
【書式】`ps オプション`
【オプション】
`-A` : すべてのプロセスを選択する。-eと等しい。
`e`　：　コマンドの後に環境を表示する。
`l,-l`　：　長いフォーマット。-（ダッシュ）のあり、なしで表示は異なる。
`w,-w`　：　出力幅を広げる。このオプションを2つ指定すると、幅の制限がなくなる。
`aux` :　全ユーザーのプロセスを、詳細情報を合わせて表示。

18. **killコマンド**
ジョブやプロセスを終了させるコマンド。
【書式】`kill オプション　%＜ジョブID＞`
　　　　`kill オプション　＜プロセスID＞`

## 終わりに
これだけコマンドが多いと、すぐに忘れてしまいそうですね。おそらくVim同様、使いながら覚えていくのではないかと思っています。私も、なるべく使う機会をたくさん設けて、定着させていければと思っています。