ITエンジニア勉強会:Linuxを触ってみよう Part②
Linuxの基本コマンドを確認しよう
ではここで、Linuxにアクセスして最初に使うであろう、基本的なコマンドを簡単に紹介します。
・カレントディレクトリ(今いる場所)の絶対パスを表示「pwd」
操作している自分自身が現在いる階層をカレントディレクトリといいますが、そのカレントディレクトリの絶対パスを表示するのが「pwd」コマンドです。
「Print Working Directory」の頭文字です。
CUIでは自分が今操作できる範囲に何のファイルやディレクトリがあるのかが、コマンド無しでは把握できません。
移動した際に、今自分がどこにいるのかを忘れてしまいがちです。そんな時に「pwd」コマンドが役立ちます。
・指定したディレクトリ(やファイル)の内容を見る「ls」
指定したパスの内容を見るには「ls」コマンドを使います。
絶対パス・相対パスやファイル名を引数に渡せばそのディレクトリに何が配置されているのか、そのファイルやディレクトリの各種情報(権限など)はどうなっているのか、を確認できます。由来は「List」です。
あらゆるコマンドの中でも圧倒的な使用頻度を誇るコマンドでしょう。
・別のパスへ移動する「cd」
今いるパスから別のパスへ移動するときに使うのが「cd」コマンドで、「Change Directory」から来ています。わかりやすいですね。一階層前へ移動する「cd ..」、ホームディレクトリへ一気に移動する「cd ~」、1回前に居たディレクトリへ戻る「cd -」などを使いこなすとスピーディにディレクトリ移動ができます。
・新規ディレクトリを作成「mkdir」
新たにディレクトリを作成するときは「mkdir」を使います。
由来は「Make Directory」です。
存在しない階層に新たなディレクトリやファイルを作成することはできないため、以下のようなコマンドは無効です。
「mkdri <新しく作りたいディレクトリ1>/<新しく作りたいディレクトリ2>」
複数階層を同時に作成したい場合は、多少手間ですが、複数ディレクトリを同時に作成できる機能を使って以下のようにするとよいでしょう。
「mkdir <新しく作りたいディレクトリ1> <新しく作りたいディレクトリ1>/<新しく作りたいディレクトリ2>」
新規に作りたいディレクトリ1を作り、その配下にディレクトリ2を作るという動きを1コマンドで順に実施するイメージです。
・新規ファイルを作成「touch」
「触る」という意味の「Touch」の名の通り、本来はファイルに手を付けてタイムスタンプを更新するコマンドです。
「touch <ファイル名>」の構文で指定したファイルを更新できるわけですが、存在しないファイル名を指定した場合はファイルの新規作成となります。
注意点は、作成するファイルの中身を編集するにはechoとリダイレクト記号を合わせて使うなど、他のコマンドを必要とする点です。
最初から中身に記載していくためにファイルを作成するのであれば、viコマンドなどエディタ機能のあるコマンドを使用するのが早いでしょう。
・ファイルの中身を編集「vi」
ファイルの中身を編集するエディタを起動します。
「VIsual Editor」または「Visual Interface」が由来とされています。
入力モードとコマンドモードに2つのモードで操作が可能で、入力モードは、ファイルを開いて直接編集するモード、コマンドモードはvi独自のコマンドを使ってファイルを開かずにファイルの中身を編集するモードです。
コマンドモードにおける編集は普段使いのキーボード操作とは大きく異なります。マウスは基本的に使用できず、ショートカットキーも独自の割り当てとなるため慣れるまでに時間がかかるでしょう。必ず編集前にファイルのコピーを作ってバックアップする癖をつけてください。
・ファイルの中身を表示する「cat」
viなどでファイルを開かずに中身だけを表するには「cat」コマンドを利用します。
「cat」コマンドの由来はネコ…ではなく、「conCATenate」から来ていて、その意味は「連結」です。なぜ単語の真ん中から取ったのか。。。と思わずにはいられない由来ですが、まぁネコ好きだったのでしょう。
引数に指定したファイルの中身を標準出力するために頻繁に利用するコマンドですが、引数で複数ファイルを指定すれば、それぞれの中身を連結して表示してくれます。
本来は「cat file1.txt file2.txt > file3.txt」のようにリダイレクト記号を用いて、file1とfile2の中身をfile3に連結して書き込む、といった使い方が想定されていたようです。
viなどと違って中身を誤って書き換えてしまうリスクを減らせます。
・文字列を出力する「echo」
「echo hello」とすることでhelloの文字列を出力できます。単体で使うことは稀で、スクリプト内で使われるのが主流なほか、たとえば「echo $PATH」のように変数を表示したり、「echo Hello > hello.txt」のように文字列をファイルに出力したりする(書き込む)ために使います。
・ファイルをコピーする「cp」
ファイルやディレクトリをコピーできます。ファイルのバックアップを簡易的に取るのによく使用します。
由来は、はい、そうですね、ご想像の通り、「CoPy」から来ています。
「cp test_file test_file_bk」のように、第2引数に名前を変えたファイル名を指定してコピーを取ることができます。ファイルの中身はもちろん、権限もコピーされますが、オーナー・グループはコピーしたユーザに変更されてしまうので、要注意です。
・ファイルを削除する「rm」
ファイルを削除します。「ReMove」の省略ですね。
オプションなしではディレクトリを削除することはできません。
コマンドを実行すると、「削除しますか?」のように確認が挟まりますので、yまたはnで確定させます。注意が必要なのは、「rm」コマンドにおける削除は、いわゆる「完全に削除」であって、ゴミ箱に移すような表面的な削除ではない、ということです。一度消したら元に戻りません。最新の注意を払って用いてください。
少しでも誤削除を避けるために、ファイルやディレクトリを移動させる「mv」コマンドを使用して、「mv gomi.txt /tmp/gomi.txt」のようにして、ゴミ箱の機能を持つ/tmpディレクトリに移動させるという方法はよく使われます。ただしその場合はすぐには消えない代わりに、サーバのディスク容量の逼迫対応、悪意のあるファイル(ウイルスなど)の処理などには適しません。
・ディレクトリを削除する「rmdir」
ディレクトリを削除するために「rmdir」というコマンドがあります。
「ReMoveDIRectory」の意味です。あくまで空のディレクトリ削除用であるため、例えば中身のあるディレクトリは消せません。ディレクトリ内に何らかのファイルや別のディレクトリが存在する場合は、事前にそれらを削除してから「rmdir」を使うか、「rm」コマンドに再帰オプションを加えた「rm -r」を使います。「rmdir」にはほかに機能もないので、使う頻度はそこまで多くないでしょう。
コマンドの挙動を変える、「オプション」とは
さて、ここまで、基本的なコマンドをざっと説明してきました。
覚えるのが大変?
はい、頑張ってください!
こればっかりは覚えるしかありません。
ただ、ここまであげてきたような基本的なコマンドは、実務の中で何百回、何千回と使うことになるので、嫌でも頭に入るでしょう。
ここで、そんなあなたに、追い打ちをプレゼントしますね。
各コマンドには、その挙動を変えられる、オプションと呼ばれるものがそれぞれ付いています。
コマンドによってオプションの種類も数も名前も異なります。
オプションが何十個もあるようなえげつない便利なコマンドもあります。
例えばディレクトリの中身やファイルの詳細を表示する「ls」コマンドですが、
「ls -l」のようにオプションを付けることで、表示結果が見やすく、かつ情報が詳細に表示されます。
「ls -ltr」のようにlオプション、tオプション、rオプションを一気に指定することができ、
一覧で詳細表示、タイムスタンプ順に表示、表示順を逆転させて表示、を組み合わせる方法などもあります。
「ls -ltr」は、例えば数百行もあるようなファイル群を表示させながら、コマンドプロンプトの最下行に最新ファイルやディレクトリ見ることができるので、素早く新しい対象ファイルやディレクトリを確認することができるのです。
(rオプションがついてないと、この場合画面を上までスクロールして遡らなきゃいけませせん。)
オプションは、上記のように
「<コマンド> -<オプション>」というハイフンを使った構文で指定されます。
ハイフン1個で指定するものもあれば、ハイフン2個を使うものもありますし、
もっと厄介なことにハイフン無しで指定するものも存在します。
また大文字小文字は区別されます。
オプションの順番を問わないものもあれば、指定する順番が決まっている場合もあります。
これはコマンドごとに異なるので、「man ls」または「ls --help」などで詳細を確認しましょう。(helpオプションがついてない場合もあります。)
オプションによって、「ファイルを圧縮する」、「ファイルを解凍する」、のどちらかをオプションによって指定しないといけないケースもあります。tarコマンドです。
またパッケージのインストールとアンインストールをオプションで指定するrpmコマンドのケースもあります。
結果が真逆になってしまうので、オプションも正確に指定する必要があります。
勘やうろ覚えで指定するのは事故の元です。気を付けましょう。
わかります。
みんな同じです。
頑張って覚えましょう!
…まぁ、実務ではコピペしたり都度調べたりもしますけどね。
覚えれば覚えるほど操作が早く、安全に、また効率よくできるようになるので、実際に覚えて使いこなせるようになると楽しいものですよ。
まとめ
はい、ここまで読んでいただき、ありがとうございました。
Linuxを使いこなすには覚えることが非常に多いです。
一度にすべてを知ろうとすると記憶容量の壁にぶつかるので、少しずつできることを増やしていくのがよいと思います。
LinuxにはGUI機能を持つディストリビューションもあり、そちらはPCのOSと同じように使用することができます。
一方で、サーバ用途では、基本的にユーザ操作よりも自動的な処理の方が主体となるため、GUIが重視されない用途のサーバなどでは、CUIで設定を行っていくことが多くなります。
今回お伝えしたLinuxの基本操作の知識はCUI操作に関するものです。
そのためサーバに関わる業務以外では使わない知識にはなってしまうわけですが、Linuxの仕組みを知ることは、コンピュータの基本的な仕組みを理解することに繋がります。
コンピュータの仕組みを理解することはIT業務全般で強い武器になります。
直接関わることがなくても、ITの教養としてLinuxを使ってみることを強くお勧めします。
楽しんでLinuxを活用しましょう。
今回は以上です。