Linux touchコマンドをEnvaderで学ぶ


30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。

今回もEnvaderを利用して、Linuxコマンドについて学習です。
今回取り組んだのは、Linuxでも基本中の基本であろうtouchコマンドです。

Envader is 何?という方のために、下記にリンクを貼っておきますので参考までにどうぞ。

Envaderとは、Linux環境を環境構築なしで気軽に学べるオンライン学習サービスです。
PCとブラウザさえあればどなたでも利用できます。

Envader

コース一覧

今回使用したシナリオ

touchコマンド

ファイルの作成や、タイムスタンプの更新などをする時に利用するコマンド。
私はファイル作成の時に使うことが多いのですが、紹介されている記事や書籍などを見てみると、ファイルのタイムスタンプの更新、変更に使用する、とされていることが多いです。

ファイルにはタイムスタンプと呼ばれる、アクセス時刻と修正時刻が存在していて、lsコマンドを使用することで確認できます。

# 2021 9月24日の所がタイムスタンプ

envader@172-19-1-2:~$ ls -la
total 32
drwxr-xr-x 1 envader envader 4096  924  2021 .
drwxr-xr-x 1 root    root    4096  924  2021 ..
-rw-r--r-- 1 envader envader  220  515  2017 .bash_logout
-rw-r--r-- 1 envader envader 4198  915  2021 .bashrc
-rw-r--r-- 1 envader envader  675  515  2017 .profile
drwxr-xr-x 2 root    root    4096  924  2021 .ssh
-rw-r--r-- 1 envader envader  913  915  2021 .tmux.conf
-rw-r--r-- 1 envader envader    0  924  2021 time.txt

基本的な使い方

touch 存在しているファイル名(または作成したいファイル名)

存在しているファイルのタイムスタンプを更新

存在しているファイル名を入力して実行すると、そのファイルのタイムスタンプが更新されます。

envader@172-19-1-2:~$ ls -l
total 0
-rw-r--r-- 1 envader envader 0  924  2021 time.txt

# タイムスタンプを更新する
envader@172-19-1-2:~$ touch time.txt

# タイムスタンプが今日の日付に更新された
envader@172-19-1-2:~$ ls -l
total 0
-rw-r--r-- 1 envader envader 0  48 19:56 time.txt

新しくファイルを作成

新しくファイルを作成します。

envader@172-19-1-2:~$ touch kobakichi.txt

envader@172-19-1-2:~$ ls -l
total 0
-rw-r--r-- 1 envader envader 0  48 20:00 kobakichi.txt
-rw-r--r-- 1 envader envader 0  48 19:56 time.txt

新しいファイルが作成できた。

オプションを使ってタイムスタンプを更新する

オプション 説明
-t タイムスタンプを[CC]YY]MMDDhhmm[SS]に変更する CC: 西暦の上2桁(省略可) YY: 西暦の下2桁(省略可) MM: 月 DD: 日 hh: 時 mm: 分 SS: 秒(省略可)
-a アクセス時刻だけ変更する
-d 日時を文字列で指定して、タイムスタンプを更新する。
-c 存在しないファイル名を指定しても、空の新規ファイルを作成しない
-m 修正時刻だけを変更する

オプションを試してみる

# 2019年5月9日の12時30分にタイムスタンプを変更

envader@172-19-1-2:~$ touch -t 201905091230 kobakichi.txt
envader@172-19-1-2:~$ ls -l
total 0
-rw-r--r-- 1 envader envader 0  59  2019 kobakichi.txt
-rw-r--r-- 1 envader envader 0  48 19:56 time.txt

# -dで文字列として日付を指定する 文字列なので""で囲む

envader@172-19-1-2:~$ touch -d "2016-9-15 20:15" time.txt
envader@172-19-1-2:~$ ls -l
total 0
-rw-r--r-- 1 envader envader 0  59  2019 kobakichi.txt
-rw-r--r-- 1 envader envader 0  915  2016 time.txt

# -cで空の新規ファイルを作成しない

envader@172-19-1-2:~$ touch -c kiba.txt
envader@172-19-1-2:~$ ls
kobakichi.txt  time.txt
# kiba.txtは作成されていない

まとめ

今回はtouchコマンドについて実践しながら学びました。
こうやってオプションを指定してみると、実はタイムスタンプの存在が大きいことが分かりました。

普段はファイルの事しか頭にありませんが、実際に業務で使用する際にはタイムスタンプが重要になってくる場面が出てくるのかも知れませんね。

最後まで読んでいただきありがとうございました。