※この記事は専門学校の講義用に作成されたものです
LinuxにはWindowsやmacOSと同じ様にGUIを利用した操作ができる「XWindow」という仕組みもありますが、遠隔地にあるサーバを操作する場合には「コマンド」を入力して実行する方法が一般的です。
今回は初めてコマンドを操作する方を対象に、基本的な操作方法を取り上げます。
セットアップ
今回の環境はWindows10上にVirtualBoxを入れ、そこにCentOS7のイメージをインポートします。各セットアップの手順は過去の記事を参照してください。
最初にVirtualBoxをインストール。 blog.katsubemakito.net
その後にCentOSのイメージをインポートします。 blog.katsubemakito.net
ここではそれほど高度なことは行いませんので、一般的なLinux環境であれば同様に学習することが可能です。
コマンドを実行してみる
Terminalを起動
最初にコマンドを入力するための「Terminal」を起動します。(ここではダブルクリック)
このようなウィンドウが起動します。キーボードのキーを押すとカーソルが点滅しているところに文字が入力されていきます。
コマンドを実行する
コマンドを実行するには、コマンド名を入力しエンターキーを押すだけです。ここでは現在の時刻を表示するdate
コマンドを実行してみましょう。すべて半角英字で入力してください。大文字と小文字は区別されます。
[neec@localhost ~]$ date 2020年 10月 18日 日曜日 16:49:02 JST
あとはこの応用です。Linuxには様々なコマンドが用意されていますので、利用したいコマンドを同様の手順で実行するだけです。どうです?思ったよりも簡単な気がしませんか?(・∀・)
コマンドにオプションを指定する
少し複雑なこともしてみましょう。
まずはカレンダーを表示してくれるcal
コマンドを実行してみます。以下のように現在の「月」が出力されました。
[neec@localhost ~]$ cal 10月 2020 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cal
コマンドは「オプション」を指定することで、指定した月を表示することもできます。それぞれの値は半角スペースで区切ってください。
[neec@localhost ~]$ cal 12 2020 12月 2020 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
このようにコマンドへ半角スペースで区切って値を渡してあげることで、実行する際の挙動を変化させることができます。プログラミング言語の関数で言う引数のようなものですね。
ファイルを操作する
OSのお仕事の一つにファイルの管理があります。みなさんも普段からファイルをコピーしたりゴミ箱に入れたりしてますよね。あれです。あれをコマンドラインで同じ様に実行してみます。WindowsやmacOSでは画面に表示された「アイコン」を操作するわけですが、コマンドラインはこれを「文字」で行います。
準備
最初に適当なテキストファイルを用意します。 テキストエディタを開き文字列を入力し保存します。ここでは「hello.txt」という名前で保存しました。ファイル名は基本的に半角英数字と一部の記号(ハイフンやアンダーバーなど)のみで入力しておくとトラブルに巻き込まれにくくなります。
Windowsで言う「エクスプローラー」を開き、先ほど作成したファイルが存在しているか確認します。エクスプローラー的な物の横にTerminalも配置しておきましょう。
これで準備万端です。
一覧を表示する
ファイルやフォルダ(ディレクトリ)の一覧を表示するには「ls」コマンドを実行します。「list」の略称です。
[neec@localhost ~]$ ls Desktop Downloads Pictures Templates hello.txt Documents Music Public Videos
-l
オプションを付けると作成日やファイル容量、その他の情報も表示されます。
[neec@localhost ~]$ ls -l 合計 4 drwxr-xr-x. 2 neec neec 143 10月 6 19:50 Desktop drwxr-xr-x. 2 neec neec 23 10月 6 2019 Documents drwxr-xr-x. 2 neec neec 51 10月 6 19:43 Downloads drwxr-xr-x. 2 neec neec 6 8月 27 2019 Music drwxr-xr-x. 3 neec neec 24 8月 27 2019 Pictures drwxr-xr-x. 2 neec neec 6 8月 27 2019 Public drwxr-xr-x. 2 neec neec 6 8月 27 2019 Templates drwxr-xr-x. 2 neec neec 6 8月 27 2019 Videos -rw-rw-r-- 1 neec neec 11 10月 18 17:24 hello.txt
内容を表示する
ファイルの中身をちょろっと見たいときに、cat
コマンドを使えばわざわざテキストエディタを開くまでもありません。
[neec@localhost ~]$ cat hello.txt HelloWorld
名前を変更する
ファイル名を変更するにはmv
コマンドを使います。これは「move」の略称です。Linuxのコマンドは母音を省略することがよくあります。
[neec@localhost ~]$ mv hello.txt world.txt
エクスプローラー的な物も同時に変化しましたよね。
コピーする
ファイルをコピーするにはcp
コマンドです。お察しかと思いますが元になっているのは「copy」です。
[neec@localhost ~]$ cp world.txt hello.txt
中身を開いてみると同じ物であることがわかります。
[neec@localhost ~]$ cat hello.txt HelloWorld [neec@localhost ~]$ cat world.txt HelloWorld
削除する
ファイルを削除する場合はrm
コマンド。これは「remove」が元になっています。直訳すると「取り除く」と言った意味になります。例えば塗料や接着剤を取り除く薬品を「リムーバー」と言ったりしますよね。
[neec@localhost ~]$ rm world.txt
ディレクトリを操作する
Linuxではフォルダのことを「ディレクトリ」と呼びます。名前が違うだけでWindowsやmacOSのフォルダと同じです。最初は違和感があるかもしれませんがこのあたりは慣れですね。
作成する
ディレクトリを作成する場合はmkdir
コマンドです。「make directory」の略称です。
[neec@localhost ~]$ mkdir foo
名前を変更する
ファイル名を変更したときと同様にmv
コマンドを利用します。
[neec@localhost ~]$ mv foo bar
コピーする
コピーするときもcp
コマンドを使うのですが、ファイルと同様に指定するとうまく動いてくれません。
[neec@localhost ~]$ cp bar bar2 cp: ディレクトリ `bar' を省略しています
ディレクトリをコピーする際にはcp
に続いて-r
オプションを指定する必要があります。
[neec@localhost ~]$ cp -r bar bar2
削除する
削除する場合はrmdir
コマンドです。何となくわかってきたと思いますが「remove directory」の略称です。
[neec@localhost ~]$ rmdir bar2
ただしこれはディレクトリの中が空っぽの場合のみです。ディレクトリの中にファイルが残っている場合はエラーとなってしまいます。大惨事を防ぐ安全装置ですね。
[neec@localhost ~]$ rmdir bar2 rmdir: `bar2' を削除できません: ディレクトリは空ではありません
中身が入っているディレクトリを丸ごと消すにはファイルと同様にrm
コマンドに-r
オプションを付けて利用します。
[neec@localhost ~]$ rm -r bar
Terminalをもう少し便利に使う
コピー&ペースト
一般的にWindowsでは「Ctrl+c」でコピー、「Ctrl+v」でペーストできますがTerminal上ではちょっとだけ異なります。
Terminalの「編集」メニューを開いてみると「Shift」を追加で指定する必要があることがわかります。
つまり「Shift+Ctrl+c」でコピー、「Shift+Ctrl+v」でペーストです。疲れていると私もよく忘れて慌てますw
自動的に補完する
ファイルやディレクトリ名を入力中に「タブキー」を押すと残りの文字を自動的に入力してくれます。候補が複数ある場合は、その候補を表示してくれます。 [video width="1376" height="574" mp4="https://blog.katsubemakito.net/wp-content/uploads/2020/10/cli1st-hokan.mp4"][/video]
すべてを入力するのは正直辛いのでこの補完機能は積極的に使っていきましょう。
直前のコマンドをもう一度
矢印キーの上(↑)を押す度に、過去に実行したコマンドがどんどん表示されます。実行したいコマンドまでたどり着いたらそのままエンターキーを押して実行できます。 [video width="1550" height="328" mp4="https://blog.katsubemakito.net/wp-content/uploads/2020/10/cli1st-prev.mp4"][/video]
左右キー(←→)でカーソルを移動し編集した上で実行することも可能です。
ワイルドカードを使う
ここまでの内容であれば「アイコンを操作した方が分かりやすいし楽じゃん」って思いますよね。はい、おっしゃる通りですw コマンドラインの真価はここからなのです。
準備
ファイルを以下のようにたくさん用意します。
[neec@localhost ~]$ cp hello.txt 2020-10-01.txt [neec@localhost ~]$ cp hello.txt 2020-10-02.txt [neec@localhost ~]$ cp hello.txt 2020-10-03.txt [neec@localhost ~]$ cp hello.txt 2020-11-01.txt [neec@localhost ~]$ cp hello.txt 2020-11-02.txt [neec@localhost ~]$ cp hello.txt 2020-11-03.txt [neec@localhost ~]$ cp hello.txt 2020-12-01.txt [neec@localhost ~]$ cp hello.txt 2020-12-02.txt [neec@localhost ~]$ cp hello.txt 2020-12-03.txt
以下のようにたくさんファイルが出来たでしょうか?
複数のファイルを一度に操作する
例えば12月のファイルだけ削除したいといった場合、以下のように1つづず指定しても良いのですが、これだと対象ファイルが1000個あったら1000回コマンドを打たなければなりません。
[neec@localhost ~]$ rm 2020-12-01.txt [neec@localhost ~]$ rm 2020-12-02.txt [neec@localhost ~]$ rm 2020-12-03.txt
しかし、コマンドラインでは以下のように入力すれば一発で削除することができます。対象のファイルが1000個あっても1発です。このようにコマンドラインで「*」を入力した場合にはどんな文字が来ても対象とすると言った特別な意味を持ちます。
[neec@localhost ~]$ rm 2020-12-*
このような特別な文字を「ワイルドカード」と呼びます。
1文字だけマッチさせたい
例えば各月の2日のファイルだけ削除したい場合には以下のような指定も可能です。
[neec@localhost ~]$ rm 2020-??-02.txt
「*」は一度に複数の文字列にマッチしますが、「?」は1文字だけにマッチしてくれます。状況によって使い分けましょう。