はじめに
初めまして!ITスクールRareTECHにてCS(Customer Support)を担当している池村です!
やはりシェルは美しいと感じている今日この頃です。
今回はLinuxコマンドのcat
touch
echo
について記事を作成しました。
※この記事は超初学者向けになります。順番的には以下の記事を先に見ていただけると嬉しいです。
cat
コマンド
まずはcat
コマンドからご紹介します。
cat
コマンドを簡単に説明すると、ファイルの中身を表示してくれるコマンドです。これもよく使うコマンドになります。
基本的な使い方
使い方は簡単です。
cat ファイル名
私は今回、適当に作ったPython(Flask)のコードを表示してみます。
画面に表示されましたね。
cat
コマンドは基本的にこれだけできれば良いと考えています。
ただ一応、応用方法も書いておきます。
複数ファイルの結合
cat
コマンドで複数のファイルを指定すると、その中身をくっつけてくれます。
cat ファイル名 ファイル名
私の環境ではこうなりました。
先ほどのtest.py
ともう一つ準備していたtest.py2
を指定してみました。中身がくっついていますね。ファイルの中身が書き換わったわけではなく、表示された内容だけが結合しています。
どこで使うの?と言われましたら、私はパッと思いつかないですね。
おそらくgrep
コマンド(テキスト内から確認したい文字列が含まれている箇所を抜き出すコマンド)と併用して、特定の文字列だけ抜き取るような使い方でしょうか?あとはログファイルの中身を結合して一気に見たい時とかですかね?インフラエンジニアや保守運用している人が使ってそうですね。(予想です)
cat test1.log test2.log | grep "error"
のような使い方をすると、ログファイルの中のエラー部分だけ確認できそうです。
touch
コマンド
次にtouch
コマンドを紹介します。
touch
コマンドはファイルを作成するコマンドです。一応ファイルのタイムスタンプの変更ということもできますが、主要なのはファイルを作る方だと考えています。
基本的な使い方
こちらも使い方は簡単です。
touch 自由なファイル名
touch test.txt
touch test.py
touch test.go
とかですね。
ちなみにまとめて作成することも可能です。
touch test.txt test.py test.go
ちなみに、作られているのは空のファイルになります。
タイムスタンプの変更
すでにあるファイルを指定してtouch
コマンドを使用すると、タイムスタンプを変更することができます。そもそもタイムスタンプっていうのがなんなのか?というお話しですが、ファイルにはアクセス時刻や更新時刻などの情報が入っています。その時間を変更することができるということです。
補足ですが、ファイルの作成日時を変えることはできないです。
touch タイムスタンプを変更したいファイル
上記のようにすると、ファイルのアクセス時刻と更新時刻がコマンドを実行した現在時刻に変更されます。以下の画像はls -l
の実行結果です。これは更新時間だけですが、変更されているのがわかりますね。
アクセス時刻、更新時刻、変更時刻の全てを確認するにはstat
コマンドを使えば確認することができます。ここでこのコマンドを詳しく説明はしませんが、使ってみても良いでしょう。
stat ファイル名
touchコマンドについての補足
タイムスタンプの変更についてはログファイルやバックアップファイルあたりで使いそうですね。
IT業界ではサーバーのログを残す慣習があります。エラー情報やら大事なログがたくさんありますからね。貴重な情報です。あとは様々なデータのファイルをバックアップするためにコピーしたりもします。それらのタイムスタンプを合わせてセットにして保存しておけると迷わなくて良さそうです。
touch
コマンドのオプション
オプション | 説明 |
---|---|
-a |
アクセス時刻だけを更新する |
-m |
変更時刻だけを更新する |
-c または --no-create
|
ファイルが存在しない場合、新しいファイルを作成しない |
-r |
参照ファイルのタイムスタンプをコピーして適用する |
-t |
手動で指定したタイムスタンプを適用する |
--date="日時" |
指定した日付を用いてタイムスタンプを更新(-t の代わり)。 |
オプションに関しては初学者のうちは覚える必要がほぼないですが、一応掲載しておきます。
echo
コマンド
では最後にecho
コマンドをご紹介します。
こちらのコマンドは、画面に文字列を表示させるものです。
プログラミングを学び始めた方々は少しわかると思いますが、大体print
とかPrintln
とかを使って画面にHello World
と表示するのがファーストステップだと思います。
要はこれと一緒で、画面に文字列を表示する時に、Linuxではecho
コマンドを使います。
基本的な使い方
echo 'Hello World!'
これでシェル画面上にHello World!
と表示されれば成功です。
これ自体はそれほど難しくないですね。
では応用を見ていきましょう。
echo
コマンドはリダイレクトという仕組みを使うことで本領を発揮します。
echo 'Hello World!' > test.txt
こう書くことで、文字列Hello World!
とtest.txtに書き込むことができます。
もしこのtest.txt
が今いるディレクトリに存在しない場合は、勝手に作ってくれます。
ここで一点注意点ですが、>
を使ったリダイレクトは、ファイルの中身を上書きします。
上書きせずにファイル内の末尾に追記したいときは以下の書き方をします。
echo 'Hello World!' >> test.txt
この書き方を行うことで、ファイルの末尾(最後の行)に記述をすることができます。
以下の画像は、>
と>>
のリダイレクトの違いによってファイルの中身がどうなっているかを、実際にコマンドを叩いて試したものです。
リダイレクトはLinuxにおける標準入出力、標準エラー出力などの少し難しい要素が入ってきます。ですがこの記事ではその辺りの難しい要素を省いて、まずはこの二つのリダイレクトがどんな動きをするか紹介しています。
よく使われるリダイレクト
こちらの記事でも紹介しましたが、設定ファイルというファイルに様々な設定を書き込むことによって、シェルは使いやすさを増します。
echo
とリダイレクトはそれらのファイルに設定を書き込む時によく使われます。
ただ、ここでかなり注意する必要があるのが>
で設定ファイルに書き込むように記述がされている技術記事です。
例えば以下の書き方です。
echo 'export PYENV_ROOT="$HOME/.pyenv"' > ~/.zshrc
これはpyenvというツールを使えるようにする設定を.zshrc
に書き込んでいる記述です。
上記の>
を使っている書き方だと、設定ファイルの中身が全て消えて、今書き込んだ設定しかなくなります。
せっかく色々な記述をしてシェルを使いやすくしても、このコマンド一発で中身全てが消えてしまします。
ですので、echo
でリダイレクトするときは注意して実行しましょう。技術記事をしっかり見て、本当に大丈夫かどうか見極められるようになるとgoodです。設定ファイルに書き込む系のリダイレクトは100%>>
だと思ってもらっても良いです。
cat
コマンドの代替えコマンドについて
bat
コマンド
これはcat
コマンドを拡張したようなコマンドです。
cat
コマンドは基本的に画面に表示した文字列に色などはつきませんが、batコマンドはコードなどが見やすくなるように色をつけてくれます。以下のような表示ですね。
ほぼ上位互換的なコマンドなのでご自身のPCに入れることはオススメできます。
brew install bat
sudo apt update
sudo apt install bat
bat ファイル名
コードを表示するときはこちらのコマンドの方が見やすいですね。
ゆっくり見るならエディタを開けというツッコミはスルーしますが。
おわりに
今回はLinuxコマンドの基本③として解説いたしました。
これらのコマンドはよく使う上位のコマンドです。初学者は今回紹介した使い方だけでもマスターして欲しいと思っています。
次回はディレクトリの作成や、それらの削除についてまとめていく予定です。
簡単な記事は書きやすいけど、自分の知識習得にはあまり効果がない気もするので、同時並行でDocker周りの記事も書いていく予定です。
また読んでくれたら嬉しいです。ここまで読んでいただき、ありがとうございました。
次の記事はこちら👇
まとめ記事はこちら👇