Linux下touch命令详解及C/C++代码实现

article/2025/9/28 14:13:53

touch 命令是创建新的空文件的最简单方法。它还用于更改现有文件和目录的时间戳(即最近访问和修改的日期和时间),是 UNIX/Linux 操作系统中使用的标准命令。

touch 命令

touch的语法是:

touch [option] file_name(s)

当不带任何选项使用时,用于创建没有任何内容的文件, 使用 touch 命令创建的文件是空的。 当用户在创建文件时没有要存储的数据时,可以使用此命令。

在这里插入图片描述
创建文件是我们最常做的事情之一,使用touch命令默认创建一个空文件。

POSIX标准定义的选项

   -a     修改文件 file 的存取时间.-c     不创建文件 file.-m     修改文件 file file-r ref_file将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.-t time使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数:[[CC]YY]MMDDhhmm[.SS]这里,CC为年数中的前两位,即“世纪数”;YY为年数的                                                 后两位,即某世纪中的年数.如果不给出CC的值,则touch将把年数CCYY限定在1969--2068之内.MM为月数,DD为天                                                将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒                                                 的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统 的限制,早于1970年1月1日的时间是错误的.

GNU版本touch选项

   -a, --time=atime, --time=access, --time=use只修改存取时间.-c, --no-create如果要修改的文件不存在,此选项使touch不去创建它.-d, --date=time使用时间值  time  代替指定文件的戳记值.可以包含月份  名,时区名以及`am'和`pm'等等.-f     此选项用于兼容BSD版本的 touch(1).-m, --time=mtime, --time=modify只修改修改时间.-r file, --reference=file使用参照文件 file 的时间戳记值修改指定文件的时间戳 记.-t decimtime这里时间值         decimtime          的格式为MMDDhhmm[[CC]YY][.ss]从左至右分别是月份,日期,小时,分钟,可选的世纪和年,以及可选的秒.         touch         将用这组数值修改指定文件的时间戳记.请注意,这个格式与POSIX标准所规定的格式并 不一样.

Linux 中的文件时间戳

在深入了解 touch 命令的用法之前,您首先需要了解文件时间戳。在 Linux 中,每个文件都有三个时间戳:访问时间 (atime)、修改时间 (mtime) 和更改时间 (ctime)。

要检查包括文件时间戳在内的文件状态,可以使用 stat 命令后跟文件名:
在这里插入图片描述
访问时间(atime) 是指上次查看文件但未编辑的时间。
修改时间(mtime) 表示文件被修改的时间。
更改时间(ctime) 显示对文件的元数据更改。 例如,文件权限更改。

使用touch命令创建一个空文件

touch 最基本的功能是创建一个空文件。 要在当前目录中创建一个空文件,请在文件名后键入

在这里插入图片描述

要在另一个目录中创建一个空文件,请将路径传递到文件名之前的目录:

touch path/to/emptyFile
如果已存在同名文件,则 touch 会将上次访问和修改时间更改为当前时间。使用 ll 验证该命令。 它将列出当前目录中的所有文件(隐藏文件除外),以便您验证新创建的文件。

在这里插入图片描述
使用touch 命令创建多个文件

要使用 touch 命令创建多个文件,您只需传递多个文件名,后跟一个空格:

在这里插入图片描述

填充文件

创建空文件后,下一步是使用另一个命令填充它。 我们将向您展示一些常用命令,例如 echo、printf 或 seq 来添加内容。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

要查看新创建文件的内容,请键入 cat 后跟文件名.

更改文件修改时间

使用-m参数,touch文件时,文件存在只会更新mtime和ctime为当前时间。

在这里插入图片描述

更改文件访问时间

使用-a参数,touch文件时,文件存在只会更新atime和ctime为当前时间。

在这里插入图片描述

更新文件的特定时间戳

要将文件的访问和修改时间更新为 2022 年 2 月 1 日,您可以使用 -d 选项。 请记住将日期字符串和时间括在单引号中:
在这里插入图片描述

可以使用部分日期时间字符串。例如,只需要提供日期,如下面的 file 所示(在这种情况下,时间会自动设置为 0:00):

touch -d ‘14 May’ file

只需提供时间,如下所示,自动将日期更改为当前日期:

touch -d ‘14:24’ file

static void stime_darg(const char *arg, struct timeval *tvp)
{struct tm t = { .tm_sec = 0 };const char *fmt, *colon;char *p;int val, isutc = 0;tvp[0].tv_usec = 0;t.tm_isdst = -1;colon = strchr(arg, ':');if (colon == NULL || strchr(colon + 1, ':') == NULL)goto bad;fmt = strchr(arg, 'T') != NULL ? "%Y-%m-%dT%H:%M:%S" :"%Y-%m-%d %H:%M:%S";p = strptime(arg, fmt, &t);if (p == NULL){printf("out of range or illegal time specification: YYYY-MM-DDThh:mm:SS[.frac][tz]\n");}/* POSIX:点后必须至少有一位数字 */if ((*p == '.' || *p == ',') && isdigit((unsigned char)p[1])) /* isdigit 检查是否是十进制 */{p++;val = 100000;while (isdigit((unsigned char)*p)) {tvp[0].tv_usec += val * (*p - '0');p++;val /= 10;}}if (*p == 'Z') {isutc = 1;p++;}if (*p != '\0')printf("out of range or illegal time specification: YYYY-MM-DDThh:mm:SS[.frac][tz]\n");tvp[0].tv_sec = isutc ? timegm(&t) : mktime(&t);tvp[1] = tvp[0];
}

创建具有特定时间戳

要创建具有特定时间的新文件,请使用 -t 选项指定时间戳。 时间戳应采用以下格式 YYMMDDHHMM

touch -t 2022010502 file02

避免创建新文件
在这里插入图片描述

如果要更新重新存在文件的时间戳而不创建新文件,请使用 -c 选项:

使用另一个文件的时间戳

touch 命令允许用户使用另一个文件的时间戳而不是当前时间。

在这里插入图片描述

-r(即引用)选项后跟一个空格,然后是一个文件名,告诉 touch 使用该文件的时间戳而不是当前时间。
在这里插入图片描述
该命令用于使用另一个文件的时间戳。 此处 2022-2-2.log 文件使用文件 234.txt 的时间戳进行更新。

static void stime_file(const char *fname, struct timeval *tvp)
{struct stat sb;if (stat(fname, &sb))err(1, "%s", fname);TIMESPEC_TO_TIMEVAL(tvp, &sb.st_atim);TIMESPEC_TO_TIMEVAL(tvp + 1, &sb.st_mtim);
}

touch 命令C/C++实现

int main(int argc, char *argv[])
{if (gettimeofday(&tv[0], NULL) == -1) /* 获得当前精确时间(毫秒) */err(1, "gettimeofday");while ((ch = getopt(argc, argv, "A:acd:mr:t:")) != -1)switch(ch) {case 'A':Aflag = timeoffset(optarg);break;case 'a':aflag = 1;break;case 'c':cflag = 1;break;case 'd':timeset = 1;stime_darg(optarg, tv);break;case 'm':mflag = 1;break;case 'r':timeset = 1;stime_file(optarg, tv);break;case 't':timeset = 1;stime_arg1(optarg, tv);break;default:usage(myname);}argc -= optind;argv += optind;if (aflag == 0 && mflag == 0)aflag = mflag = 1;if (timeset) {if (Aflag) {/*将时间设置为与指定的偏移量时间。*/if (aflag)tv[0].tv_sec += Aflag;if (mflag)tv[1].tv_sec += Aflag;Aflag = 0;		}} else {/*如果没有 -r 或 -t 标志,至少有两个操作数*/if (argc > 1) {strtol(argv[0], &p, 10);len = p - argv[0];if (*p == '\0' && (len == 8 || len == 10)) {timeset = 1;stime_arg2(*argv++, len == 10, tv);}}/* 两次默认相同*/tv[1] = tv[0];}}

编译运行:

在这里插入图片描述
在这里插入图片描述

总结

touch 命令是 UNIX/Linux 操作系统中使用的标准命令,用于创建、更改和修改文件的时间戳。

欢迎关注微信公众号【程序猿编码】,需要touch命令完整源码的添加本人微信号(c17865354792)


http://chatgpt.dhexx.cn/article/2SsYDuQk.shtml

相关文章

Linux命令总结--touch命令

简介&#xff1a; touch命令用于修改文件或者目录的时间属性&#xff0c;包括访问时间和修改时间&#xff0c;若文件不存在&#xff0c;系统会建立一个新的文件。 语法格式&#xff1a; touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--…

touch 命令

touch 命令 创建文件命令 touch 文件名 或 touch 文件名1 文件名2创建一个已经存在的文件时, 只会修改文件的修改日期, 不会修 改文件内容扩展: 在指定路径下创建文件例如: 在任意路径下, 往用户家文件夹中, 创建名为text文件

Linux命令之touch命令

一、touch命令简介 命令用于修改文件或者目录的时间属性&#xff0c;包括访问时间和修改时间&#xff0c;若文件不存在&#xff0c;系统会建立一个新的文件。我们平时用得最多的是通过touch创建一个空文件&#xff0c;实际上通过touch命令可以修改文件的atime、mtime&#xff0…

基于微信小程序的在线商城设计(后台PHP)

目 录 摘 要 I ABSTRACT II 一、前言 1 1.1 研究的背景、目的和意义 1 1.2 国内外文献综述 2 1.3 研究的主要内容 3 二、系统相关技术研究 5 2.1 微信小程序 5 2.2 ThinkPHP 5 框架 7 2.3 RESTFul API 8 2.4 微信支付技术 10 2.5 MySQL数据库 12 三、需求分析与可行性研究 14 3…

PHP通过html外部网站跳转微信小程序

我们在开发网站的时候&#xff0c;可能会遇到下面的一些需求&#xff1a;网站跳转微信小程序&#xff1b;比如说公司的官网想实现跳转到微信小程序&#xff0c;那么有没有相应的接口实现呢&#xff1f;答案当然是有的&#xff0c;但是这个功能只限于认证后的小程序&#xff0c;…

php开发微信小程序教程,从零开始开发微信小程序步骤(三)

前面我们和大家分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的。即点击底部的导航,会实现不同对应页面之间的切换。我们先来看个我们要实现的底部导航栏的效果图:(三个导航图标示例,微信小程序最多能加5个)。 1. 图标准备 阿里图标库…

微信小程序与PHP数据交互

微信js源码 Page({onLoad: function () {var that thiswx.request({//要交互页面的地址url: http://localhost/php/index.php/Wxwater/Test/test,data:{pid:1 //data里边使我们要传递给PHP的数据},method: GET,headers: {Content-Type: application/json},success(res) {cons…

PHP 微信小程序 WebSocket MySQL Redis实现聊天功能

1.Mysql 实现离线消息池。如果一个用户不在线&#xff0c;则其他用户发送给他的消息暂时存储在mysql。待该用户上线时&#xff0c;再从离线消息池取出发送。 2.Redis 实现每个连接websocket的服务都唯一绑定一个用户。通过用户账号 fd 存到redis中。 微信小程序&#xff1a;…

PHP后台-微信小程序发送订阅消息(详细)

微信小程序订阅消息文档 步骤一&#xff1a;获取订阅消息模板 ID 在微信公众平台手动配置获取模板 ID&#xff1a; 登录 https://mp.weixin.qq.com 获取模板&#xff0c;如果没有合适的模板&#xff0c;可以申请添加新模板&#xff0c;审核通过后可使用。 在公告模板库找到要…

php实现微信小程序登录(根据微信小程序接口更新最新教程)

微信小程序登录就是通过官方提供的登录能力快捷的获取用户身份标识&#xff0c;快速建立小程序内的用户体系。 最新登录流程大致为: 说明 调用 wx.login() 获取 临时登录凭证code &#xff0c;并回传到开发者服务器。调用 auth.code2Session 接口&#xff0c;换取 用户唯一标…

微信小程序后台php实现数据get传递

1&#xff1a;利用phpstudy搭建本地服务器&#xff0c;端口设置为88 2&#xff1a;访问http://localhost:88/phpmyadmin/&#xff0c;在test数据库中新建一个表li&#xff0c;表中添加一个字段name&#xff0c;增加两行数据来进行测试 3&#xff1a;网站www根目录下新建一个wxa…

微擎小程序PHP,微擎配置小程序教程

微擎小程序通用配置图文教程&#xff0c;教会你怎么配置微擎小程序&#xff01; 1、去源码下载微擎小程序&#xff0c;这里以官网小程序为列&#xff0c;教大家如何配置微擎小程序。 2、将对应的官网小程序后端文件夹hc_step上传到微擎的addons目录下 3、在微擎安装好官网小程序…

PHP + 小程序开发过程

前言 在此之前&#xff0c;我也曾经写过一篇用Go语言开发的过程总结&#xff01;当然这次也不例外&#xff0c;同样记录下过程&#xff0c;方便后续再次接触时&#xff0c;重新拾起会轻松点。 我特意地看了一下博客文章的记录&#xff0c;从项目的启动时间&#xff08;2017-1…

PHP小程序多商户商城系统源码下载(免费全开源)_三勾商城开源版

三勾商城是开发友好的微信小程序商城&#xff0c;框架支持SAAS&#xff0c;支持发布 iOS Android 公众号 H5 各种小程序&#xff08;微信/支付宝/百度/头条/QQ/钉钉/淘宝&#xff09;等多个平台&#xff0c;不可多得的二开神器&#xff0c; 为大中小企业提供极致的移动电子…

PHP 管理小程序审核发布

目录 前言一、申请小程序、开发平台账号二、使用步骤 1.获取token2.发布小程序总结 前言 随着微信文档功能越来越多 &#xff0c;大多数数据越来越容易便捷&#xff0c;本文就介绍小程序在后台的操作管理 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…

crmeb 多商户小程序配置

一、小程序下载并提交审核 下载微信小程序代码 位置&#xff1a;平台后台>应用>小程序 1 首先需要填写这里的小程序信息 然后在这里就可以下载&#xff0c;如果未开启直播要选择&#xff0c;否则会无法使用 2、下载编译后的小程序代码 没有配置小程序的需要先配置小程序…

商城小程序源码PHP开源版

我们可以使用以下方法创建一个实现购物系统的商城小程序&#xff0c;该按钮具有在ReactJS中添加项和减少商品数的功能。React的materialui有这个组件可供使用&#xff0c;并且非常容易集成。 源码仓库&#xff1a;xcxyms.top   创建React应用小程序并安装模块&#xff1a;  …

基于php+myql微信小程序商城系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于微信小程序商城系统&#xff0c;前台用户使用小程序&#xff0c;小程序使用微信开发者工具开发&#xff1b;后台管理使用基PPMySql的B/S架构&#xff0c;开发工具使用phpstorm&#xff1b;通过后台添加商…

微信小程序+PHP实现登录注册(手把手教程)

1.环境说明 环境版本 PHP版本号&#xff1a;PHP7&#xff08;&#xff01;&#xff01;&#xff01;&#xff01;注意本文基于PHP7环境开发&#xff0c;PHP5与PHP7有很多语法不兼容&#xff0c;如果您的本地环境为PHP5&#xff0c;则需修改PHP代码中不兼容语法部分&#xff0…

PHP实现生成小程序二维码带参数进入指定页面

1.需求场景 1.小程序一定要是发布的小程序。2.记得把业务域名加上。 场景&#xff1a;需要在网页上生成小程序的二维码图片&#xff0c;微信扫码之后带参数进入指定的小程序页面 小程序在扫描二维码跳转的指定页面中&#xff0c;在onload里面接收参数。 注意scene是后台返回的…