はじめに
3か月ほど社内講師を務めており、
面談から帰ってきた新人エンジニアさんから多かった質問として
「Linuxを使うって言われたんですけど、どう勉強したらいいですか?」
「開発でLinuxって使うんですか?」
というものがありました。
「そういえば初めは自分もそうだったなぁ」と思い出しました。
確かに研修ではJava、JSP、HTML、JavaScript、SQLなどは触りましたが、
突然「Linux使うので少し勉強してください」と言われてもチンプンカンプンですよね。
ということで!!
かなり初歩的ではありますが!!
筆者の経験・主観で、
・どんな場面でLinuxコマンドを使うのか
・知っておいた方がいいコマンド
・知っておいた方がいいショートカット
を書きなぐっていきます!
どんな場面で開発エンジニアがLinuxコマンドを使用するの?
コマンドを叩いて何かを開発するという事は基本的にはありません。
(もし仮にあったとしても新人に求められることはないはずです)
開発したアプリケーションをリモートサーバにデプロイするため
研修ではあくまでローカル環境に仮想サーバを立て、
そこにjarやwarを配置してWEBアプリを動かしていたと思います。
なぜなら一人でひとつのWEBアプリを作っており、他の人が触る必要がなかったからです。
しかし現場ではチーム開発を行います。
開発(コーディング)・UTはローカル環境で行うとしても、
それ以降のIT環境・ST環境・本番環境はそれぞれ独立したリモートサーバにjarやwarを配置する必要があります。
(今はクラウドサーバの現場も増えてきていますが、物理サーバ(Linux)を抱えて運用している現場もまだまだ多いです)
その各環境に配置するためにTeratermなどを用いて、Linuxコマンドを使用することがあります。
※筆者の場合はデプロイ用のシェルが用意されていることがほとんどでした。
障害調査のログを確認するため
保守現場に入ると障害対応という作業が求められます。
障害というのはいわゆる不具合・バグのことで、
本番環境で障害が発生すると監視チームから連絡が入り、そこからログ取得/調査/対応を行うことが求められます。
このケースでもTeratermなどで本番環境へ接続し、ログ配置場所まで移動やログを確認するためにLinuxコマンドを使用します。
よく使うコマンドたち
ではここからよく使うであろうコマンドを書いていきます。
「参画前に知っておけば大丈夫なコマンドはこれくらいかな?」くらいの感覚で列挙しています。
筆者的にまず初めは
「ディレクトリを移動して、ディレクトリの中身を確認して、対象ファイルの中身を確認する」
ができるようになれればいいかなとは思います。
その場合に使用するコマンドはcd
、ls
、more
の3つですね。
cd
cd
はディレクトリを移動するために使用するコマンドです。
Windowsでエクスプローラーを開いて移動したいフォルダをダブルクリックするとそのフォルダが開けますよね。それとほぼ同義です。
使い方は以下の通りです。
cd 移動先パス
絶対パスと相対パス
ここで絶対パスと相対パスについて触れておこうと思います。
研修などでも少なからず聞いたことのあるワードだと思いますが、cd
コマンドを使用するためには移動先パスを入力する必要があります。
そのパスの表現方法として二種類あると思っていただければ大丈夫です。
絶対パス
ルートディレクトリ(最上位のディレクトリ)からの目的地までの道筋を示したものを絶対パスと呼びます。
Linuxではルートディレクトリを/
で表現するので、/
から始まるパスは絶対パスとなります。
cd /aaa/bbb
相対パス
カレントディレクトリ(今自分がいるディレクトリ)から目的地までの道筋を示したものを相対パスと呼びます。
Linuxではカレントディレクトリの一つ上のディレクトリは..
で表現できます。
cd aaa/bbb
# 自分が /ccc にいるとしたら、 cd /ccc/aaa/bbb と同義です
絶対パスの例と違うところは移動先パスの先頭に/
があるかないかだけですが、
上記は自分がいるディレクトリからの相対パスとなります。
/
一文字で意味が異なるので気を付けましょう!
ls
ls
は自分がいるディレクトリの中身を一覧で表示したり、対象ファイルの情報を表示するコマンドです。
Windowsでエクスプローラーを開いて移動したいフォルダをダブルクリックするとそのフォルダの中身が表示されますよね。それと一緒です。
使い方はこんな感じ。
ls -ltr
これを実行するとディレクトリの中身がばーっと表示されます。それだけです。
-ltr
の部分はオプションと呼ばれる機能です。
オプションってなんだ?
Linuxでは命令を行うためにコマンドを実行します。
実はそのコマンドには不随機能があり、それらを呼び出すために使用するものをオプションと呼びます。
書き方はコマンド -オプション
となります。(コマンドの後の半角スペースが重要です)
ls -l
ls -t
ls -r
3つのls
コマンドが並んでいますが、それぞれ実行結果が微妙に異なります。
それがオプション(不随機能)の効力です。
今は「オプションていう便利機能があるんだな」ぐらいでよいと思います。
慣れてきたらオプションは各コマンドごとに用意されているので、ぜひ調べてみてください!
more
more
はテキストファイルを1画面ずつ表示させるコマンドです。
「1画面ずつ」というのは、長いファイルの場合は1画面で表示しきれない場合があります。
そんなときのために1画面分で一旦表示を停止してくれるのがmore
です。
次のページを表示したい場合はspace
を押してください。
Windowsで.txtファイルとかをダブルクリックするとメモ帳やサクラエディタで中身が表示されますよね。それと同じイメージです。
書き方は以下の通り。
more ファイル名
ファイル名とありますが、カレントディレクトリ直下のファイルしか見れないわけではありません。
絶対パス、相対パスで指定可能です。
cd /aaa # /aaa へ移動
more error.log # カレントディレクトリ直下のerror.logを表示
more /aaa/error.log # /aaa直下のerror.logを表示
2つ例を挙げましたが、どちらも実行結果は一緒です。
これでファイル閲覧もできるようになりましたね!
ちょっとしたまとめ
…ここまでcd
、ls
、more
を紹介してきました。
実はこの3つが使えるようになれば「障害調査のログを確認する」ことは可能です。
ここで紹介したコマンドはごくごく一部です。
他にもたくさんコマンドが存在するので、慣れてきたら色々使ってみましょう!!
- grep(文字列検索)
- cat(ファイル表示、連結表示)
- less(ファイル表示)
- tail(ファイル表示)
- mv(移動)
- cp(コピー)
- touch(ファイル作成)
- mkdir(ディレクトリ作成)
- chmod(ファイル、ディレクトリの権限編集)
- chown(オーナ変更)
- su(ユーザ切り替え)
- vi(viエディタ起動)
知っておくといいショートカット
ここからは知っておくと便利なショートカットを載せていきます。
間違いなく作業効率は上がるのでぜひ使っていきましょう。
↑↓(コマンド履歴)
↑
で1つ前のコマンドを表示することができ、↓
で1つ後のコマンドを表示させることができます。
実行したいコマンドが表示できたらEnter
で実行です。シンプルかつ簡単ですね!
「2回前に打ったコマンドをまた使いたい!!」
あるあるです。そんな時は↑
を2回押してみてください。
Alt + C(コピー)、Alt + V(ペースト)
そのまんまコピペのショートカットです。
大体Ctrl
+C
orV
のイメージだと思うのですが、LinuxではAlt
になるのでご注意ください。
因みにTeratermでは右クリックでクリップボードのペーストになります。
Ctrl + C(処理の強制終了)
コンソールで実行している処理をとっさに終了させたい時はCtrl
+C
を実行してみてください。
「何気なくmore
コマンドを実行したら数万行あった…!とっとと終わらせたい…!」
こんな時はCtrl
+C
を使用しましょう。
Ctrl + A(行先頭に移動)、Ctrl + E(行最後に移動)
サクラエディタでいうところのHome
やEnd
です。行頭や行の最後にカーソルを移動できます。
LinuxはCUIなのでキーボードを触ったりマウスを触ったりするだけで作業効率が落ちたりします。
カーソル移動もできるだけキーボードで済ませましょう!!
最後に
しがない開発エンジニアによるLinux記事でした。
最後までお付き合いいただきありがとうございます!
どのくらいの量にするか迷いましたが、
「これも載せた方がいい!」
「ここ間違えてる!」
等の指摘があったらコメントをお願いいたします!
ではまたどこかで!!