はじめに
今回は、TechZone環境を使ってLinuxの基本的なコマンドと操作方法を順を追って解説しました。7月に行われた社内の新人研修と重なる内容もありますが、初心者にも分かりやすく、私自身がつまずいたポイントなども含めて解説出来たらと思います。
目次
- 基本的なコマンド
- SSHログインと接続終了
- Linuxの基本操作
- ユーザーの作成
- ユーザーの切り替え
- ディレクトリとファイルの作成
- ファイルのコピーと移動
- タイムスタンプの変更
- ディレクトリの削除
- VIの操作
- vim基本的なコマンド
- vimtutorについて
- つまずいた点
基本的なコマンド一覧
| コマンド | 説明 |
|---|---|
| ls | ディレクトリの内容を一覧表示する |
| cd | ディレクトリの移動 |
| pwd | カレントディレクトリの確認 |
| touch | タイムスタンプの変更・空のファイルの作成 |
| mkdir | ディレクトリの作成 |
| rmdir | 空のディレクトリの削除 |
| rm | ファイルの削除 |
| cp | ファイル・ディレクトリのコピー |
| mv | ファイル・ディレクトリの移動 |
| su - | ユーザーの切り替え |
| whoami | ログインしているユーザーの確認 |
| useradd | ユーザーの追加 |
| passwd | パスワード設定 |
SSHログインと接続終了
PowerShellでSSHログインを行い、$ whoamiでログインしているユーザーを確認(itzuser)
SSHログイン ssh -i <SSH Keyファイル> -p <SSH Port> <Username>@<Public IP>

ituserから$ su -で、ルートユーザーに切り替えようとすると、su: Authentication failureが出てしまい失敗、、、

$ su -ではなく、$ sudo su -を実行しログイン成功。ログインしているユーザーを確認(root)

$ exitを2回実行(1回目はrootから、2回目はitzuserから)し、SSH接続を終了

Linuxの基本操作
ユーザーの作成
rootユーザーにログインし、ユーザーを追加しパスワードを設定する。パスワードは2回入力するが、入力した文字は見えないので注意。8文字以下だと警告が出るため、8文字以上が望ましい。ここではmaedaを追加した。
ユーザー追加 # useradd <ユーザー名>
パスワード設定 # passwd <ユーザ名>
※ちなみに、一般ユーザーからはユーザーを追加することができず、上記のようにrootユーザーからか、下記のように一般ユーザーに一時的にroot権限を与えるsudoをつけて実行する必要あり

※一般ユーザーからユーザーを追加($ sudo useradd <ユーザー名>)し、パスワードを設定($ sudo useradd passwd <ユーザー名>)。ここではappleを新規ユーザーとして追加した。

ユーザーの切り替え
rootユーザから一般ユーザーのmaedaに切り替え、ログインしているユーザーを確認(maeda)
ユーザーの切り替え # su - <ユーザー名>
ログインしているユーザーの確認 $ whoami
※一般ユーザー(maeda)から一般ユーザー(apple)へ切り替えるためには、appleのパスワードを入力する必要あり

ディレクトリとファイルの作成
まずは、現在自分がいるディレクトリがホームディレクトリ(/home/<ユーザー名>)であることを確認する。
mkdirコマンドで、ホームディレクトリの配下にsandboxというディレクトリが作成された。lsコマンドで、sandboxが作成されているか確認。
ディレクトリの作成 $ mkdir <ディレクトリ名>
ディレクトリの内容を一覧表示 $ ls

cdコマンドでsandboxに移動。先ほどは、ホームディレクトリの配下に、sandboxという1つのディレクトリを作成したが、オプションの-pをつければ、sandoboxの配下にchildまでの複数の階層を一度に作成することができる。
階層的なディレクトリの作成 $ mkdir -p <親ディレクトリ>/<子ディレクトリ>
ディレクトリの移動 $ cd <移動先のディレクトリ>

sandboxディレクトリにいる状態から、$ cd source/parent/childでchildまで移動。pwdコマンドで、childディレクトリに移動できていることを確認。touchコマンドでchildディレクトリの配下にファイルを作成し、lsコマンドで確認。
空のファイルの作成/タイムスタンプの変更 $ touch <ファイル名>

ファイルのコピーと移動
下記の図のように、先ほど作成したsandbox/source/parent/child/<ユーザー名>.txtをsandbox/target以下にコピーする

cdコマンドでホームディレクトリで移動し、pwdコマンドでカレントディレクトリの確認。$ cdに~(チルダ)がついた$ cd ~はホームディレクトリに移動することができる。
cpコマンドを使って、コピーすることができる。ここでは、ディレクトリの中身も全てコピーすることができるオプションの-pをつけた。
ファイル・ディレクトリをコピー $ cp <コピー元><コピー先>
再帰的にファイル・ディレクトリをコピー $ cp -r <コピー元><コピー先>

タイムスタンプの変更
cdコマンドで、先ほど作成したsandbox/taegetのディレクトリに移動し、lsコマンドでmaeda.txtもコピーされているか確認する。

lsコマンドのオプション-lでは、ファイルの権限や所有者、更新日時などを確認することができる。また、-aをつけると、隠しファイル(.で始まるもの)を表示することができ、-aと-lを同時につけると、隠しファイルまで含めたファイルの詳細情報を表示することが可能になる。指定方法として、$ ls -a -lのように1つずつ指定しても$ ls -alのようにまとめて指定しても同じ結果になる。
ファイル・ディレクトリの詳細情報を表示 $ ls -l
隠しファイル・ディレクトリを含め全てを表示 $ ls-a
隠しファイル含め全てのファイル/ディレクトリの詳細情報を表示 $ ls -a -l $ ls -al

ここで、上の画像のmaeda.txtの更新日時はSep 24 05:08であることが確認できる。これをtouchコマンドで$ touch -d "2000/01/02 03:04:05" maeda.txtと指定することで、の更新日時がJAn 2 2000に変更された。
任意の日時を指定 $ touch -d "yyyy/mm/dd hh:mm:ss" <ファイル名>

ディレクトリの削除
ここでは、sandbox/targetにコピーしたchildディレクトリを削除する。rmdirは空のディレクトリを削除するものなので、これを実行すると、maeda.txtが入っていたchildディレクトリは削除することができず、Directory not emptyという警告が出る。
この問題を解決するために、rmコマンドを使う。rmコマンドは、ファイルを削除するコマンドだが、オプションの-rをつけると、ディレクトリが空でなくても指定したディレクトリとその中身を全て削除することができる。
ファイルの削除 $ rm <ファイル名>
ディレクトリ内の中身含め再帰的に削除 $rm -r <ディレクトリ名>

viの操作
viとは、Linuxでテキストエディタを編集することができるコマンドのことであり、viの改良版であるvim (vi improved)では、より高度な機能を利用することができる。
viの4つのモードにはそれぞれ役割があり、カーソル移動や文字入力などが直感的にはできないため、初心者には扱いづらいところがあるが、viを起動するとNormalモードから始まり、ESCキーを押せば他の3つのどのモードからでもNormalモードに戻れるため、どのモードで作業しているのか分からなくなったら、ESCキーを押す。

基本的なコマンド
まずは、覚えておくと便利に使えるviの基本的なコマンドをまとめる。特に重要なものは太字にした。
| コマンド | 説明 |
|---|---|
| ESC | Normalモードに切り替え |
| i | Insertモードに切り替え(カーソルの位置) |
| a | Insertモードに切り替え(カーソルの直後) |
| I | Insertモードに切り替え(行頭) |
| A | Insertモードに切り替え(行末) |
| h | カーソルを左に移動 |
| j | カーソルを下に移動 |
| k | カーソルを上に移動 |
| l | カーソルを右に移動 |
| x | 1文字削除 |
| dd | 1行削除 |
| u | 直前の作業の取り消し |
| yy | 1行コピー |
| p | 貼り付け |
| :w | ファイルを保存 |
| :q | 保存しないで終了 |
| :wq | ファイルを保存して終了 |
| :q! | ファイルを保存しないで終了 |
vimtutorについて
vimtutorとは、vimを触ったことがない人や初心者でも短時間でvimの操作方法やコマンドの使い方をチュートリアルを通して学ぶことができるものだ。
vimtutorを利用するためには、vimをインストールする必要がある。ルートユーザーに切り替え、# dnf install vimを実行する。

ルートユーザーから一般ユーザーに戻り、$ vimtutorを実行する。

チュートリアルが始まる。全部でレッスン7まであり、基本的な内容から高度な内容まで段階的に学ぶことができる。

ここでは、レッスンの詳細内容は割愛するが、vimに慣れていない方はぜひこのvimtutorを活用してほしい。
つまずいた点
- 操作を間違えたとき癖で
Ctrl + Zで戻ろうとしてしまう
➡直前の作業を取り消すuコマンドをマスターしたことで解決 - いつもの感覚から消したい文字の直後にカーソルをおいて
xコマンドを実行し、意図しない文字が消えてしまう
➡消したい文字の直前にカーソルを置かないといけない - 自分がどのモードにいるのか忘れたまま作業を進めてしまう
➡ESCキーを使って一度ノーマルモードに入ってから作業を進める
まとめ
Linuxをきちんと触るのは7月の研修に続き今回が2回目でしたが、やはり練習と慣れが一番重要だと感じました。特にvimは、vimtutorで学習したおかげでコマンド操作にある程度慣れることができ、コマンドを覚えれば覚えるほど便利に使えるということを実感することができました。引き続き、基本的なコマンドのみならず更に高度なコマンドも使えるように練習したいです。





