KENスクールブログ-パソコンスクール パソコン教室 KENスクール

Linux

viエディタ

viエディタ

LinuxをはじめとするUNIX系OSでは、ユーザーが作成する文書やプログラムソースだけでなく、各種ドキュメントや非常に重要なシステム設定ファイルに至るまで、多くのファイルがテキスト形式になっています。

これらのテキストファイルに変更を加えたり、新しく作成するためには、テキストエディタが必要となります。

 

図1 図12

 

テキストエディタとは

テキストファイルを作成、編集、保存するためのソフトウェアです。

Microsoft Windowsのメモ帳や、Mac OS Xのテキストエディットが該当します。

Linuxでは古くから使われているテキストエディタの一つに「vi」があります。

機能は非常にシンプルですが、動作が機敏で、ほぼすべてのUNIX系OSに付属しています。

 

viエディタの起動

「vi」はCUIで動作するテキストエディタです。 「vi」を起動するには、端末のプロンプトで「vi」コマンドを実行します。

 

図2 図3

 

モードの種類と切り替え

「vi」には「コマンドモード」、「挿入(INSERT)モード」の2つのモードがあります。

それぞれのモードへの切り替え方法と、操作内容は次のとおりです。

 

図4 図5

 

viを起動した直後は、「コマンドモード」として動作しているため、文章の入力操作は行えません。

文章の入力を行うには、挿入モードに切り替える必要があります。

 

 

コマンドモードでの操作

コマンドモードでは、カーソルの移動や文字の編集、検索、ファイル保存といったことが行えます。

 

  • カーソル移動操作

コマンドモードでは、カーソルキーを使わずにカーソルの移動を行うことができます。

主なカーソル操作は、以下のとおりです。

 

図6

 

  • 文字の編集操作

コマンドモードで行える操作として、文字の削除やコピー、貼り付けといった編集操作もあります。

主な編集操作は、以下のとおりです。

図8

 

 

  • 文字列の検索操作

viには「less」コマンドと同じ検索機能が用意されています。

ファイル内の文字列を検索するには、コマンドモードで「/」を入力します。最下行に「/」が表示されるので、その後に検索する文字列を入力して[Enter]キーを押します。

すると、一致した文字列に「検索マーカー」がつき、最初の該当文字列にカーソルが移動します。次の該当文字列に移動するには、「n」コマンドを実行します。

このとき、ファイルの終わりまで検索が実行されると、再びファイルの先頭から検索が繰り返されます。「検索マーカー」を解除するには、「:noh」コマンドを実行します。

各種サーバーサービスの設定ファイルなど、数百行以上あるような長いファイルを編集する際など、編集する項目の文字列を指定して検索すると、効率よく編集作業が行えます。

 

図9

 

  • viの終了、ファイルの保存

viエディタで編集中のファイルを保存したり、viエディタを終了させるには、「コマンドモード」で下記の操作を行います。

 

図10

 

「:q」と「:q!」では動作が異なります。「:q」の場合はファイルに何も変更を加えていない場合に限り、viを終了することができます。

 

図11

 

一つでも変更を加えた場合は、「:q!」でなければ終了することができません。

また、ファイル名を指定して保存後に終了する場合には、「:wq」の後に半角スペースを入れ、ファイル名を指定します。

 

図12

 

いかがでしたでしょうか?

 

「Vim」には、チュートリアル形式で学べるコマンドとして「vimtutor」が用意されています。

25分から30分程度で、「vim(vi)」コマンドの基本操作を学習することができますので、Vim(vi)に慣れるためにぜひ活用してみてください。

 

図13

 

※チュートリアルを終了するには、「:q」コマンドを実行します。

この記事に関連する講座

Linux操作の第一歩はここから

詳しくはこちら


カテゴリー: Linux ネットワーク 資格

初心者向け!Linux操作技術~標準入出力とリダイレクト~

laptop-820274_640

Linuxのコマンド入力はマウス操作に慣れている私たちにとっては、とっつきにくいもの。当記事は、Linuxをこれから学習していこうという方に向けて機能をわかりやすくご紹介いたします。

標準入力、標準出力

コンピュータの世界には、「入力」→「処理」→「出力」という基本的な流れがありますが、Linuxのコマンドも同様で、下図のようにコマンドが入力データを受け取って、処理した結果を出力するという流れがあります。この流れをストリームと呼びます。

01

この時、特に指定しなかった場合に利用されるデータの入力元を標準入力、データの出力先を標準出力と呼んでいます。また、エラーが発生した場合のエラーメッセージは、標準エラー出力として別に扱われています。

02

Linuxはストリームを番号で識別しており、デフォルト設定と合わせると下表のようになります。

番号 デフォルト
標準入力 キーボード
標準出力 端末画面
標準エラー出力 端末画面

基本的にLinuxのコマンドは、標準入力、標準出力、標準エラー出力を処理するように作られていますが、コマンドによっては、標準入力を受け取らないものや標準出力を行わないものもあります。
lsコマンドやdateコマンドを実行すると端末に結果が表示されますが、mkdirコマンドやtouchコマンドを実行しても端末には何も表示されません。

リダイレクト

リダイレクト記号を使用するとストリームの入出力先を変更することができます。この機能をリダイレクト、またはリダイレクションと呼びます。

例)catで開いたファイル内容を、他のファイルに書き込む。(標準出力のリダイレクト)

$ cat /etc/passwd > passwd.bak

リダイレクト記号の基本的な書式は次のようになります。

書式 説明
コマンド > file コマンドの標準出力をfileに書き込む
コマンド >> file コマンドの標準出力をfileに書き足す
コマンド < file コマンドはfileの内容を標準入力として受け取る
コマンド 2> file コマンドの標準エラー出力をfileに書き込む
コマンド > file 2>&1 標準エラー出力の出力先を、標準出力の出力先と同じとする

ここでいうコマンドとは、それぞれリダイレクトするストリームに対応したコマンドであればなんでもかまいません。

例①

$ echo sample > sample1.txt
$ cat sample1.txt
sample
$ echo sample1です > sample1.txt
$ echo sample1.txt
sample1です

リダイレクト記号「>」を使用するとコマンドの標準出力を指定したファイルに書き込むことができます。しかし、その際既存のファイルを指定した場合、確認なしで上書きされてしまい、元のデータが消えてしまいますので注意が必要です。
リダイレクト記号「>」は「1>」の「1(標準出力の番号)」を省略したものです。

例②

$ echo sample2ではありません >> sample1.txt
$ cat sample1.txt
sample1です
sample2ではありません

リダイレクト記号「>>」を使用すると出力のリダイレクトを行う際に上書きせず、既存のデータの末尾に追記する形になります。

例③

$ cat < sample1.txt
sample1です
sample2ではありません

リダイレクト記号「<」を使用すると標準入力の代わりに指定したファイルの中身を入力データとして処理します。
リダイレクト記号「<」は「0<」の「0(標準入力の番号)」を省略したものです。

例④-1

$ cat @@@ 2> err.txt
$ cat err.txt
cat: @@@: そのようなファイルやディレクトリはありません
$ cat sample1.txt 2> err.txt
sample1です
sample2ではありません

リダイレクト記号「2>」を使用するとエラー発生時のメッセージ(標準エラー出力)を指定したファイルに書き込みます。しかし、あくまでエラー出力のみを対象とするので、エラーが発生しない場合は、標準出力として端末にコマンドの結果が表示され、指定したファイルには、空のデータが書き込まれるため、指定したファイルは空ファイルになります。

例④-2

$ cat sample1.txt @@@ 2> err.txt
sample1です
sample2ではありません
$ cat err.txt
cat: @@@: そのようなファイルやディレクトリはありません

この場合、”sample1.txt”は存在するファイルなので、標準出力に出力され、”@@@”は存在しないファイルのため、エラーメッセージが出力されますが、「2>」のリダイレクトにより”err.txt”にエラーメッセージが出力されます。

例⑤

$ cat sample1.txt @@@ > result.txt 2>&1
$ cat result.txt
sample1です
sample2ではありません
cat: @@@: そのようなファイルやディレクトリはありません

リダイレクト記号「2>&1」を使用することにより、標準エラー出力は、標準出力と同じ場所にリダイレクトされます。
この場合、左側の「>」によって標準出力は、”result.txt”にリダイレクトされているので、標準エラー出力も同じく”result.txt”にリダイレクトされます。

いかがでしたでしょうか。
Linuxは基本的にマウス操作をすることがありませんので、はじめは文字(コマンド)入力でのコンピュータ操作に戸惑うかもしれません。
慣れるまで何度も何度も繰り返して練習しましょう。


カテゴリー: Linux ネットワーク