我使用过的Linux命令之touch - 创建文件或修改文件时间
我使用过的Linux命令之touch-创建文件或修改文件时间
用途说明
touch命令经常用来创建空文件或者更新文件时间。创建空文件的目的通常是作为程序运行的标志,当程序执行结束前又将该文件删除。而更新文件时间通常是为了让某些软件能够正常执行。
常用参数
-t <time> 用于指定时间。格式可以是MMDDhhmm或者yyyyMMDDhhmm。
-r <file> 设置与file相同的时间。
使用示例
示例一 创建新文件
[root@jfht ~]# ls -l new.txt
ls:new.txt:没有那个文件或目录
[root@jfht~]#touchnew.txt
[root@jfht~]#ls-lnew.txt
-rw-r--r--1rootroot010-1122:40new.txt
[root@jfht ~]#示例二 更改文件时间为当前时间
[root@jfht ~]# ls -l new.txt-rw-r--r-- 1 root root 0 10-11 22:40 new.txt
[root@jfht ~]# touch new.txt
[root@jfht~]#ls-lnew.txt
-rw-r--r-- 1 root root 0 10-11 22:41 new.txt示例三 更改文件时间为指定时间
[root@jfht ~]# date
2010年10月11日星期一22:42:54CST
[root@jfht~]#touch-t10112200new.txt<===格式MMDDhhmm
[root@jfht~]#ls-lnew.txt
-rw-r--r--1rootroot010-1122:00new.txt
[root@jfht~]#touch-t200910112200new.txt<===格式yyyyMMDDhhmm
[root@jfht~]#ls-lnew.txt
-rw-r--r--1rootroot02009-10-11new.txt
[root@jfht ~]#实例四 将文件时间改成与别的文件相同
[root@jfht ~]# ls -l new.txt
-rw-r--r--1rootroot02009-10-11new.txt
[root@jfht~]#
[root@jfht~]#
[root@jfht~]#ls-l/etc/passwd
-rw-r--r--1rootroot160607-0515:46/etc/passwd
[root@jfht~]#touch-r/etc/passwdnew.txt
[root@jfht~]#ls-lnew.txt
-rw-r--r--1rootroot007-0515:46new.txt
[root@jfht ~]#[root@jfht ~]# stat new.txt
File:“new.txt”
Size:0Blocks:8IOBlock:4096一般空文件
Device:fd00h/64768dInode:194805821Links:1
Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)
Access:2010-10-1122:49:17.000000000+0800
Modify:2010-07-0515:46:46.000000000+0800
Change: 2010-10-11 22:49:44.000000000 +0800[root@jfht ~]# stat /etc/passwd
File:“/etc/passwd”
Size:1606Blocks:16IOBlock:4096一般文件
Device:fd00h/64768dInode:238127091Links:1
Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)
Access:2010-10-1122:53:01.000000000+0800
Modify:2010-07-0515:46:46.000000000+0800
Change: 2010-07-05 15:46:46.000000000 +0800从上面看出,touch设置的时间是Modify time。
示例五 在脚本中用作运行标志
文件 touch_5.sh
#!/bin/sh F=touch_5.run if [ -e $F ]; then echo "$0 is running..." exit 1 fi touch $F echo "I'm doing..." sleep 30 rm -f $F
[root@jfht ~]# cat touch_5.sh
#!/bin/sh
F=touch_5.run
if[-e$F];then
echo"$0isrunning..."
exit1
fi
touch$F
echo"I'mdoing..."
sleep30
rm-f$F
[root@jfht~]#chmod+xtouch_5.sh
[root@jfht~]#./touch_5.sh
I'm doing...在这个程序还没有结束的时候,在另外一个终端执行
Last login: Mon Oct 11 22:30:38 2010 from 222.70.144.138
[root@jfht~]#./touch_5.sh
./touch_5.shisrunning...
[root@jfht ~]#问题思考
1. 文件有哪几种时间?
2. 如果文件不存在,touch时不创建,用什么参数?
3. 如示例五中所示,用文件作为运行标志,可能会存在什么问题?
相关资料
【1】Linux宝库 Linux指令篇:档案目录管理--touch
【2】Computer Hope Linux / Unix settime and touch
返回 我使用过的Linux命令系列总目录