Linuxとは
UNIXから派生してつくられたられた基本ソフトウェア(OS)
Linuxの仕組み
ソフトウェアは基本ソフトウェアと応用ソフトウェアに分かれるが、
基本ソフトウェアはさらに2つの領域に分かれる
カーネル
OSの中核部分
ハードウェア(PCなど)と直接やりとりするなど中心的な役割を受け持ち、
ハードウェアが違っても、プログラムが同じように動作するよう働く
ユーザランド
OSが動作するのに必要なカーネル以外の部分
ファイルシステムやファイル操作コマンド、シェルなどの基本的なソフトウェア群を指す
このようにカーネル、ユーザランドそしてハードウェアをまとめて広義のLinux
カーネルを狭義のLinuxと呼ぶ
Linuxの操作
基本的にコマンド操作でありユーザランドで動作する
LinuxにX Windows SystemとGNOME、KDE、Xfceなどデスクトップ環境を導入する
とマウス入力による操作が可能となる
シェルとは
対話型コマンド入力環境で入力されたコマンドを理解し実行する
大きく2つの機能があり、
-
コマンド入力を受け付けること
-
シェルスクリプトの実行
シェルスクリプトとはコマンド入力を自動化するためのもので、1つのファイルに
コマンドを1行ずつ記述する。作成したシェルスクリプトを実行することで、コマンドの実行を自動化する。
ディストリビューション
Linuxをインストールするためのプログラムをまとめたものでこれを使うと簡単に
インストールが可能となる
ディストリビューター
ディストリビューションを開発する団体
Canonical(Red Hat,Debian,Projectを開発)が代表的なLinuxディストリビューターで
様々な団体からLinuxはリリースされ続けている
パッケージ
LInuxに追加機能を提供するもの
応用ソフトウェアを簡単に追加できるよう、ディストリビューターがパッケージを作り提供している
パッケージマネージャ
応用ソフトウェアを導入する場合、関連した応用ソフトウェアやライブラリが必要な場合があり、
依存したソフトウェアがさらに別の応用ソフトウェアに依存しているとなると、正しいインストールや
保管が必須となる。
また、バグの修正や改善などの更新が行われる場合は古いバージョンを削除し、新しいバージョンを
インストールするなど、これら操作は非常に困難で手間もかかる。
これら作業を簡単に行えるためのものがパッケージマネージャであり、Linuxディストリビューションには
必ず用意されている。
これでインターネットにつながっている限り最新の状態を容易に導入・更新できる。
LinuxのDL
DLに必要なもの
LinuxをDLするためにはディストリビューションであるCent OSをインストールする
Cent OSはインストール用DVDを用意してそこに入れる
-
マシン本体
いわゆるパソコン
VirtualBoxなど仮想環境でCent OSをインストールすれば元のOSは消去されない -
実装メモリ
-
DVD光学ドライブ
Cent OSの公式HPが配布しているISOファイルをDLし、Cent OSをインストールする
※ISOファイルとは
要はCDやDVDなどの中身を1つにまとめたファイルのこと
これをイメージファイルなどと呼ぶ。
-
ハードディスク
Linuxをインストールするためには約10GBの空きが必要
また、Linuxはハードディスクを初期化してインストールされるので、ハードディスクをクリアにしていいもの、
もしくはバックアップを取ってから作業を開始する -
キーボード、マウス、ディスプレイなど周辺機器
Linuxのコマンド
ファイル操作
ファイル
文書や画像などのデータをコンピュータ上に保存するための形式
ディレクトリ
複数のファイルをまとめたもの
ファイルやディレクトリの参照
ls
ファイル名やディレクトリ名を指定し情報を取得する
例えばディレクトリ名を指定した場合、その中にあるファイルやディレクトリ名の
一覧を取得できる
例)$ ls
ダウンロード デスクトップ ビデオ 画像
テンプレート ドキュメント 音楽 公開
ちなみに*や?をワイルドカードとして使うこともできる
| 記号 | 意味 | 例 | 内容 |
|---|---|---|---|
| * | 任意の文字列を表している | ls*.conf | confで終わるファイルがリスト表示される |
| ? | 1個につき1文字を示す | ls hosts.???? | hosts.denyのように4文字で終わるファイルが表示される |
ls [オプション] [ファイル]
オプションとは
コマンドにオプションをつけることで動作を変えることができる
lsオプション
| オプション | 意味 |
|---|---|
| -a | .で始まるファイル等全て(all)表示される |
| -l | 長(long)形式で出力 |
| -t | 最終更新時間(time)によってソートを出力 |
| -r | 逆順(reverse) にソートをして出力 |
オプション部分はまとめて使ったり、さらに順不同で入れ替えて表示しても同じ結果となる
$ ls-la
$ ls-al
$ ls-l-a
$ ls-a-l
上記は全て同じ意味
ただし、コマンドによっては順序と文法が細かく決まっているものもある
cp [オプション] コピー元 コピー先
$ cp src-file dst-file
-
どちらもファイル名の場合
src-fileのコピーとしてdst-fileを作成している -
dst-fileがディレクトリの場合
src-fileファイルのコピーがdst-fileディレクトリの下にコピーされる -
cpオプション
| オプション | 意味 |
|---|---|
| -i | ファイルの上書きコピーするなどコンピュータが確認のため問い合わせをする誤って上書きするのを防ぐ |
| -r | ディレクトリ内にある全ファイル•ディレクトリに対しコピーを行う |
| -p | 元ファイルの情報を保存するなど古い情報を保持したままコピーを作成したい場合に使う |
mv 移動元ファイル 移動先ファイル
移動元ファイルを移動先ファイルに移動することができる
また、名前の変更も可能
- mvオプション
| オプション | 意味 |
|---|---|
| -i | ファイルの上書きコピーするなどコンピュータが確認のため問い合わせをし、誤って上書きするのを防ぐ |
| -f | mvは一部の処理を確認のため問い合わせするがそれを無視し、強制処理を行う |
rm ファイル名
作成ファイルを削除する
- rmオプション
| オプション | 意味 |
|---|---|
| -i | ファイルの上書きコピーするなどコンピュータが確認のため問い合わせをし、誤って上書きするのを防ぐ |
| -f | 一部の処理を確認のための問い合わせを無視して強制処理する |
| -r | ディレクトリ内にある全ファイル•ディレクトリを削除する |
ディレクトリの操作
pwd
階層構造となっているディレクトリにおいて、現在どの階層にいるのかを表示する
例)
$ pwd
/home/penguin
現在homeディレクトリの中のpenguinディレクトリにいるという意味
/ はディレクトリの区切りを示している
cd [ディレクトリ名]
現在いるディレクトリを変更することができる
cdの後にディレクトリを指定しない場合は、ホームディレクトリに移動する
mkdir [ディレクトリ名]
- mkdirオプション
ディレクトリの作成を行う
| オプション | 意味 |
|---|---|
| -p | 指定されたディレクトリの上位ディレクトリを作成する |
$ mkdir -p dir1/dir2/dir3
dir1にはdir2が作られ、dir2にはdir3が作られる
rmdir [ディレクトリ名]
ディレクトリの削除を行う
削除する際はディレクトリ内は空でなければいけない
- rmdirオプション
| オプション | 意味 |
|---|---|
| -p | 指定した階層までのディレクトリを一括削除 |
| このコマンドがない場合は最下層のディレクトリのみ削除される |
特別なディレクトリ
| 記号 | 名前 | 意味 |
|---|---|---|
| . | カレントディレクトリ | 現在いるディレクトリ |
| .. | 親ディレクトリ | 1階層上のディレクトリ |
| ~ | ホームディレクトリ | ユーザの作業開始位置となるディレクトリ |
| / | ルートディレクトリ | ディレクトリ階層の最上位 |
絶対(パス)指定と相対(パス)指定
- 絶対(パス)指定
最上位のディレクトリ(/)からディレクトリ•ファイル名を指定すること
/use/bin/XXX
- 相対(パス)指定
現在自分がいる位置から見てディレクトリ•ファイルを指定
../bin/XXX
ファイルの内容を表示
- cat ファイル名
| オプション | 意味 |
|---|---|
| -n | 行番号を付加して表示できる |
more ファイル名 と less ファイル名
catコマンドによりファイル内容を表示しても行数が多いと表示が流れてしまう
大体の場合、25行で設定されているので、これを超えると確認ができない
その時に画面制御を行なってスクロールを止めてくれる機能をページングといい、
それを実現するコマンドをページャという
代表的なページャに
moreとlessがある
* moreコマンド
| 項目 | 内容 |
|---|---|
| スペース | 次のページに進む |
| b | 前の1画面に戻る |
| f | 次の1画面に進む |
| /単語 | 単語を検索しnキーで検索結果にジャンプ |
| q | ページャコマンドを終了 |
- lessコマンド
| 項目 | 内容 |
|---|---|
| スペース | 次のページに進む |
| b | 前の1画面に戻る |
| f | 次の1画面に進む |
| ↑ | 前の行に進む |
| ↓ | 次の行に進む |
| /単語 | 単語を検索しnキーで検索結果にジャンプ |
| q | ページャコマンドを終了 |
find パス -name ファイル名
ファイルがどこのディレクトリに存在するのか検索できる
例)
find /etc/-name hosts
find:~/etc/pki/CA/private`:許可がありません
...
...
...
/etc/hosts
/etc/avahi/hosts
これは/etc配下にあるhostsという名前のファイルを検索している
また、findはパスで指定した配下の全てのディレクトリを検索するので、
許可がないものについては一般ユーザには権限が与えられていないため、
適切な権限を持ったユーザへ切り替えが必要
コマンドのパス
コマンドの実態もプログラムである
プログラムもファイルの一種であり、/binや/sbinなどプログラム用のディレクトリに配置されている
PATHという環境変数にプログラムが配置されているディレクトリが設定されている
- which コマンド名
コマンドのパスを調べるためのコマンド
ただし、PATH環境変数に含まれていないとエラーとなる
これは管理者権限が必要なコマンドへのパスは一般ユーザでは設定されていないためwhichコマンドでは
確認できないから
例)
$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/linuxtext/bin
$ which cat
/bin/cat
上のコマンドではユーザが参照できるパスを確認しており
下のコマンドでcatコマンドが/bin配下に配置されていることがわかる
PATH環境変数内に/binが存在しているのでエラーは表示されない
ヘルプ
- コマンド --help
コマンドの実行に使えるオプションを調べることができる
例)
$ ls --help
使用法:ls [オプション]...[ファイル]...
説明文がくる...
長いオプションに必須の引数は短いオプションにも必須です
-a, --all 説明文...
-A, --almost-all 説明文...
マニュアル
- man コマンド名
Linuxにはオンラインマニュアルが含まれている
| オプション | 意味 |
|---|---|
| -k |
単語が含まれるエントリ一覧を出力 |
例)
$ man lS
LS(1) LS(1)
名前
ls,dir,vdir-ディレクトリの中身を表示する
書式
ls [OPTION]...[FILE]
-l ファイルのモード・リンクの数・所有者名・グループ名・(バイト単位の)サイズ・タイムスタンプ・
名前を(1 列形式で)書き出す。
...以下、説明文...
コマンドのマニュアルを調べることで名前、書式等やオプションの情報の他に
- 説明
プログラムに関する説明
- POSIX/GNUオプション
プログラムで利用可能なオプション - 関連項目
関連するコマンドや他機能について - 注意
注意事項やバグの報告先などの情報が書かれてている
などが表示される
セクション
マニュアル内容を分野ごとに分け指定したもの
lSのマニュアル内にあるLS(1)というのはISのマニュアルがセクション1にあるという意味
マニュアルのセクション
| 項目 | 内容 |
|---|---|
| 1 | ユーザコマンド |
| 2 | システムコール |
| 3 | システムライブラリや関数 |
| 4 | デバイスやデバイスドライバ |
| 5 | ファイルの形式 |
| 6 | ゲームやデモなど |
| 7 | その他 |
| 8 | システム管理系のコマンド |
| 9 | カーネルなどの情報 |
例)
$ man passwd
関連項目
group(5),passwd(5),shadow(5)
passwdコマンドのマニュアルを検索し、読み進めていくと、関連項目が出てくる
「セクション5にpasswdというエントリがあり参照できる」という意味
例)
$ man 5 passwd
PASSWD(5) File Formats and Conversions PASSWD(5)
NAME
passwd - the password file
実際にセクション5のpasswdのエントリを見るにはこのようにコマンドする
同じエントリでも複数のマニュアルが表示された場合は、セクションを変更して
参照できる
標準入出力
Linuxのプログラムには、「1つの入り口と2つの出口」があり、
それぞれ
-
標準入力
プログラムに入っているデータのことで、標準入力先は一般的にはキーボード -
標準出力
プログラムの実行結果を書き出す先のことを示し、
標準出力は一般的にはプログラムを実行した端末のディスプレイ -
標準エラー出力
エラーメッセージを書き出す先のことを示し、
標準エラー出力は一般的にはプログラムを実行した端末のディスプレイ
lsとコマンドを打った場合、カレントディレクトリのファイルとディクトリの一覧が画面上に表示される
このようにコマンドを実行した結果が画面上に表示されることを
標準出力に出力されたと表現する
リダイレクト
リダイレクト >
コンソールに標準出力された文字列はリダイレクトを使ってファイルに書き込むことができる
例)
$ ls > ls-output
リダイレクトコマンドを実行すると、ls-outputというファイルが作成され、lsを実行したときと同じ内容が含まれる
出力先を変更しファイルに出力を格納することができる
アペンド >>
すでにls-outputが存在しているときは、前のls-outputが削除されて新しいls-outputが作成されるので、
上書きせず追記したい場合はアペンドを使う
catコマンドとリダイレクト
内容表示に使うcatコマンドでもリダイレクトを使うことで、自由な内容で
ファイルを作成することができる
例)
$ cat > cat-output
Hello
This is cat redirect.
(「Ctrl」Dを押す)
$
cat-outputファイルの中にHello This is cat redirect.を出力
※ Linuxではデータの読み込みが最後になると、「Ctrl」DはEOF(End OfF ile)を示すキーで、
データ入力の終わりを示す
標準エラー出力
例)
$ ls -l tekitou > ls-l-output(tekitouというディレクトリ内の詳細出力をlsloutputにリダイレクト)
ls: cannot access tekitou: そのようなファイルやディレクトリはありません
(tekitouというディレクトリが見つからなかったというエラーメッセージ)
tekitouというディレクトリが存在しなかった場合、「そのようなファイルやディレクトリはありません」
というエラーメッセージが標準出力される
例)
$ ls -l tekitou 2 > ls-l-output(エラー出力をls-l-outputにリダイレクト)
コマンド中で指定している"2"は、標準エラー出力を示しており、エラーメッセージは画面に現れず、
指定したファイルに出力される
標準出力は"1"を指定
例)
$ ls -l tekitou > ls-l-output
second 2 > &1
標準出力と標準エラー出力を1つのファイルに出力したい場合はこのように入力する
パイプ
$ ls – l/usr/bin
例えばこの入力では、画面にファイル一覧が流れるが、/usr/binにはコマンドが
1000以上あるのですべてのコマンドを画面に表示しきれない
そこで
$ ls – l/usr/bin|less
コマンドとコマンドを「|(パイプ)」でつなぐことにより、パイプの前のコマンドを後ろのコマンドの標準出力とすることができる
lessコマンドをつなぐことで、ページング表示できるようになる
grep
ファイルの中からデータを検索する
「| grep」とすることで標準入力から入ったデータに対して検索可能となる
grep [オプション] 検索条件 [指定ファイル]
指定ファイルは1つでも複数でもOK
例)
$ grep abc /etc/*
/etc/services:abcvoice-port 3781/tcp
/etc ディレクトリにあるファイルで abcという文字列を含むものを検索
している
正規表現
高度な検索条件を与える表現方法
| 記号 | 意味 |
|---|---|
| ^ | 行頭を表す |
| $ | 行末を表す |
| . | 任意の一字を意味する |
| * | 直前文字の0回以上の繰り返しを意味する |
| […] | ..の中の任意の一字を意味する |
| [^…] | ..の文字が含まれないことを意味する |
| |正規表現の記号をエスケープする |
(使用例)
| 記号 | 意味 |
|---|---|
| ^a | aで始まっている行 |
| b$ | bで終わっている行 |
| a.b | aとbの間に1文字入っている |
| [ab]ab | aもしくはbに続くab(aab、bab) |
| [^ab]ab | aもしくはbで始まらない(not)で、abが続くもの(例:xab、zab等) |
例)
$ grep ^xy /etc/*
/etc/services:xyplex-mux 173/tcp
/etcディレクトリにあるファイルで行の先頭がxyで始まっているものを検索している
grepコマンド
| オプション | 意味 |
|---|---|
| -a | 文字列を検索パターンとして扱う |
| -i | 検索パターンと入力ファイルの双方で、英大文字と小文字の区別を行わない |
| -v | 検索パターンとマッチしなかった行を選択する |
例)
$ grep –i hostname /etc/*
/etcディレクトリにある、大文字又は小文字のhostnameという文字列を含むファイルを検索
例)
$ grep abc /etc/*| grep –v tcp
/etcディレクトリにある、abcという文字列を含むが、tcpという文字列は含まないファイルを検索
例)
$ ls /usr/bin/ |grep –e d$
ファイル名がdで終わるファイルを/usr/binから検索
このように標準入力からの入力をマッチさせることもできる
参考書籍
『Linux標準教科書 v3.0.2』 LPI-Japan 2019年