touchは、標準的なUnixのプログラムであり、ファイルの最終アクセス時刻と最終変更時刻を変えるために使用される。また、新規の空ファイルを作成するためにも使用される。 touchユーティリティはVersion 7 AT&T UNIXにおいて最初にリリースされた。GNU Core Utilitiesにバンドルされているtouchのバージョンは、ポール・ルビン
歴史
Single UNIX Specification(SUS)において、touchはファイルの最終アクセス時刻または最終変更時刻またはその両方を変えるものであると定義されている。ファイルは引数のパス名で指定される。指定したファイルが存在しない場合は、ファイルを新規に作成して、最終アクセス時刻と最終変更時刻を指定した時刻に設定する。時刻を指定しない場合には、touchは現在時刻を使用する。 SUSにおいて、次のようなオプションが指定されている:-a、最終アクセス時刻のみを変更-c、ファイルが存在しない場合でも、新規に作成せず、状況を報告しない-m、最終変更時刻のみを変更-r file、fileと同じ最終アクセス時刻と最終変更時刻を使用-t time、以下に記載するようなフォーマットで指定した最終アクセス時刻と最終変更時刻を使用 時刻は[[cc]yy]MMDDhhmm[.ss]というフォーマットで指定される。ここで、MMは月を示す2桁の数字、DDは日を示す2桁の数字、hhは時間を示す2桁の数字、mmは分を示す2桁の数字である。オプションのssは秒を示す2桁の数字、ccは西暦の上2桁を示す数字、yyは西暦の下2桁を示す数字である。 オプションで引数に時刻を指定しない場合は、最終アクセス時刻と最終変更時刻として現在の日付と時刻を使用する。この仕様は、ファイルの内容を変更せずに、ファイルの最終アクセス時刻と最終変更時刻を最新にすることに相当する。この動作は、ある種の状況の下では(以下の例に示すように)望ましい仕様と考えられる。 他のUNIXおよびUnix系のオペレーティングシステムにおいては、これ以外のオプションを追加している。例えば、GNU touchは、-dというオプションを追加している。このオプションは、上記のオプションで指定する以外のフォーマットで時刻を指定する。 touchの最も簡単なユースケースは# touch myfile.txt である。この例では、touchはmyfile.txtの内容を変更せずに、myfile.txtのタイムスタンプのみをコンピューターの現在の日付と時刻に更新する。 次の例は、なぜこのような動作が望ましいのか示す。一般に、作成中のソフトウェアプロジェクトではプログラムをmakeコマンドでビルドすることが多い。その際に、makefileを変更して、makeコマンドで再ビルドする必要があると仮定する。しかし、作業の直後にmakeが以下のような報告をすることがある:# makemake: nothing to be done for `all' これはソースコードファイルが(ターゲットより以前に)更新されていたからで、touchコマンドでファイルの更新をシミュレートする必要がある。そのようにすると、以下のようにmakeを走らせて、プログラムをリコンパイルできるようになる:# touch project.c# make 以下の例は、ファイルの日付と時刻を変更する方法を示す:# touch -t 200701310846.26 index.html# touch -d '2007-01-31 8:46:26' index.html# touch -d 'Jan 31 2007 8:46:26' index.html# (* Win32(XP)コマンドプロンプトの場合は、シングルクォート(')の 代りにダブルクォート(")を使用せよ。 そうしないと、"touch: Invalid date format"というエラーが 発生するであろう。) 上記の3つの例は同値である。すなわち、index.htmlの日付と時刻を2007年1月31日の午前8時46分26秒に設定する。 cp, grep, chmodなどのコマンドとは異なり、touchはコマンドを再帰的にサブディレクトリに適用する再帰的なスイッチ(-r または -R または両方)を持っていない(2008年8月時点)。しかし、以下のようにすれば適用できる:# find . -exec touch {} \; この方法は比較的、実行速度が遅い。これは以下のようにすれば高速化できる:# find . 。xargs touch ファイル名またはサブディレクトリ名に空白が含まれる場合は、以下のようにするとよい:# find . -print0 。xargs -0 touch touchユーティリティと似た動作をおこなうプログラムが、Microsoft WindowsやMac OSなどの他のオペレーティングシステムでも使用可能となっている。
使用法
例
他のオペレーティングシステム
関連項目
システム時刻
外部リンク
Single Unix Specificationで指定されるtouchの仕様(英語)
⇒ntouch/dtouchのページ(英語)
⇒touchの使い方を示す例(英語)
マニュアル
touch ? GNU coreutilsのマニュアル(英語)
touch
Manpage of TOUCH
touch(1)
touch(1)
表
話
編
歴
Unixコマンド
ファイルとファイルシステム管理
cat
chattr(英語版)
chmod
chown
chgrp
cksum
cmp
cp
dd
du
df(英語版)
file
fsck
fuser(英語版)
ln
ls
lsof
mkdir
mount
mv
pax
pwd
rm
rmdir
size
split
tee
touch
type(英語版)
umask(英語版)
プロセス管理
at
bg
chroot
cron
fg
kill
killall
nice
pgrep
pidof
pkill
ps
pstree(英語版)
reboot
shutdown
time
top
ユーザ管理/環境
clear
env
exit
finger
history(英語版)
id
logname(英語版)
mesg
passwd
su
sudo
uptime
talk
tput(英語版)
uname
w
wall
who
whoami
write
テキスト処理
awk
banner
basename
comm(英語版)
csplit(英語版)
cut
diff
dirname
ed
ex(英語版)
fmt
fold(英語版)
head
iconv
join(英語版)
less
m4
more
nkf
nl
paste(英語版)
patch
printf(英語版)
read(英語版)
sed
sort
spell(英語版)
strings
tail
tr
troff
uniq
vi
wc
xargs
yes
シェルビルトイン
alias
cd
echo
test(英語版)
unset
wait
通信
dig
host(英語版)
ifconfig
inetd
ip (iproute2)
netcat
netstat
nslookup
ping
rdate(英語版)