01Linuxの基本(操作方法)

01Linuxの基本(操作方法)
1.ディストリビューションの種類
Linuxにはいくつかのディストリビューションがあります。
学習用にLinuxをインストールしてみようと思ったときに、まずどれを選んで良いのか迷ってしまいます。結論から言えばどれを選んでも大丈夫なのですが、いくつかよく名前を聞くディストリビューションを紹介します。
  • Red Hat Enterprise Linux
Red Hat社が開発・販売する有償ディストリビューションです。RHELとよく略されます。Red Hat社では7年間という長期のサポートやエンジニア育成のためのトレーニングも提供しています。
  • Fedora Core

Fedora Projectによって開発が進められているディストリビューションです。開発サイクルが早く、新機能もいち早く搭載されることが特長です。とにかく最新の機能に触れてみたいのであればオススメのディストリビューションです。
ただし、バグが多いのも事実で、公開目的のサーバには適しているとは言えません。

  • CentOS
Red Hat社が開発するRHELをベースとした、完成度の高いフリーのディストリビューションです。サーバ用途に好んで使っているユーザーも多く実習でもこれを使います。
  • Ubuntu
デスクトップが特徴的な人気のあるディストリビューションです。XによるGUI環境での利用を前提とし、印象的なデスクトップ画像の他、フォントもオリジナルのものが利用されています。
  • Debian GNU/Linux
Debian Projectによって開発が進められているディストリビューションで、根強い人気があります。インストールはやや難しいですが、いくつかあるLinuxディストリビューションの中でも「軽い」ということに定評があります。
2.Linuxの特徴
コンピュータには大きく分けて二つのシステムから構成されています。
ハードウエアソフトウエアです。
ハードウエアとは、コンピュータの機械そのもののことを指します。
ソフトウエアとは、ハードウエアで動作しているプログラムを指します。
ソフトウエアにも大きく分けて2 種類あります。
基本ソフトウエア応用ソフトウエアです。
基本ソフトウエアはOperating System(OS) のことを指します。
応用ソフトウエアはその上で動くアプリケーションを指します。
例.Windows LinuxMac OS X は基本ソフトウエア
Word ExcelPowerPointは応用ソフトウエア
それでは基本ソフトウエアとはどんな役割を果たすのでしょうか。
基本ソフトウエアは応用ソフトウエアが動作する際に必要な「部品」を提供したり、ハードウエアという「資源」を管理するという役割があります。
「部品の提供」とは...応用ソフトウエアが必要なウィンドウ、メニュー、ツールバー、アイコン、ファイルを開いたり保存する際に出てくる確認メッセージなどがあります。これらの機能を各応用ソフトウエアが別々に用意していたのでは、応用ソフトウエアの作成が大変になってしまいます。そこで、このようにさまざまな応用ソフトウエアが使うであろう共通部品を提供するのが基本ソフトウエアの大事な役割の1 つです。
「資源を管理する」とは...この場合の「資源」とは、コンピュータが提供できる機能・能力を示しています。例えば、今皆さんがお使いのPCではワープロや表計算の基本ソフトウエアを同時に動かすことができます。本来、コンピュータは同時に1 つの処理しかできません。それにもかかわらず同時に動作させることができるのは、各ソフトウエアを非常に短いタイミングで切り替えている(マルチタスクの機能を有している)からです。これは基本ソフトウエアが司っている機能です。

Linux は基本ソフトウエアの一つです。では、Linuxはどういった仕組みで動作するのでしょうか。
さきほどソフトウエアは、基本ソフトウエアと応用ソフトウエアの2 つに分かれると説明しました。基本ソフトウエアは、さらに2 つの領域に分かれます。それらを「カーネル」と「ユーザランド」といいます。
カーネル
カーネルとはオペレーティングシステムの中核となる部分で、ハードウエアと直接やりとりするなどもっとも中心的な機能を受け持つ部分です。カーネルはハードウエアの違いを吸収して、プログラムがどのようなハードウエア上でも同じように動作する役割があります。
ユーザランドとシェル
ユーザランドとはOS が動作するのに必要な、カーネル以外の部分のことです。ファイルシステムやファイル操作コマンド、シェルなどの基本的なソフトウエア群を指します。
ユーザーランドとは大雑把に言えばOSに標準搭載されている各種コマンドやユーザーインターフェイス、一般プログラマーが利用できるOS標準のAPIなどのソフトウェア群の総称のことです。
Linux は、基本的にはコマンドで操作します。コマンドはユーザランドで動作します。また、Linux X Window System GNOMEKDEXfce などのデスクトップ環境を導入することで、Windows Mac などのようにマウス入力による操作が行なえるようになります。
コマンドは文字通り「命令」のことで、さまざまな用途のコマンドがあります。Linux にはシェルという対話型のコマンド入力環境が用意されています。シェルは入力されたコマンドを理解し、実行します。
ェル自体には大きく2 つの機能があります。1 つは、前述の通りコマンド入力を受け付けることです。もう1 つはシェルスクリプトの実行にあります。シェルスクリプトとは、「コマンドの入力を自動化する」ためのものです。1 つのファイルにコマンドを1 行ずつ記述して作成します。作成したシェルスクリプトを実行することで、コマンドの実行を自動化することができます。また、作成したシェルスクリプトをサーバーの起動時に実行したり、数時間毎に実行したりすることができます。
3.Linuxシェル構造



シェル(Shell)とは

・コマンドライン・インタプリタと呼ばれる、入力されたコマンドを順次実行するソフトウエア。

・ユーザが指定したコマンドをカーネルに実行してもらい、結果をユーザに返す機能を実装している。

・ユーザとLinuxカーネルを橋渡しするソフトウエア。

・コマンドラインシェルもあればグラフィカルシェルもある。

・CentOSではコマンドラインシェルとしてbash(Bourne Again SHell)が使われる。
(bashは現状Linuxの標準シェルとなっている)

・シェルはログイン認証が通れば起動される。

・起動するシェルの確認は cat /etc/passwd のエントリの行末

コマンドプロンプトとカーソル

[ictu1600@centos7t ~ ]$■
↑          ↑
プロンプト      カーソル
[ユーザ名@ホスト名:カレントディレクトリ]$:一般ユーザ
                     #:管理者(root)

※Ctrl+s ターミナルはロックできる 解除はCtrl+q


コマンドの書式

$ コマンド名 [-オプション] [引数(ファイル名等)]



コマンドラインテキストの補完機能

コマンドの履歴機能

↑キー     コマンド履歴を一つずつ前に戻って表示

↓キー     コマンド履歴を一つずつ新しい履歴に進んで表示


$ history  コマンド履歴に格納されているコマンド一覧の確認

$ !ヒストリ番号  指定したヒストリ番号のコマンドを実行




!!     直前のコマンドを再実行




コマンド履歴の検索

Ctrl+R     インククリメンタルサーチモード(historyと一緒に使うとわかりやすいかも)



さらにCtrl+Rで履歴のヒットをさかのぼる




ディレクトリを表すメタキャラクタ

~     ホームディレクトリ(チルダ

..    一つ上のディレクトリ(ドットドット)

.     カレントディレクトリ(ドット)





4.Linuxの主要なディレクトリ構造
LinuxシステムはFHSFilesystem Hierarchy Standard)と呼ばれる規格に基づいてディレクトリの構成が決められています。
ファイルは必ずディレクトリに入れられているので、必ず/から始まる記述が可能です。
Linuxのディレクトリ構成には緩やかな決まりがあります。
Linuxの主要なディレクトリ
/     ルートディレクトリ -----------------+-----boot      Linux起動時に必要なファイルを保存
                                                                |
                                                                +-----root   rootユーザのホームディレクトリ
                                                                |
                                                                +-----home ----+  user1  user1ホームディレクトリ
                                                                |                       |       ログイン直後のカレントディレクトリ
                                                                |                       +  user2  user2のホームディレクトリ
                                                                |                       |       ログイン直後のカレントディレクトリ
                                                                |                        .................
                                                                +-----etc   Linuxの設定ファイルを保存
                                                                |
                                                                +-----bin        システムのメンテナンスに必要な最低限のコマンド群
                                                                |
                                                                +-----sbin  おもにシステム管理者が使うメンテナンス用コマンド群
                                                                |
                                                                +-----user -----+  bin          その他各種プログラムなどのコマンド群
                                                                |                       |
                                                                |                       +  sbin   その他管理者用のコマンド群
                                                                |
                                                                +-----dev  デバイスファイル
                                                                |
                                                                |
                                                                +-----lib   共有ライブラリファイル
                                                                |
                                                                |
                                                                +-----var    可変的なデータ(ログ・データベース・Webサイト等)
                                                                |
                                                                +-----tmp    各種アプリケーションの一時ファイル
                                                                |         で定期的に削除される
                                                                .....................
5.ファイルとディレクトリの操作
さて、いよいよファイル操作です。最低限知っておかなければならないファイル操作コマンドとして、次の8つを取り上げます。
  • ディレクトリ内にあるファイルの確認(ls)
  • カレントディレクトリの確認(pwd)    ・カレントディレクトリの変更(cd)
  • ファイルの作成(touch)         ・ディレクトリの作成(mkdir)
  • ファイルのコピー(cp)                  ・ファイルの移動(mv)
  • ファイルの削除(rm)
各コマンドの書式を見ていきましょう。
●ディレクトリ内にあるファイルの確認
$ ls [-al] [パス]
lsコマンドはディレクトリ内にあるファイルを確認するコマンドです。lsとだけ入力しコマンドを実行すると、カレントディレクトリの中のファイル を確認することができます。カレントディレクトリ以外のディレクトリの中を確認する場合はlsコマンドの後にディレクトリ名を指定します。
lsコマンドはファイル名のみを一覧表示しますが、-l(スモールL)オプションを指定すると更新日、サイズなどの情報も表示されます。
また、-aオプションを指定すると隠しファイル(ファイル名の先頭に.が付くファイル)も表示することができます。
●ファイルの作成
$ touch ファイル名
touchコマンドはファイルを作成するコマンドです。作成されたファイルには中身はありません。エディタなどを使ってファイルを作成することもできますが、特に編集の必要がなく、とにかくファイルさえあれば良いという状況ではこのコマンドを使う方が手っ取り早いでしょう。
●ディレクトリの作成
$ mkdir ディレクトリ名
mkdirコマンドはディレクトリを作成するコマンドです。mkdirコマンドの後に、新規に作成するディレクトリ名を指定します。存在するディレクトリと同名のディレクトリは作成できません。
mkdirコマンドは、カレントディレクトリの1つ下の階層として、指定されたディレクトリを作成します。

●カレントディレクトリの確認

$ pwd
pwdコマンドはカレントディレクトリを確認するコマンドです。現在のディレクトリがファイルシステムのどの位置にあるのか絶対パスで表示されます。
●カレントディレクトリの変更
$ cd ディレクトリ名
$ cd ..
cdコマンドはカレントディレクトリを変更するコマンドです。cdコマンドの後に、変更先のディレクトリ名を指定します。存在しないディレクトリを指定することはできません。
ディレクトリは階層構造で管理されています。cdコマンドを使ってひとつ上の階層に移動する場合は少し特殊な指定をします。
具体的にはcdコマンド の後に「..(ドット2つ)」を指定します。この「..」はひとつ上の階層のディレクトリを表す記述です。
また、「.(ドット1つ)」でカレントディレク トリそのものを表します。この2つの表記法は便利ですので覚えておくと良いでしょう。
●ファイルのコピー
$ cp コピー元ファイル名 コピー先ファイル名
cpコマンドはファイルのコピーを行うコマンドです。cpコマンドの後にコピー元、コピー先の順でファイル名を指定します。コピー元は存在するファイルでなければなりません。コピー先に指定したファイルが存在する場合、そのファイルは上書きされます。
●ファイルの移動
$ mv 移動元ファイル名 移動先ファイル名
mvコマンドはファイルの移動を行うコマンドです。cpコマンド同様、移動元、移動先の順でファイル名を指定します。ファイルを移動する場合、他のディレクトリにファイルを移動させることがほとんどでしょう。その場合は移動先として「ディレクトリ名/ファイル名」というパスの形式で指定をすることが 可能です。
また、同一ディレクトリ内でファイルの移動を行うことによって、実質的にファイル名を変更することができます。
●ファイルの削除
$ rm [-f] ファイル名
$ rm [-f] -r ディレクトリ名
rmコマンドはファイルやディレクトリの削除を行うコマンドです。rmコマンドの後に削除したいファイル名を指定します。通常、削除前に本当に削除するかどうかが問われます。このメッセージを出さず、すぐにファイルを削除したい場合は-fというオプションを付けます。また、ディレクトリを削除する場合は-rオプションと共に、削除したいディレクトリ名を指定します。

6.Linux基本操作

では、これらのコマンドを実際に使って、一通りの操作を行ってみましょう。
スクリーンショットを載せていますので、確認しながら進めて下さい。
はじめに、プロンプトを確認して下さい。カレントディレクトリが~(ホームディレクトリ)の状態で作業します。
 まずはlsコマンドでディレクトリの中を確認してみましょう。
(1)
表示可能なファイルはありません。 ls alではいかがでしょうか?
ファイル作成
では、1つファイルを作成してみましょう。touchコマンドでsample1.txtというファイルを作成します。
(2)
作成したファイルができているかは、lsコマンドで確認すると分かります。
白文字で表示されているのがファイルです。
ディレクトリ作成
次はディレクトリの作成です。mkdirコマンドでotherディレクトリを作成します。
(3)
lsコマンドで確認して下さい。otherというディレクトリができていることが分かります。ディレクトリは青文字で表示されるのがわかります。
このotherディレクトリにカレントディレクトリを変更してみましょう。cdコマンドです。
(4)
移動できたら、プロンプトを確認して下さい。カレントディレクトリ表記が「other」に変わっています。

このディレクトリは作成したばかりで、中にはファイルも何もありません。lsコマンドで確認しても何も表示されないことが分かります。
(5)
では、touchコマンドでファイルを作成してみます。
(6)
ファイルのコピー
次にcpコマンドで作成したsample2.txtを別の名前でコピーしてみましょう。
(7)
lsコマンドで確認するとsample3.txtというファイルができていることが分かります。
ホームディレクトリに戻りましょう。1つ上の階層に移動するので「..」を指定します。
(8)
先ほど、otherディレクトリ内に作ったsample3.txtを、ホームディレクトリに移動させましょう。ファイルの移動にはmvコマンドを使います。
(9)
移動元ファイルはotherディレクトリの中のsample3.txt、移動先はカレントディレクトリという指定です。移動できたかどうかはlsコマンドで確認します。
ファイル名の変更
mvコマンドはファイル名の変更にも使えます。その場合、同一ディレクトリ内で行うことがポイントです。sample3.txtをother.txtというファイル名に変えてみましょう。
(10)
lsコマンドで確認すると、ファイル名が変更されているのが分かります。
ファイルとディレクトリの削除
では、最後はファイルとディレクトリの削除です。ディレクトリを削除する場合は-rオプションを忘れないようにしましょう。
(11)
【ファイルの削除】
(12)
【ディレクトリの削除】


ファイルの内容表示

(13)
【ファイルの内容を表示する】

cat [オプション] [テキストファイルのパス]
-n     nオプション付きで行番号を表示する

catコマンドはリダイレクションと組み合わせて使用されることが多い
引数でファイルを指定しないと入力はキーボードから行われる

cat > 新規のファイルパス

上記で新規のテキストファイルを作ることができる
(入力終了はCtrl+D


cat コピー元ファイルのパス > コピー先ファイルのパス

上記でファイルをコピーすることができる






さ て、ひとしきりファイル操作の方法を見てきましたが、いかがでしたか?普段はマウスをドラッグしてファイルコピーなどを行っているので、コマンドでの操作 は難しく感じたり、煩わしく思えたかも知れません。しかし、慣れてくるとコマンド操作の方が断然楽です。右手がキーボードとマウスを行き来するのは意外と作業効率を下げます。
また、ここでは紹介しなかったオプションも各コマンドには存在します。後ほどLinuxコマンドリファレンスを用いてゆっくりと確認してください。