第3章 3-1 / テキスト処理

nanoでファイルを編集する

このページで叩くコマンドと到達点

前提:第2章が完了し、ユーザーyumi・グループdevteamが存在し、ホームに~/practice(空のディレクトリ)がある状態から始めます。第3章はいよいよ「ファイルの中身」を扱うテキスト処理編です。手始めに、黒い画面の中だけで文章を書いて保存できるテキストエディタnanoを使い、~/practiceの中にメモファイルを作って書き込み、保存し、追記し、上書きするところまでを体験します。

このページではSET 1〜3、合計30行のコマンドを上から順に叩きます。手打ち推奨(コピーは確認用)です。nanoの中でのキー操作(Ctrl+Oで保存、Ctrl+Xで終了など)はターミナル上のコマンドではないため、出力行として「(この操作をします)」という形で示します。

SET 1 ― nanoを起動して書いて保存する

ubuntu@lightsail: ~
  1. $cd ~/practice
  2. $pwd
  3. /home/ubuntu/practice
  4. $ls
  5. $ls -a
  6. . ..
  7. $which nano
  8. /usr/bin/nano
  9. $nano memo.txt
  10. (nanoが起動。エディタ画面に切り替わる)
  11. 今日からLinuxドリルの第3章を始めます。
  12. (Ctrl+O → Enter で保存、Ctrl+X で終了)
  13. $ls
  14. $cat memo.txt
  15. $wc -l memo.txt
  16. 1 memo.txt
  17. $file memo.txt
  18. memo.txt: ASCII text
解説 ― SET 1 で何をしたか

1行目のcd ~/practiceで、第1章から使ってきた練習用ディレクトリへ移動します。第3章の練習ファイルはすべてこの中に作るのがルールです。23行目で現在地とディレクトリが空であることを確認し、4行目のls -a(第1章で学んだ隠しファイルも表示するオプション)でも、出力例のとおり.(自分自身)と..(親ディレクトリ)以外に何もないことをあらためて確認しておきます。

5行目のwhich nano(第1章で学んだコマンドの場所を調べるコマンド)で、これから使うnanoが/usr/bin/nanoにインストール済みであることを確認しておきます。準備が整ったところで、6行目のnano memo.txtが本命です。nano※1は黒い画面の中で直接文章を書けるテキストエディタで、まだ存在しないファイル名を指定して起動すると、保存した瞬間にそのファイルが新規作成されます。起動すると画面いっぱいにエディタが表示され、下側にはよく使うキー操作の一覧(^O^Xなど)が常に表示されています。この^Ctrlキーを意味する記号です。

続く出力例の行は、実際にはコマンドではなく、nanoの画面の中でキーボードから直接打ち込んだ文章です。書き終えたらCtrl+O(Write Outの頭文字、保存の意味)を押し、ファイル名を確認する画面が出たらEnterを押して確定します。保存できたらCtrl+X(eXitの意味)でnanoを終了し、ターミナルのプロンプトに戻ります。

7行目のlsmemo.txtが実際に作られたことを確認し、8行目のcat(第1章1-4で学んだファイル中身表示コマンド)で、書いた文章がそのまま保存されていることを確認します。9行目のwc -lで行数が1であることを数値でも確認し、10行目のfileコマンド(第1章で学習済み)を使うと、出力例のとおりmemo.txtがテキスト形式のファイルであることが表示され、nanoで作ったファイルも普通のテキストファイルであることが確認できます。

ゆみちゃん
ゆみ

nanoは画面の下にキー操作がずっと表示されてるから、初めてでも迷わないのがいいところだよ! ^は「Ctrlキーを押しながら」って意味だから、^Oは「Ctrlを押しながらOキー」ってこと。慣れるまでは下の表をチラチラ見ながらでぜんぜんOK!

SET 2 ― 追記する

ubuntu@lightsail: ~/practice
  1. $cat memo.txt
  2. 今日からLinuxドリルの第3章を始めます。
  3. $wc -l memo.txt
  4. 1 memo.txt
  5. $nano memo.txt
  6. (カーソルを文末に移動して改行し、続きを入力)
  7. 3-1ではnanoの使い方を練習しています。
  8. (Ctrl+O → Enter → Ctrl+X で保存して終了)
  9. $cat memo.txt
  10. $wc -l memo.txt
  11. 2 memo.txt
  12. $head -n1 memo.txt
  13. 今日からLinuxドリルの第3章を始めます。
  14. $tail -n1 memo.txt
  15. 3-1ではnanoの使い方を練習しています。
  16. $ls -l memo.txt
  17. $less memo.txt
  18. (全文が表示される。qキーで一覧に戻る)
  19. $wc -w memo.txt
解説 ― SET 2 で何をしたか

1行目で今のファイルの中身を確認し、2行目のwc -lで行数がまだ1であることも数値で確認しておきます。3行目のようにすでにファイルが存在する状態でnano memo.txtを起動すると、新規作成ではなく既存の中身を開いた状態でエディタが立ち上がります。ここが新規作成との違いです。

続く出力例のとおり、矢印キーでカーソルを文章の一番下まで動かして改行し、文章を続けて入力します。これが「追記」の実態で、特別なコマンドがあるわけではなく、単にエディタの中で文章を足しているだけです。そのまま保存・終了します。

4行目のcatで2行になった中身を確認し、5行目のwc -l(word countに-lを付けると行数だけを数える)で出力例のように行数が2になっていることを数値でも確認します。6行目のhead -n1(第1章で学んだ先頭表示コマンド)で1行目だけを、7行目のtail -n1(同じく末尾表示コマンド)で最後に追記した行だけを、それぞれ切り出して確認できることも押さえておきましょう。8行目のls -lでは、ファイルサイズ(バイト数)が増えていることも合わせて見ておきましょう。9行目のless(第1章で学んだページャ)で全文をスクロール表示でき、短いファイルでも長いファイルでも同じ操作で中身を確認できることを思い出しておきましょう。10行目のwc -wを付けると行数ではなく単語数を数えられ、-lとの違いも合わせて確認しておきます。

POINT

nanoは「新規作成」も「編集」も同じnano ファイル名という1つのコマンドで行います。ファイルが存在すれば開き、存在しなければ保存時に新規作成される、という単純な仕組みです。

SET 3 ― 上書きして中身を作り直す

ubuntu@lightsail: ~/practice
  1. $nano memo.txt
  2. (Ctrl+K を2回押して既存の2行を丸ごと削除)
  3. practiceディレクトリの中で練習中です。
  4. (Ctrl+O → Enter → Ctrl+X で保存して終了)
  5. $cat memo.txt
  6. practiceディレクトリの中で練習中です。
  7. $wc -l memo.txt
  8. 1 memo.txt
  9. $nano -B memo.txt
  10. (何も変更せず Ctrl+X で終了)
  11. $ls -a
  12. . .. memo.txt memo.txt~
  13. $cat memo.txt~
  14. practiceディレクトリの中で練習中です。
  15. $ls -l memo.txt memo.txt~
  16. $wc -l memo.txt memo.txt~
  17. 1 memo.txt
  18. 1 memo.txt~
  19. $rm memo.txt~
  20. $cd ~
解説 ― SET 3 で何をしたか

1行目で再びmemo.txtを開き、続く出力例の操作で中身をまるごと消します。Ctrl+K(Cut Textの意味)はカーソルがある行を1行切り取るキー操作で、2回押すと2行とも消えて空の状態になります。そこへ新しい文章を入力し直せば、実質的に「上書き」したことになります。

2行目のcatで、古い2行が消えて新しい1行だけが残っていることを確認します。nanoには「追記専用コマンド」はなく、開いて全部書き直すか、一部だけ書き換えるか、というエディタ操作の違いでしかない点を押さえておきましょう。3行目のwc -lでも行数が1になったことを数値で確認しておきます。

4行目のnano -B memo.txt-Bオプションは、保存するたびにmemo.txt~というバックアップファイル※2を自動で残す指定です。ここでは何も変更せずに終了していますが、5行目のls -aで、出力例のとおりmemo.txtに加えてmemo.txt~というバックアップファイルが実際に作られていることを確認できます。6行目のcat memo.txt~で、バックアップファイルの中身が保存前の状態と同じであることも見ておきましょう。

今回は何も変更せずに終了しているため、7行目のls -l8行目のwc -lにそれぞれmemo.txtmemo.txt~を並べて渡すと、出力例のとおりサイズも行数もまったく同じ値が返ってきます。うっかり大事な変更を消してしまったときの保険としてこのオプションがあることを覚えておきましょう。ただしmemo.txt~はあくまで一時的な保険用のファイルなので、9行目のrm memo.txt~(第1章で学んだ削除コマンド)で削除し、~/practiceの中はmemo.txtだけの状態に戻しておきます。最後に10行目でホームディレクトリへ戻り、次のページへの準備をします。

ゆみちゃん
ゆみ

あたし最初のころ、nanoで書いた文章を保存し忘れてCtrl+Xだけ押して閉じちゃったことあるよ。そのときは「Save modified buffer?」って聞かれるから、慌てずYを押せば保存しながら終了できるから安心して!

まとめ

3-1では、テキストエディタnanoを使ってファイルの新規作成・追記・上書きを一通り体験しました。このページで叩けるようになったコマンドとキー操作を一覧にまとめます。

コマンド / キー何をするか覚え方
nano ファイル名ファイルを開く(なければ新規作成)ファイル名を指定して起動
nano -B ファイル名保存のたびにバックアップ(~付き)を残して開く-B = Backup
Ctrl+Oファイルを保存する(Write Out)O = アウトプット(書き出す)
Ctrl+Xnanoを終了する(eXit)X = エグジット
Ctrl+Kカーソル行を切り取る(Cut)K = カット
Ctrl+U切り取った行を貼り付ける(Uncut)U = アンカット(戻す)
Ctrl+W文字列を検索する(Where is)W = ホエア(どこ?)
cat ファイル名ファイルの中身を表示する(保存確認用)第1章で学習済み

次のページ「3-2. vim入門」では、nanoとはまったく操作感の異なるエディタvimに挑戦します。「モード」という新しい概念が出てきますが、焦らず順番に体験していきましょう。

脚注 ─ 用語解説
  1. nano … Ubuntuに標準で入っている、初心者にも扱いやすいCUI(文字だけの画面)テキストエディタ。画面下部に操作キーが常時表示されるのが特徴。
  2. バックアップファイル … 元のファイルを上書きする前の状態を残しておく複製ファイル。nanoでは-Bオプションを付けると、ファイル名の末尾に~が付いた形で自動生成される。