MAGAZINE

キャリテク!マガジン

コラム

Linuxのテキストエディタviと、できたファイルの表示&検索

こんにちは、吉政創成 アシスタントの菱沼です。

前回はファイルの作成とコピー、それぞれのオプションについて学習しました。

ここまでファイルとディレクトリの操作を続けてきましたが、似たようなコマンドを使用することが多いなという印象でした。 今回はテキストファイルの作成と、その作成に使用するコマンドやエディタについて学習します。テキストでは3章に当たる部分です。

では、今回も「さわって学ぶLinux入門テキスト/赤星リナ氏著(マイナビ出版)」を片手に勉強していきます。どうぞ超初心者の方、お付き合いいただければ幸いです。

Linuxとテキストエディタ


テキストエディタ、と言われるとまず思い浮かべるのはメモ帳とか秀〇です。その用途はメモを取るとか、ちょっとしたデータの成型とかに使う程度です。そのため、プログラミングに適したエディタがある、ということは知っていましたが、そういった用途では馴染みがありません。そんなテキストエディタという存在が重要なようです。

引用:P.84

設定に関するファイルやコマンドを組み合わせたプログラム(シェルスクリプトといいます)はテキストファイルです。こうしたファイルを編集するために必要なのが「テキストエディタ」です。

Unixで標準のエディタは「vi(ヴィアイ:Visual editor)」です。現在、linuxではviを改良した「vim(ヴィム:Vi IMproved)」が標準的に使われており、viコマンドでvimが呼び出される設定も一般的です。

(中略)

viとともに有名なEmacsや、Ubuntuの標準エディタになっているnanoなどもあります。しかし、とくにインストールの必要もなくほぼすべてのUnixシステムを動かせるviを覚えておけば、たとえ何かトラブルがあっても設定ファイルを編集し、対処することができるでしょう。

ということで、viというのを使うらしいです。使い方は次です。

引用:P.85

エディタの起動には[vi]コマンドを実行します。[vi]コマンドのあとにファイル名を入れるとファイルが開きます。該当するファイルがなければ新規作成されます。

(中略)

viには2つのモードがあります。1つは文字を入力するための「入力モード」、もう1つがファイルの保存、内容の削除やコピー、貼り付けなどのコマンドを実行する「コマンドモード」です。入力モードの切り替えには【 i 】キー、コマンドモードの切り替えには【 ESC 】キーを使います。

(中略)

文字入力以外はコマンドモードで操作します。 起動直後はコマンドモードなので、入力前に【 i 】キーまたは【 a 】キーを押します。

早速やってみたいと思います。保存する先は多分、現在地のディレクトリになる気がしたので、「1_haru」に移動してから、テキストファイルを作ってみます。

ここまで入力して、実行すると、

この画面が表示されます。最下行にはファイル名や、現在いる行と行数、入力モードに切り替えた時にはinsertという表示、コマンド入力時にはその内容が表示されます。 日本語で入力したかったのですが、どうやら設定が必要なようなので、とりあえずそのまま入力してみました。

それがこちらです。行番号が欲しいという方は、[ :set number ]とコマンド入力すると出てきます。消すときは[ :set nonumber ]だそうです。

保存と終了する方法

コマンドモード(ESC)に切り替えた後に、[ :w ファイル名 ]と入力し、実行するようです。 実際にやってみますと、こう表示されます。

ファイル名の後に続くのは、行数と文字数です。
終了するには[:q]と入力するようです。その前に、保存しないで終わろうとすると怒られると書いてあったので、試してみました。

まず最後の行に追記をした後、保存せずに終了してみます。

①が保存してないけどいいの?と聞かれている状態です。
②が上書き保存[:wq]をした時の画面です。無事保存ができると、そのまま元のコマンドを入力・実行する画面(ターミナル)に戻りました。
変更を反映せずに強制的に終了させるには[:q!]と入力すると強制終了してくれるそうです。 (ファイルが作成された場所はやっぱりカレントディレクトリでした。)

ちなみに、カーソルの移動は矢印を使わなくてもできるそうです。今回はちょっと触っただけなのでなかなか慣れなかったのですが、慣れたらこっちの方が速いのかも…。文章としては割愛させていただきますが、以下のURLにカーソルの移動や使えるコマンドが一覧にされていましたので興味のある方はご参照ください。

viコマンド(vimコマンド)リファレンス|Qiita @pe-ta

テキストファイルを見たり、検索したりする

上で作成したテキストファイルには適当な文字を並べましたが、実際には設定やら大事な情報が書かれているはずですので、内容を確認することがあります。
なぜ閲覧用のコマンドがあるのか。viでも中身を見ることはできますが、扱うのは人間なので、うっかり内容を変更してしまう可能性があります。…重要な設定ファイルだったら取り返しがつかない…というわけで、中身を見たいだけの時は専用のコマンドを使った方がいいようです。

ファイルを表示する

表示する方法はいくつかあるようです。以下の表はテキストからの引用(P.108 )です。

コマンド内容
cat (ファイル名)テキストファイルの内容を表示する
less (ファイル名)ページ単位でファイルの内容を表示する
head (ファイル名)ファイルの先頭(デフォルトは10行)を表示する
tail (ファイル名)ファイルの末尾(デフォルトは10行)を表示する
sort (ファイル名)ファイルのデータを行単位で並べ替える(デフォルトは昇順)
wc (ファイル名)ファイルの行数、単語数、バイト数を表示する(Word Count)

①[cat]
実行すると、その次の行からテキストファイルの中身が表示されます。

②[less]
実行してみた結果がこちらです。[cat]の場合はコマンドを打った直後に表示されましたが、[less]の時はテキストを開いたようなイメージです。ページ移動は矢印キー/Bキー(上)や、Fキー or Spaceキー(↓)で行えます。終了するには[q]を実行します。

また、「/」でテキスト内の文字列検索ができます。右側がテキスト内検索をした結果です。検索したい文字列がカーソルより後にいると強調されるようになっています。オプションもいろいろあるようです。具体的な使用方法を詳しく知りたい方は以下をご参照ください。

参考:【 less 】コマンド(基本編)――メッセージやテキストファイルを1画面ずつ表示する|@IT
エンジニアなら知っておきたい lessコマンドtips 11選|Qiita @ine1127

③[head]と[tail]
表示は[cat]と同様、前後にコマンド入力部分が表示されました。 デフォルトが10行表示ということですが、たとえば5行分でいいなら、[head 5 (ファイル名)]([tail]も同様)でいいそうです。画像では3行にしました。

④[sort]
並べ替えて表示してくれます。

オプションを何もつけない状態だと昇順に、[ -r ]を付けると降順になります。
これをした後、ファイルを開いてみましたが、並び順は変わっていなかったので、あくまでビューであるようです。

⑤[wc]
テキストファイル内の行数、単語数、バイト数を出してくれます。

正直、いつ使うシーンが訪れるのだろうかと…疑問には思いました。ただ、ファイル数も調べられるらしいです。それなら使うかも? と思ったので、実行してみた結果が次の画像です。

確かに9個です。
[ls]と[wc]の間に「|(パイプ)」が入っています。これは「|」前のコマンドの実行結果を「|」後のコマンドに渡す、という意味らしいです。詳しくは以下参考リンクをご参照ください。

参考:【パイプ】Linuxのコマンドで使う縦線「|」の意味と使い方|UK MILK
wcコマンドで覚えておきたい使い方3個|俺的備忘録

ファイルを検索する[find]

あのファイルはどこだというのは、うっかりさんに限らず、人間なら誰しもあるはずです。そんな悩みを解決してくれるのが[find]というコマンドだそうです。

上の画像ではファイル名で検索しましたが、ファイルの種類や時間、サイズなどでも検索できるようです。

参考:ファイルなどを検索する!findコマンドの詳細まとめ【Linuxコマンド集】|エンジニアの入り口
findコマンドの使い方|UNIX/Linuxの部屋

ファイルの中身を検索する[grep]

[less]の時に「/」で、検索できるというのはありましたが、ここでは[grep]を使うそうです。
実行してみたのが次の画像です。 何行目にあったとか、逆にその単語を含まない行はここだなどを出すことができました。

こちらもオプションはいろいろあるようです。「*(ワイルドカード)」を使えば複数ファイルから検索も。詳しくは参考リンクをご参照ください。

参考:【Linuxコマンド】grepで特定の文字列を抽出する方法|侍エンジニア
grepコマンドの詳細まとめました【Linuxコマンド集】|エンジニアの入り口

マニュアルを見る方法[man]

これまでも時折ヘルプオプションをご紹介してきましたが、マニュアルを表示すること、そして、そのマニュアル内を検索することもできるようです。
[ls]のマニュアルを表示してみました。表示方法は[man (見たいコマンド)]です。

この中を検索するには、[less]の時と同様、「/」の後に検索したい文字を入力してあげます。 終了は「q」でできます。

(こっそりおまけ)
テキストエディタやテキストの表示系の操作は、終わるときは大体「:q」で終了できるようですが、途中、うっかり[cat]コマンドを途中で実行して終了できない状態になりました。コンソールを閉じても終わらない…どうすればいいのかと聞いてみたら、「Ctrl+c」でコマンドをキャンセルきるそうです。また、強制終了する場合は、一時停止(Ctrl+z)した後、psで止めたいプロセスIDを確認し、[kill -9 プロセスID]で行えるそうです。

こういうの、とっても大事ですね…。ありがたいコマンドです…。忘れないようにしたいと思います。

killコマンドのオプションについてはプロセスとジョブの章にもあるようですので、後日改めて確認してみたいと思います。

それでは今回はこちらで終了です。お付き合いいただき、ありがとうございました。

過去の連載記事

  1. Linuxでファイルを作ってコピーしてみた(touch/cp)
  2. 理解しておきたいファイルシステムと、lsコマンドの使い方
  3. Linuxのディレクトリを操作してみた(移動・削除・名前の変更)
  4. CentOS 7でディレクトリを作ってみよう!
  5. CentOSサーバの構築とユーザーの作り方
  6. Linuxサーバの特徴とディストリビューション
facebook シェアシェア
LINE シェアシェア