この連載では、Linux を使いこなすためには、必須の項目と言えるテキストエディタ Vi の使い方を解説していきます。この講座が終了する頃には皆さんが使いこなせるよう、判りやすく解説します。
vi で新しいファイルを作成するには、次のコマンドを実行します。今回の例では、“hello.sh”という名前のシェルスクリプトファイルを作成します。
[hpc@z800 ˜]$ vi hello.sh
新しいファイルをviで開くと、次のような画面が表示されたかと思います。
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"hello.sh" [New File] 0,0-1 All
それでは、前回の復習を兼ねて、次の3行を入力し、“hello.sh”ファイルを作成してください。
#!/bin/sh
sleep 2
echo "Hello"
~
~
~
~
~
~
~
~
~
~
~
~
~
~
-- INSERT -- 1,1 All
正しく入力されると、このように表示されるはずです。入力が出来ない方は、コマンドモードからインサートモードに移行する必要があることを思い出すため、前回の講義内容に戻って確認してください。新規ファイルを開いて、すぐに入力を始める際に入力すべきコマンドは…[ i ] です。
シェルスクリプトの意味ですが、1行目に入力してもらった「#!」の行はshebang(シェバン)です。シェバンでは、そのスクリプトが実行され、読み込むインタプリタのフルパス(/bin/sh)を指定します。
2行目は、2秒間待つようにという指示。
3行目は、“Hello”と表示し、行送り(改行)せよという指示です。
編集後、[Esc]、[ : ]、[ w ]、[ q ]、[Enter]で vi を閉じると、この内容で、新しいファイル“hello.sh”が作成されます。
スクリプトファイルを実行するには、次のコマンドを入力します。1つ目のコマンドは、スクリプトファイルに実行権限を付与(CHange MODe + grants eXecute permissions)しています。2つ目のコマンドで、スクリプトファイルを実行します。カレントディレクトリ(今いるディレクトリ)にあるファイルを実行する際には、必ずファイル名の頭に ./ (ドット、スラッシュ)を入力する必要があります。
スクリプトファイルをこの方法で実行するには、必ず、実行権限の付与と、ファイル名の頭の ./ を忘れないようにしましょう。
[hpc@z800 ˜]$ chmod +x hello.sh [hpc@z800 ˜]$ ./hello.sh Hello
スクリプトファイルを実行すると、2秒後に Hello と表示され、コマンドプロンプトに戻ります。
Windows をお使いの皆様にはなじみの薄い言葉かもしれませんが、それぞれ、Windows でいうところの、コピー、ペースト、カットを意味しています。Yank, Put, Delete と覚えておくと、意味とコマンドの対応が取れるため、忘れにくくなるメリットがあります。
蛇足ですが、これは決して Vi だけに限ったことではなく、Linux 全般に対して言える事です。新しいコマンドに出会ったら、そのコマンドの語源を調べてみてください。
コマンド | コマンドの意味 | Windowsでの呼称 |
---|---|---|
yy 又は Y | 1行 Yank | Copy |
p | 次の行にput | Paste |
P | 上の行にput | Paste |
dd | 1行 Delete | Cut |
文書作成の時、同じことを何度も書かなければならないことが多々あると思います。この手間を省くのが、Yank&Put 機能です。
先ほど作成した“hello.sh”を Vi で、もう一度開きましょう。
[hpc@z800 ˜]$ vi hello.sh
カーソルを echo “Hello” の行のいずれかの位置に合わせ、[ y ]、[ y ] と入力してください。画面上に変化は現れませんが、1行ヤンクされています。
echo "Hello"
次に、[ p ] を入力してください。echo “Hello” の行がもう一行追加され、2行になりました。これが Put です。
echo "Hello"
echo "Hello"
では、この状態で、[ 2 ]、[ p ] と入力してみてください。先ほど Yank したバッファが未だ残っていますので、 さらに2回 Put されたと思います。
echo "Hello"
echo "Hello"
echo "Hello"
echo "Hello"
このように、Vi ではコマンドの前に数字を入力することで、そのコマンドを複数回繰り返すことが出来ます。これで、Yank&Put の実習は終了です。“hello.sh”を保存せずに閉じてください。
では、Yank&Put の理解度を応用問題でテストしてみましょう。 Vi で先ほどの “hello.sh” ファイルを開き、
#!/bin/sh
sleep 2
echo “Hello”
と書かれているところを、Yank&Putとカーソル移動だけを用いて、最小の操作で
#!/bin/sh
sleep 2
echo “Hello”
sleep 2
echo “Hello”
と書き換えてください。出来ましたか?
答えは sleep 2 のいずれかの文字にカーソルを合わせてから、[ 2 ]、[ Y ]、[↓] 、[ p ]です。
[ y ]、[ y ] の代わりに、[ d ]、[ d ] と入力すると、1行消して、後で [ p ] で put できるようになります。
以上となります。本当にお疲れさまでした。また次回お会いしましょう。
平日9:30~17:30(土曜日、日曜日、祝祭日、年末年始、夏期休暇は、休日とさせていただきます。)