1
2

More than 1 year has passed since last update.

初心者のためのLinux

Last updated at Posted at 2023-03-09

Linuxはサーバ用や組み込み用のOSで使われていることが多く、サーバを操作するためには勉強は避けられません。しかし、Linuxは長い歴史の中で磨きあげられ変更が少ないため、一度習得すれば長く使える技術となっています。
また、今回紹介しているものは最低限の知識です。Linucなどに向けた情報量ではないので、詳しくは

をご利用ください。

また、windowsをご利用の方は先程のサイトを参考に、Windowsに仮想化ソフト(VMware)インストールを行い、Linux OSを動かせるようにしてください。

Linuxとは

LinuxとはOSの一種で、1991年からUnixをベースに開発されたもの。

Linuxの使用用途

サーバー用や組み込み用、デスクトップ用といった幅広い用途で使われている

Linuxの特徴

  • オープンソースなので誰でも自由に使える
  • 世界中で利用されているので信頼性が高い
  • 自動化するための仕組みがあり、サーバの運用に長ける
  • 商用アプリケーション(office 365等)が動作しない
  • 日本語対応されていない部分が多い

Linuxの最低限の用語

Linuxカーネル

Linuxの中核となる部分で、コンピュータのハードウェア制御などを行うソフトウェア。カーネルはハードウェアの違いを吸収し、プログラムがどのようなハードウェア上でも同じ動作をさせる役割がある。

ユーザランド

OSが動作するのに必要な、カーネル以外の部分のことを言う。ファイルシステムや操作コマンド、シェルなどの基本ソフトウェア群を指す。

Linuxディストリビューション

Linuxを使う上で必要なプログラムをまとめ、簡単にインストールできるようにしたもの。開発団体をディストリビューターともいう。

パッケージ

Linuxに追加機能を提供するものであり、導入が困難な応用ソフトウェアを簡単に導入できるよう、ディストリビューターの手によって作成されている

ディストリビューションの種類

ディストリビューションは1000種類以上あり、独自のコミュニティが開発を行っている。

  • Red Hat系
  • Debian系

Linuxコマンド

Linuxは基本的にはコマンドで操作します。コマンドはユーザランドで動作します。

シェル

シェルとはLinuxのCLIを提供するソフトウェア。ユーザとカーネルのインターフェイスの役割を行っている。
ターミナルを起動して入力を行うが、ターミナルは画面を提供するソフトウェアであり、コマンドを解釈するのはシェルであるため別物のソフトウェアである

シェルの機能

  1. コマンドの入力を受け付ける
    入力されたコマンドを理解し、実行します。
  2. シェルスクリプトの実行
    シェルスクリプトとはコマンドの入力を自動化するためのものであり、作成したシェルスクリプトをサーバ起動時や数時間毎に実行したりすることが可能

種類

  • sh
    もっとも古いシェル
    ほぼ全てのUnixで利用できる
    機能は少ない
  • bash
    shを基本に機能性を拡張したシェル
    Linux環境でのデフォルトログインシェル
  • zsh
    bashの機能を引き継ぎ、独自の拡張も行っているシェル
    機能が豊富
    基本的にzshが上位互換なので用いると良い

書式とオプションとワイルドカード

  • 書式とは
    コマンドが用いられる形式を示す。
  • オプションとは
    コマンドにオプションを用いることで、動作を変更することができる。また、複数のオプションを繋げ相乗することができる。
  • ワイルドカード
    (アスタリスク)例:.txt
    【例の場合だと、○.txtが列挙され出力される。また、何文字が入っても検索結果が出力される】
    ?(クエスション)例:??.txt
    【例の場合だと、○○.txtが列挙され出力される。また、アスタリスクとは違い、?マークの文字数に合致するものしか列挙されない。】

Linuxのディレクトリ操作

  • cd
    ディレクトリに移動する。またcdのみだとホームディレクトリに移動する。

ディレクトリの指定

ディレクトリ 指定方法 意味
カレントディレクトリ . 現在いるディレクトリ
親ディレクトリ .. 現在の一つ上階層のディレクトリ
ホームディレクトリ ~ or cd ホームディレクトリ
ルートディレクトリ / ルートディレクトリ
  • pwd
    現在いるディレクトリを確認できる
  • ls
    現在の階層の中にあるデータを確認できる。ディレクトリやファイルをlsコマンドで参照する場合、*と?をワイルドカードとして使用することができる。

書式:ls[option][file]

option discription
-a 隠しファイル等も表示する
- l (L) Long形式で出力(詳細を表示する)
-t 最終更新時間によって、ソートして出力
-r 順を逆にソートして出力
  • mkdir
    ディレクトリを作成できる。日本語で作成すると文字化けの恐れがあるため英語で作成する。
option discription
-p 指定されたディレクトリの上位ディレクトリも作成する
  • rmdir
    ディレクトリを削除できる。空ディレクトリしか削除できない
option discription
-p 指定した階層までのディレクトリを一括で削除する

ディレクトリ構造

ディレクトリとはファイルが保存されている場所。スラッシュ (winはドライブ)のルートを頂点とした階層構造になっており、ディレクトリツリーと呼ぶ。

主要なディレクトリの役割

  • /bin
    一般ユーザ及び管理ユーザが使用可能なコマンドの実行ファイルを格納。特にLinuxの動作に最低限必要な極めて重要なコマンドを格納している
  • /dev
    デバイスファイルを格納
  • /etc
    設定ファイルを格納
    Linuxの設定やLinuxで動作するアプリケーションの設定ファイルなどを格納
  • /home
    いわゆるホームディレクトリ(個人用ディレクトリ)を格納
    ユーザはホームディレクトリ内に自由にファイル等を作成できる
  • /sbin
    管理者ユーザ向けのコマンドの実行ファイルを格納
  • /tmp
    アプリケーションの実行中に結果を一時的にファイルとして格納する際に利用
    tmp内は定期的に削除される
  • /var
    変化するデータを格納
    アプリケーションを動作する上で作成されたログファイルなどを格納
  • /user
    各種アプリケーションやそれに付随するファイルを格納

パス

ディレクトリやファイルの住所情報のようなもの

絶対パスと相対パス

  • 絶対パス
    ルートディレクトリから始まる確実なパス表記。どのディレクトリにいてもパスを指定できる。
    例: 「/Users/user/Library」
  • 相対パス
    カレントディレクトリ(現在いるディレクトリ)から始まるパス表記。現在いるディレクトリが変わると利用できない(指定ができない)
    例: 「../user/Library」

便利コマンド

  • man
    マニュアルを表示
    書式:man コマンド名
option description
-k 単語 単語が含まれるエントリー一覧を出力
  • --help
    コマンドの実行に使えるオプションを表示
    書式:コマンド --help

Linuxのファイル操作

ファイルの種類

  • テキストファイル
    文字列(文字コード)が書かれたファイルのことをいう。
  • バイナリファイル
    画像や音声ファイル、実行ファイルなど、文字コード以外の数値も含むようなファイルのことをいう。

コマンド

  • cat
    ファイルの内容を表示する。一画面に表示する。
    書式:cat ファイル名
option description
-n 行番号を付加して表示
  • less
    ファイルの中身をスクロール表示する。長いファイルを見たいときに用いる。

スクロール操作方法

command description
space or f 一画面下へスクロール
b 一画面上にスクロール
j 一行下にスクロール
k 一行上にスクロール
/単語 単語を検索。nキーで結果へジャンプ
q lessを終了
  • touch
    ファイルのタイムスタンプが現在日時に更新される。ファイルが存在しない場合、touchコマンドは中身が空であるファイルを生成する
    書式:[option]ファイル名
  • sort
    テキストファイルの中身を並び替える
    書式:sort[option]ファイル名
option description
-r 逆順でソートする
-k n n番目のデータをソートする
-n 数値としてソートする
  • rm
    ファイル・ディレクトリを削除する。実行すると本当に削除される。注意
    書式:rm ファイル名
option description
-i 処理を行うときに確認をする
-f 強制的に処理を行う
-r ディレクトリを対象とする
  • mv
    ファイルの移動・ファイル名を変更する。
    移動元(以下:(x) )がファイル名で移動先(以下:(y) )名が存在しないファイル名の場合、(y)にファイル名が変更される。
    (x)がファイル名で(y)が存在するディレクトリの場合、(x) がディレクトリ(y)の下に移動する。

書式:mv 移動元ファイル 移動先ファイル

option description
-i 処理を行うときに確認をする
-f 強制的に処理を実行する
  • cp
    ファイル・ディレクトリのコピーや複数を行う。

コピー元(以下:(x) )名がコピー先(以下:(y) )名が存在しないファイル名の場合、(x)のコピーとして(y)が作成される。
(y)が存在するファイル名の場合、(y)を(x)が上書きします。
(y)が存在するディレクトリ名の場合、(y)の下に(x)を複製します。

書式:cp[option]コピー元 コピー先

command description
-i 処理を行うときに確認します。
-r ディレクトリの中にある全てのファイル・ディレクトリに対してコピーする。
-p 元ファイルの情報を保存する。
  • ln
    リンクを張る(ファイルに別名をつけることができる)。
    長いパス名を省略したいときなどに使用する。
    デフォルトはハードリンクになる。
    • ハードリンク
      1つのファイルに複数の名前をつける
      元のファイルを削除しても消えない
      ディレクトリに対して使えない欠点がある
    • シンボリックリンク
      リンク先のパス名が書かれたファイル(ショートカットのようなもの)なので、ファイルの実体を削除したり、移動するともちろん参照できなくなる。
  • find
    ファイルがどこのディレクトリに存在するか検索できる
    書式:find パス -name ファイル名
  • which
    PATHという環境変数に含まれるディレクトリ配下のコマンドのパスを表示
    書式:which コマンド名
  • uniq
    直前の行と同じ内容があった場合、対象行を出力しない。(連続している同様の行を一行に纏める)
    書式:uniq ファイル名
  • diff
    ファイルを比較する。主に変更の有無を確認する際に用いられる。
    書式:diff[option]ファイル1ファイル2
option description
-c context diff形式で出力
-u unified diff形式で出力

プロセス・ジョブの管理

プロセスとはメモリ上で実行中のプログラムのことをいう。
ジョブとはまとめて実行されるプロセスの集合。

  • ps
    実行中のプロセスを表示する。
  • jobs
    現在のジョブの一覧を表示する
  • fg
    ジョブをフォアグラウンドにする
  • bg
    ジョブをバックグラウンドにする
  • kill
    ジョブやプロセスを終了する

標準入出力

コマンドはひとつのプログラム。
入力(標準入力という)には”標準出力”と”標準エラー出力”がある。
・標準出力
 プログラムを実行した端末にディスプレイ表示されるもの
・標準エラー出力
 エラーメッセージを書き出す先のこと

リダイレクト

コンソールに標準出力された”文字列”はリダイレクトを用いてファイルに上書きします。大なり (>)を用います。ファイルに追記したい場合はアペンド (>>)を用います。

catコマンドによるファイル生成

catとリダイレクトを用いて自由な内容のファイルを作成可能

$ cat > cat-output
Hi!
HELLO!
$

# (ctrl + Dで終了)
# 結果:記述した文字列を含んだファイルが生成される

標準エラー出力とリダイレクト

リダイレクトを用いて、任意のファイルにエラーメッセージを書き込むことができる。
また、”1"を指定することで標準出力を書き込め、”2”を指定することで標準エラー出力を書き込める

$ ls -l sample > ls-output

ls: sample: No such file or directory

 このようにエラーは通常は標準出力(ターミナル上に表示)されるが”2”を指定するとエラー出力を書き込むことができる

$ ls -l sample 2>ls-sample-output

# (エラー出力をls-sample-outputにリダイレクト)

パイプ

コマンドとコマンドをパイプ(|)でつなげることで、パイプの前のコマンドを後ろのコマンドの標準入力とすることができる。

grepコマンド

ファイルの中からデータを検索できる。
また | grepとすることで入力されたデータに対して検索を行うことができる。(lsコマンドと合わせると便利)
書式:grep[option]検索条件[指定ファイル]

option decription
-e 文字列を検索パターンとして扱う
-i 検索パターンと入力ファイルの双方で大文字小文字の区別を行わない
-v 検索パターンとアンマッチな行を選択する

グループとユーザ

ユーザ系

  • useradd
    新しくユーザを作成する
    書式:useradd ユーザ名
option description
-c コメント コメントを指定する
-g グループ名 プライマリグループ名を指定する
-G グループ名 補助グループ名を指定留守
-d ホームディレクトリを指定する
-s シェルを指定する
-u ナンバー ユーザIDを指定する
  • usermod
    ユーザのアカウントを変更
    書式:usermod ユーザ名
  • userdel
    ユーザを削除する
    書式:userdel ユーザ名

グループ系

複数のユーザの権限を纏めて扱う

  • groupadd
    グループを作成する
    書式:groupadd グループ名
option discription
-g ナンバー グループIDを指定する
  • groupmod
    グループの定義を変更
    書式:groupmod [option] [変更内容] 変更対象グループ
option description
-n 既存のグループ名を変更する
-g 既存のグループIDを変更する

sudo

sudoを使うと特別な権限でコマンドを実行できます。
例えば、root権限でコマンドを実行したいときにsudoを使うと、rootになることなくコマンドを実行できます。

sudoコマンドを使うときには、パスワードを入力する必要があります。
再度sudoコマンドを使うと、15分以内であればパスワードの再入力は不要です。

option descripton
-l コマンドの実行権限レベルを表示
-v sudoが出力するメッセージを詳細に表示
-k 現在のsudoセッションを終了
-s rootシェルを取得
-u 別ユーザでコマンドを実行

ユーザ権限・アクセス権限

ファイル作成者のユーザIDとグループIDがファイルの所有者と所有グループ名となる。

  • chown
    ファイルの所有者を変更
    書式:chown ユーザ [.group] ディレクトリorファイル
option descripton
-R ディレクトリを対象とする
  • chgrp
    ファイルの所有グループを変更
option descripton
-R ディレクトリを対象とする
  • chmod
    ファイルのアクセス権を変更

ファイルの設定アクセス

ファイルのモードとして【読み込み・書き込み・実行】の3つの権限がある。ls -lコマンドで表示される1つ目のカラムがファイルのモードを表している。

items description
r 読み込み
w 書き込み
x 実行またはディレクトリ移動

chmodを使用し8進数でモードを指定する

user group other
permission r w x
octal 4 2 1
set val 合計値 合計値 合計値

モードは u(所有ユーザ),g(所有グループ),o(その他ユーザ)に対して、r(読み),w(書き),x(実行)を 設定(” = “)したり、加えたり( “ + “)、取り消したり (” - “ )できる。u,g,oの全てに同じ権限を指定するときはa(All)を指定する。
8進数で変更する場合はユーザカラムで選択したモードの合計値を指定する。

パーミッションを設定してファイルを作成する

  • umask
    指定したパーミンションでファイルを作成する
    書式:umask [8進数のモードのマスク値]
    umaskで指定できるマスク値は、読み書き実行のパーテンション(666)から設定したいパーミッションを引き算することで求めることができる。

おわりに

ズラズラと書いていきましたが、「こんなのあるんだ〜」くらいの認識で大丈夫です。いざ必要となったときに「そういえばこういうコマンドあったな・・・」と思い出せることができれば大丈夫です。
また、もっとLinuxを深堀りしたい方はLinucの勉強をおすすめします。無事に禿げそうになるくらいの難易度ではありますが。

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2