CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさんこんにちは。株式会社パイプラインの濱田です。前回まではファイルやディレクトリ操作のコマンドラインについて取り上げました。これまでにできるようになった操作は以下の通りです。
それでは、ファイルの新規作成や編集はどのようにして行うのか、ここに焦点をあてていきたいと思います。サーバーエンジニアとして何か新しいファイルを作成する、という機会は
がほとんどでしょう。しかし、恐らくもっとも機会が多いのは
であり、新人エンジニアから中堅エンジニアへステップアップするには、設定ファイル編集のお作法が必須スキルの最初と言っても過言ではありません。シェルスクリプトや設定ファイルのほとんどはテキスト形式のファイルですので、これらファイルの作成や編集を行うには、テキストエディタを利用することになり、コマンドライン上でテキストエディタ操作を行えるようになることは、Linuxエンジニアとしての必須スキルとなります。
コマンドライン上の代表的なエディタの1つが vi です。 viから進化したVimがインストールされている場合も、viコマンドで実行可能であり、また、基本操作を覚えて設定ファイルを数行編集するような用途であれば、viとVimの違いを意識しなくても大丈夫です。
viコマンドを引数なしで起動すると、ターミナル上のシェルはbashやzshなどからviへ遷移されます。
図 1 vi起動直後
viはすべての操作をキーボードで行うため、「コマンドモード」と「入力モード」の2種類のモードがあり、vi起動直後は「コマンドモード」となっています。入力モードへの移行方法は後ほど解説しますが、今どのモードかわからなくなったらESCキーを押すとコマンドモードへ戻ることができます。それでは、一旦viを終了させますので、「:」と「q」を入力し、エンターキーを押下します。
図 2 vi終了
viコマンドの引数にファイル名を与えて起動し、内容を保存すると、そのファイル名でテキストファイルを保存することができます。それでは、 ホームディレクトリ直下で ${HOME}/sample.txt ファイルを作成してみましょう。
図 3 vi ${HOME}/sample.txt 直後
先ほど述べましたように、vi起動直後はコマンドモードです。sample.txtに何か文字を打ち込みたいので、入力モードへ移行しますので、「i」キーを一度押下します。すると以下のような画面になります。
図 4 vi 入力モード直後
上記のように「-- INSERT --」と表示されている間は入力モードです。打ち込んだ文字列はファイルに書き込まれるテキストになります。まずは sample と打ち込んでみましょう。
図 5 sample 文字列入力直後
入力モードでエンターキーを押下すると、改行されます。
2行目は SamPle と打ち込んでみましょう。
図 6 2行目入力直後
SamPle直後の白いアンダーラインのような箇所がキーボードのカーソル位置です。しかしここでタイプミスに気がつきました。先頭文字の大文字は不自然ではありませんが、2文字目以降の大文字は不自然です。Pをpに置換修正したくなりました。viでは、特定の文字を置換する場合、置換したい文字列の真上にカーソルを移動し、置換コマンドを実行します。viにおけるコマンド操作は、入力モードではなくコマンドモードを使用します。
現在、viは入力モードですので、ESCキーを押下してコマンドモードに戻ります。続いてカーソルを2行4列目の P に移動するのですが、上下左右のカーソル移動は矢印キーではなく「H」「J」「K」「L」キーを利用します。キーバインドは以下の通りです。
キーボード |
H |
J |
K |
L |
機能 |
← 左移動 |
↓ 下移動 |
↑ 上移動 |
→ 右移動 |
SamPleと入力した直後からのキー操作は
ESC → H → H
の順に押下します。エンターキーは押下しません。すると、下記のように大文字P上にカーソルが乗っている状態になっているはずです。
図 7 カーソル状態
今現在コマンドモードになっているはずですが、今どのモードかわからない場合は、ESCを1回以上押下してください。連打してもかまいません。カーソル上の文字列を置換したい場合は「r」を押下後、置換後の文字をタイプします。「r」はreplaceの意味です。ここでは「P」を「p」に置換するので
P → p
の順に押下します。
すると以下のように
sample
Sample
と表示されているはずです。もし違う文字列で置換してしまった場合、あるいは操作そのものを無かったことにしたい場合は「u」を押下します。「u」はundoを意味します。
それではファイルを保存します。ファイルの保存コマンドは、コマンドモードで大文字の「Z」を2回押下するか
: → w → q
の順でタイプしてからエンターキーを押下することでファイルとして保存されます。どちらも好みで選択してよいかと思いますが、「Z」「Z」保存は途中でやめられないので、 /etc/hosts ファイルなどのように、ファイルを保存してデーモンの再起動を行わず即時設定が反映されるようなファイルを編集する場合は、「:」→「w」→「q」→「Enter」での保存をおすすめします。「Enter」を実行せずにESCキーを押下することで保存コマンドを中断できます。
それではシェルに戻りましたので、catコマンドに -n オプションを与えて行数表示をつけて ${HOME}/sample.txt を見てみましょう。
このように表示されているはずです。他にも行単位での文字列操作やファイル全体から単語を検索して置換するなどの多種多様な機能をもつviですが、スペースの都合上またの機会に取り上げたいと思います。興味のある方は「vi チートシート」でWEB検索してみるとよいでしょう。
実際の運用現場では、先の例のようなテキスト作成よりも、設定ファイル編集のためにviを扱うことがほとんどです。ホームディレクトリ直下にある ${HOME}/.bashrc などは自身のアカウントがファイルのオーナーですのでそのままviで編集し、保存することが可能です。
しかし、サーバー全体の設定ファイル、例えば /etc/hosts ファイルなどのように /etc ディレクトリ配下にあるファイルは、オーナーがrootであることがほとんどですので、自身のアカウントでviを起動して編集しても、viに「readonly」と表示されて保存することができません。
こうした場合には、su - コマンドでrootユーザーにスイッチしてからviで編集するか、sudoコマンドを経由してviで編集します。
ファイル編集については、次回も別の角度から掘り下げていきます。
CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes