LinuxOSはWebサーバーなどの用途でほとんどの会社で利用されているOSですが、
意外と周りの同僚の話を聞いていると、大学が情報系でもLinuxを扱ったことがないという人はざらにいるようです。
Linux OSはWindowsなどに比べて無駄なものが少ない為、処理効率などが格段に違かったり、再起動したときの起き上がりが早かったりします。
ただし、Linuxは基本的には画面をすべてコマンドによって操作するCUIで運用している場合が多く、
Windowsのようなマウスを使って動かすにはGUIのインストールが必要だったり、
それをインストールをすることによって常時利用されるメモリ量が多くなり処理効率が下がってしまったりするので、あまりGUIはサーバーとしては使われません。
一見使い易さを捨てて、処理能力を優先しているようなLinuxですが、コマンドを覚えることでWindowsのようなマウスではできない動きであったり、
大変な作業を一瞬で終わらせることができるので、意外と重宝します。
Windowsにもコマンドで制御する方法がありますが、Windows標準搭載のPowershellなどが割とLinuxコマンドに近い動きができるので、Linuxを使っていなくても、覚えて損はない知識だと思っています。
ですので、今回はこれだけ覚えていれば基本的な業務を行えるレベルのLinuxコマンドとそれを確認するにあたって必要な用語をまとめたので紹介していこうと思います。
※一つ一つ短く書いたつもりでしたが、量がそれなりにできてしまったので、ここでは用語だけを紹介し、次回にコマンドを紹介していきます。
目次を見て、見る必要がないと思う方は下記からコマンド紹介の方に移ってもらえればいいと思います↓
【Linux初心者向け】業務レベルで必要なLinux~コマンド編
目次
ディレクトリ
=通称フォルダと言われるファイルを入れるための箱のようなもの
ハードディスクから見ると箱を作っているのではなく、わかりやすいように仕切りを作っているイメージなので、「ディレクトリを(区)切る」などと言われる場合もある。
ファイル
=テキストデータやプログラムデータなどが記述されたデータ
ルートディレクトリ
=一番上の階層のディレクトリ
すべてのディレクトリの分岐の始まり地点
ホームディレクトリ
=起動したときに一番最初に開くディレクトリ
基本的には「/home/[ログインしたユーザーの名前]」のこと
「~/」これでもホームディレクトリを指す意味になる
カレントディレクトリ
=今開いているディレクトリ
親ディレクトリ
=対象となるディレクトリより階層が上のディレクトリ
サブディレクトリ
=対象となるディレクトリより階層が下のディレクトリ
パス
=対象のディレクトリやファイルに行くまでの道のり
ディレクトリの場合「/home/user/dir1」
ファイルの場合「/home/user/dir1/aaa.txt」
のように記述される
絶対パス
=ルートディレクトリから対象のディレクトリやファイルまでのパス
パスの最初に「/」(スラッシュ)が入ってたら絶対パス
相対パス
=カレントディレクトリから対象のディレクトリやファイルまでのパス
パスの最初に「/」(スラッシュ)が入ってなかったら相対パス
権限/パーミッション
=ファイルやディレクトリの操作(読み込み・書き込み・実行)など権限
操作中に「permission error」など出たら、操作しているユーザーに合った権限(制限)をファイル割り当てるなどしないと操作ができない
ユーザー/一般ユーザー
=ユーザーIDとパスワードを割り当てることでそのユーザーでのログインができるようになる
グループ
=グループIDを割り当てることで、グループを作成でき、そこにユーザーを入れることで、ディレクトリやファイルのアクセス権限を振り分けることができる
スーパーユーザー/ルートユーザー
=OSを導入するときに一番最初に設定するユーザー
すべての権限が割り当てられている
コマンド
=これから紹介する「UNIXコマンド」と呼ばれる命令語
コマンド系は以下に保存されている
基本コマンド=「/bin」
管理者コマンド=「/sbin」
アプリケーションの基本コマンド=「/usr/bin」
アプリケーションの管理者コマンド=「/usr/sbin」
後から追加したコマンド=「/usr/local/bin」
シェル
=Linuxに命令するためのOS標準搭載の言語
普通のプログラム言語のようにif文の条件分岐やfor文のループなどができますが、それらの処理をファイルにまとめたものをシェルスクリプトという(バッチともいう)
これから紹介するのは「UNIXコマンド」というもので、「UNIXコマンド」は「シェル」の一部ですが、
UNIXコマンド=コマンド
シェル=シェルスクリプト
の事を指している場合が多い感じがします。
※ちなみにif文for文を使ってなくて、「UNIXコマンド」をまとめて記述したファイルでもシェルスクリプトです。
オプション
=コマンドと一緒に記述することで処理方法や表示方法などを変えることができる
コマンドとオプションの間に半角空白を入れる
ハードリンク
=ディレクトリやファイルへのハードリンクを作成することでショートカットや別名でのアクセスを可能にする
参照元のファイルを消したとしてもファイルのアクセス方法がなくなったわけではないので、ハードリンクだけでアクセスができる
シンボリックリンク
=ディレクトリやファイルへのシンボリックリンクを作成することでショートカットや別名でのアクセスを可能にする
ハードリンクと違いシンボリックリンクに記憶されるのは参照元のパスだけなので、参照元が消えるとアクセスができなくなる
圧縮
=ファイルの構造を書き換えてファイルサイズを小さくする
解凍
=圧縮したファイルを元に戻す
アーカイブ
=データを保存用にまとめることです。
圧縮とは違うので、ファイルサイズを縮めることはしません
補完
=ディレクトリ名、ファイル名を記述している最中に「Tab」キーを押すとそのディレクトリ名、ファイル名が存在していればそのあとの文字を自動的に入れてくれる機能
ディストリビューション
=Windowsで言うとXPと7のようなものがLinuxにもあり、Debian系のUbuntuやRedHat系のCentOSなどいろいろな種類があり、環境にいくつか違いがあり、これらをLinuxディストリビューションなどと言ったりします。
一部コマンドが違ったりもしますが、基本的なコマンドにはあまり違いはありませんので、コマンドの紹介は共通としてみてもらっても大丈夫です。
環境変数
=自動的に起動されるシェルスクリプト
ここにシェルを書き込むことで毎回書かなくてはいけないコードを自動的に処理してくれる。
種類として、「ログインシェル」「インタラクティブシェル」が存在していて、それぞれの方法によって読み込まれるファイルが違います。
その他に「非インタラクティブシェル」というものがありますが、このログイン方法を利用すると自動的にシェルスクリプトは読み込まれません。
※環境によるところがあるので、若干ディストリビューションの影響を受けます。
ログインシェル
=以下の処理方法で自動実行されるシェルスクリプト
ssh user@host
※リモート接続
su - ユーザID
※「-」オプション付きのユーザー変更
bash --login
※「--login」オプション付きのシェルスクリプト実行
CentOSの場合ですが、上記のログイン方法で下記ファイルが順番に存在しているか確認しながら、実行していきます。
- 「/etc/profile」
- 「~/.bash_profile」→「~./bash_login」→「~/.profile」
- 「.bashrc」
- 「/etc/bashrc」
※「~/」はホームディレクトリ
※「~/.bash_profile」、「~./bash_login」、「~/.profile」は存在の確認はしますが、どれか一つしか読まれないので、「~/.bash_profile」と「~/.profile」があれば、「~/.bash_profile」のしか実行しません。
ログアウト時にも下記ファイルがあれば実行します。
「~/.bash_logout」
インタラクティブシェル
=以下の処理方法で自動実行されるシェルスクリプト
su ユーザID
※ユーザー変更
bash
※シェルスクリプト実行
CentOSの場合ですが、上記のログイン方法で下記ファイルが順番に存在しているか確認しながら、実行していきます。
- 「~/.bashrc」
- 「/etc/bash.bashrc」
※「~/」はホームディレクトリ
非インタラクティブシェル
=以下のログインの方法ではシェルスクリプトは読み込まれません
su ユーザーID -c コマンドなど
※「-c」オプション付きのユーザー変更
bash -c コマンドなど
※「-c」オプション付きのシェルスクリプト実行
余計な事をしてほしくない時に使うといいと思います。
まとめ
プログラミングなどの用語で一番混乱することは一つの意味を指す言葉が無数に存在していたり、
それが抽象的な広い意味の言葉なのか、具体的な狭い意味の言葉なのかが分かりづらいことだと思っています。
私も時々わからずに使ってしまっている所が合ったりするので、今回調べながらかけて勉強になりました。
コマンドの紹介については下記に記載しています↓
【Linux初心者向け】業務レベルで必要なLinux~コマンド編