教材

Linux

Linuxとは

簡単にいうと「Windows 10」や「Mac OS」と同じ「OS」です。単純にWindowsやMacの仲間だと思っていただければイメージが湧きやすいです。

Linuxは比較的規模の大きなシステムや、WEBプログラミングでサーバーの操作をするときによく使われます。
Linuxの操作は基本的にマウスでポチポチと操作する「GUI方式」ではなく、黒い画面でコマンドを打って(キーボードだけで)作業していく「CUI方式」というものになります。

なぜLinuxを使えるようになる必要があるのか。それは、LinuxはサーバーOSとして一般的に広く使われており、Linuxのコマンドが使えないと何も出来ません。Linuxは多くの現場で使われているのでしっかり覚えましょう。

使用するツール

本来ならLinuxOSをPCに入れていきます。
Linuxディストリビューションを選んで利用します。
現場で使われているLinuxディストリビューションにはUbuntu(ウブンツ)やCentOS(セントオーエス)があります。
※Linuxディストリビューションとは、Linuxというシステムをインストールや利用できる状態で提供しているツールです。

Linuxディストリビューション参考サイト
https://agency-star.co.jp/column/linux-distribution

今回は上記のような環境を用意しなくてもLinuxコマンドを扱えるWebVMを使用します。

ブラウザ上で仮想環境を構築し、CUIでLinuxコマンドを使用できるWebアプリケーションです。
https://webvm.io/

よく使うコマンド

試せそうなものは実際にWebVMでコマンド操作してみてください。

下記に載っている使い方はあくまで基本的な使い方です。 それぞれのコマンドにはオプションというものが存在しており(lsでいうところの-aなど)、追加の操作を指定することができます。 オプションなどの詳しい使い方はWebで調べてみましょう。 必ずしも全てのオプションを覚える必要はなく、都度検索して使えるようになっていればOKです。

■ディレクトリ/ファイルの作成 
mkdir 

test_folderというフォルダを作成したい場合
$ mkdir test_folder

touch

test.txtというファイルを作成したい場合
$ touch test.txt

■階層の移動 
cd

userという階層に移動する場合
$ cd /user 

■階層の確認
pwd

そのまま使用
$ pwd

■ファイル/ディレクトリの確認
ls (-a)

カレントディレクトリの中身を確認
$ ls

cat

test.txtというファイルの中身を確認(全て表示)
$ cat test.txt

less

test.txtというファイルの中身を確認(1画面ずつ表示)
$ less test.txt

■ファイルの編集 
vi

test.txtというファイルを編集
$ vi test.txt

■ファイル/ディレクトリの削除 
rm (-r) 

test.txtというファイルを削除
$ rm test.txt
test_folderというディレクトリを削除
※ディレクトリを削除するには「-r」オプションを付けます
$ rm -r test_folder

■ファイルのコピー/移動 
cp 

testA.txtというファイルのコピーをtestB.txtという名前で作成
$ cp testA.txt testB.txt

mv

test.txtというファイルをtestAというディレクトリに移動
$ mv test.txt testA

■ログイン中のユーザーの確認 
whoami 

そのまま使用
$ whoami

■ファイルの検索 
find

testAディレクトリ内にtest.txtが存在するか検索する
$ find testA/test.txt

■ファイル内の検索 
grep

test.txtというファイルからabcの文字列を検索
$ grep abc test.txt

■ファイルの差分を確認 
diff 

testA.txtというファイルとtestB.txtというファイルの差分を確認
$ diff testA.txt testB.txt

■コマンド入力画面の操作 
history

そのまま使用でコマンドの履歴を表示
$ history

clear 

そのまま使用で画面をクリア
$ clear

■その他
|(二つのコマンドを実行)

現在いるディレクトリにあるデータのうち上から5個だけを表示
※ls -1はディレクトリ内のファイルの一覧をリストとして縦に出力するコマンド
$ ls -1 | head -5

>(コマンドの実行結果を書き出し)

lsの結果をtest.txtというファイルに書き出し(上書き)
$ ls > test.txt

Linuxを扱う上での知識

ルートディレクトリとホームディレクトリについて

PCを使用する上でルートディレクトリとホームディレクトリという言葉をよく耳にするかと思います。

  • ルートディレクトリ(/)
    • ログインしているサーバーの一番最上位のディレクトリのこと
    • 全てのディレクトリはルートディレクトリから繋がっている
    • サーバー全体の設定ファイルなど重要なファイルが保存されている
    • rootユーザー(最上位の権限を持つユーザー)しか編集できないことがほとんど
  • ホームディレクトリ(~)
    • ユーザーがログインした時に最初にアクセスするディレクトリのこと
    • 基本的にホームディレクトリ配下はユーザーが自由に操作できる

catとlessの違いと使い分けについて

  • cat
    • ファイルの中身を全て表示する
    • catコマンドは閲覧したいファイルの中身(行数)が少ない時に使う
  • less
    • ファイルの中身を一部のみ表示する
    • Enterキーでページ送りができ、「q」キーでファイル閲覧モードを抜けることができる
    • 閲覧したいファイルの中身(行数)が多い時に使う

viエディターの基本的な使い方

  • 「i」…編集モードに入る
  • 「esc」…編集モードから抜ける
  • 「(編集モードではない状態で):wq」…保存して閉じる
  • 「(編集モードではない状態で):q」…閉じる
  • 「(編集モードではない状態で):q!」…強制的に閉じる(編集内容は保存されない)

解説しているサイトです
https://eng-entrance.com/category/linux/linux-vi

コマンド操作実施

ここで実際にコマンド操作がどんなものなのか実施してみましょう。

WebVMを開き、

$ ls

と入力してEnterを押しましょう。

赤枠1行目で「ls」と入力しています。
そうすると「examples」と表示されました。
これは、現在いるディレクトリに存在するファイルやフォルダを確認できます。
ちなみに、現在いるディレクトリのことを「カレントディレクトリ」と言いますので覚えておきましょう。

次にexamplesフォルダに移動して中に何が入っているかを確認していきます。

examplesフォルダに移動に移動するには

$ cd examples

と入力してEnterを押しましょう。

「user@:」以降の表示が変わりました。
「user@:」以降はどのディレクトリにいるのかを表示しています。
先ほどは「~」となっていて、ホームディレクトリにいました。
現在は「~/examples」となり、ホームディレクトリの中のexampleフォルダにいるということです。

ここまでできましたら先ほどの、

$ ls

と入力してEnterを押しましょう。

python3やrubyと表示されました。

examplsフォルダの中に赤枠で囲ったファイルやフォルダが入っていることが確認できました。

実践

以下をLinuxコマンドを使用して実行してみましょう。

  1. ルートディレクトリに移動する
  2. 「kadai_test」フォルダを作成する
  3. 「kadai_test」フォルダの中に移動する
  4. 今自分がいる場所のパスを確認する
  5. 「test_txt.txt」ファイルを作成する
  6. 「test_txt.txt」ファイルに
    aaa
    bbb
    ccc
    と書き込む(要改行)
  7. 「test_txt.txt」ファイルの中身を確認する
  8. 「test_txt.txt」ファイルから「bbb」という文字列を検索する
  9. 「test_txt.txt」ファイルに「ddd」という文字列を追記し、保存せずに閉じる
  10. 「test_txt.txt」ファイルをコピーして「test_txt_copy.txt」ファイルを作成する
  11. 「test_txt_copy.txt」ファイルの中身を確認する
  12. 今までのコマンドの履歴を「command_history.txt」ファイルに書き出す
  13. 「command_history.txt」ファイルの中身を確認する
  14. 現在のファイル一覧を表示する
  15. 「test_txt_copy.txt」ファイルを削除する
  16. 現在のファイル一覧を表示して、削除されたことを確認する
  17. ディレクトリの中身の確認と、その内容をdirectory.txtに出力する
    ヒント:ディレクトリの中身を確認するコマンドと標準入力の内容を標準出力とファイルに出力する「teeコマンド」の2つのコマンドを実行する「|」を使って実行する