Linux基本指令篇 —— touch指令

? ? touchLinux和Unix系統中一個非常基礎但實用的命令,主要用于操作文件的時間戳和創建空文件。下面我將詳細介紹這個命令的用法和功能。

目錄

一、基本功能

1. 創建空文件

2. 同時創建多個文件

3. 創建帶有空格的文件名(需要使用引號)

二、時間戳操作

1. 修改文件的時間戳

2. 只更新訪問時間(-a選項)

關鍵結論

3. 只更新修改時間(-m選項)

4. 指定特定的時間戳

-t?選項的作用

手動設置時間戳

示例:

影響的時間戳

與?-a?或?-m?結合使用

常見用途

5. 使用參考文件的時間戳(-r選項)

三、高級用法

1. 創建大量文件

2. 防止文件被創建(-c選項)

3. 設置精確的時間(包括納秒)

4. 處理符號鏈接

場景說明

操作步驟

關鍵點

典型用途

總結

四、實際應用示例

快速創建測試文件:

批量更新項目文件時間戳:

同步兩個文件的時間戳:

創建帶有特定時間戳的日志文件:

注意事項


一、基本功能

語法:touch [選項] 文件

功能:touch命令用于修改文件或目錄的時間戳(包括訪問時間和修改時間),也可用于創建新文件(當指定文件不存在時)。

1. 創建空文件

touch命令最常見的用途是創建一個新的空文件:

touch filename.txt
  • 如果filename.txt不存在,上述命令會創建一個名為filename.txt的空文件;

  • 如果文件已存在,則會更新該文件的時間戳(使用stat指令查看文件時間)

2. 同時創建多個文件

touch file1.txt file2.txt file3.txt

3. 創建帶有空格的文件名(需要使用引號)

touch "new file.txt"


二、時間戳操作

touch命令可以修改文件的三種時間戳(分別對應下圖):

  • 訪問時間(atime):文件最后被讀取的時間

  • 修改時間(mtime):文件內容最后被修改的時間

  • 更改時間(ctime):文件屬性或內容最后被更改的時間

1. 修改文件的時間戳

touch filename.txt
  • 如果文件已存在touch?會將上述三個時間戳更新為當前系統時間。

  • 如果文件不存在touch?會創建一個空文件,并設置所有時間戳為當前時間。

2. 只更新訪問時間(-a選項)

touch -a filename.txt

但事實真的只更改訪問時間嗎?請看驗證后的效果,如下:

????????我們發現,我們原本只想改變訪問時間atime,但是更改時間ctime也被改變了?為什么會出現這樣的情況呢?思考一下:

????????ctime(Change Time)?并非指文件內容的修改時間,而是指文件元數據(metadata)的變更時間。以下操作會更新 ctime:

  1. 修改文件內容(影響?mtime,同時觸發?ctime?更新)。

  2. 修改文件元數據(如權限、所有者、硬鏈接數等)。

  3. 更新訪問時間?atime(因為?atime?本身是元數據的一部分)。

當你運行?touch -a?時:

  • 系統需要更新文件的?atime,而?atime?是存儲在文件元數據中的。

  • 修改元數據會導致?ctime?被內核自動更新(這是不可阻止的行為)。

關鍵結論

  • ctime?不受?touch?命令的直接控制它由內核維護,任何對文件內容或元數據的修改都會更新它。

  • 即使你只更新?atime(元數據的一部分),也會觸發?ctime?的更新。

  • 所以我們同理可得,下面的只更新修改時間也是會更改ctime的,理解了上面的原理之后,我們就理解了為什么ctime會跟著修改了。

3. 只更新修改時間(-m選項)

touch -m filename.txt

果然不出所料,ctime也跟著修改了,驗證了上面所說的結論:?

4. 指定特定的時間戳

? ? -t?是?touch?命令的一個選項,用于?手動指定文件的時間戳(而非使用當前系統時間)。它的作用是精確控制文件的?訪問時間(atime)?和?修改時間(mtime)通常用于測試、歸檔或修復文件時間。

-t?選項的作用

  1. 手動設置時間戳

    • 默認情況下,touch?使用當前時間,但?-t?允許自定義時間。

    • 格式:[[CC]YY]MMDDhhmm[.ss]

      • CC:世紀(可選,如?20?表示 2000 年)

      • YY:年份后兩位(如?23?表示 2023)

      • MM:月份(01-12)

      • DD:日期(01-31)

      • hh:小時(00-23)

      • mm:分鐘(00-59)

      • .ss:秒(可選,00-59)

    示例
    touch -t 202301011200.30 filename.txt  # 2023-01-01 12:00:30

    touch -t 01231234 filename.txt        # 當前年份的1月23日 12:34:00

  2. 影響的時間戳

    • 默認情況下,-t?同時修改?atime(訪問時間)和?mtime(修改時間)

    • ctime(更改時間)不受?-t?控制,它會自動更新為命令執行時間(因為時間戳屬于元數據)。

  3. 與?-a?或?-m?結合使用

    • 如果只想修改?atime?或?mtime,可以組合使用:

      touch -a -t 202301011200.00 filename.txt  # 僅修改 atime

      touch -m -t 202301011200.00 filename.txt  # 僅修改 mtime

常見用途

  1. 偽造文件時間(測試腳本或程序的時間敏感性)。

  2. 修復備份文件的時間戳(使其符合原始時間)。

  3. 強制觸發構建工具(如?make?依賴?mtime?判斷文件是否過期)。

  4. 批量調整文件時間(結合?find?使用)。

5. 使用參考文件的時間戳(-r選項)

touch -r mydir filename.txt

作用:這將使filename.txt的時間戳與mydir的時間戳相同。(使后者時間戳等于前者時間戳)

如下驗證,ctime就不討論了,它只能跟著系統走,不受影響:


三、高級用法

1. 創建大量文件

touch file{1..100}.txt

這將創建file1.txt到file100.txt共100個文件。(若之前存在同名文件,則不會創建該文件,只會創建新命名的文件,下面圖片前后的文件1到3號就可以很好的說明這一點)

若想刪除上面的大量文件,我們可以直接使用rm:

rm file{1..100}.txt

2. 防止文件被創建(-c選項)

如果只想更新時間戳而不想創建新文件:

touch -c filename.txt

?如果文件不存在,不會創建新文件:

3. 設置精確的時間(包括納秒)

touch -d "2023-01-01 12:00:00.123456789" file.txt

4. 處理符號鏈接

touch -h symlink

場景說明

????????默認情況下,touch?會跟隨符號鏈接(symlink)并修改其目標文件的時間戳。如果想直接修改符號鏈接本身的時間戳(而非目標文件),需要使用?-h?選項。


操作步驟

  1. 創建一個符號鏈接
    假設有一個文件?original.txt,并為其創建符號鏈接?symlink_to_original

    echo "This is the original file" > original.txt
    ln -s original.txt symlink_to_original
  2. 查看原始時間戳
    分別檢查目標和符號鏈接的時間:

    stat original.txt
    stat symlink_to_original

    輸出示例(注意符號鏈接的?Access/Modify/Change?時間):

  3. 修改符號鏈接本身的時間戳(不跟隨目標)
    使用?-h?選項:

    touch -h -t 202301011200.00 symlink_to_original
  4. 驗證結果
    再次運行?stat

    stat original.txt
    stat symlink_to_original

    輸出示例:

關鍵點

  • -h?的作用
    強制?touch?操作作用于符號鏈接本身,而非其指向的目標文件。

  • 時間戳類型
    符號鏈接的?atime/mtime?可被修改,但?ctime?仍會因元數據變更而自動更新。

  • 默認行為對比
    不加?-h?時,touch?會修改目標文件的時間戳(可能導致意外影響)。

典型用途

  1. 調試符號鏈接
    檢查腳本是否正確處理符號鏈接的時間戳。

  2. 備份系統
    保留符號鏈接的原始時間信息,而非目標文件的時間。

  3. 文件同步工具
    確保工具(如?rsync)能識別符號鏈接本身的變更。

總結

命令行為
touch symlink修改目標文件的時間戳
touch -h symlink修改符號鏈接本身的時間戳
stat symlink默認顯示目標文件時間,需用?stat -L?查看鏈接本身

通過?-h?選項,你可以精確控制符號鏈接的時間戳,避免影響其目標文件。


四、實際應用示例

  1. 快速創建測試文件

    touch test_{a..z}.txt
  2. 批量更新項目文件時間戳

    touch src/*.js
  3. 同步兩個文件的時間戳

    touch -r source_file target_file
  4. 創建帶有特定時間戳的日志文件

    touch -t 202212312359.59 year_end.log

注意事項

  1. touch命令需要你對目標目錄有寫權限才能創建或更新時間戳。

  2. 時間戳修改可能會影響備份系統、構建系統等依賴文件時間的工具。

  3. 在某些系統上,ctime(狀態更改時間)不能被直接修改,它會在文件屬性或內容更改時自動更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82514.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql explain使用

文章目錄 type 訪問類型性能高到低多注意type: index 出現的場景 key 實際使用的索引Extra 額外信息其他字段 通過 EXPLAIN 你可以知道:如是否使用索引、掃描多少行、是否需要排序或臨時表 EXPLAIN 三板斧(type、key、Extra) 例子&#xff1…

JMeter-SSE響應數據自動化

結構圖 背景: 需要寫一個JMeter腳本來進行自動化測試,主要是通過接口調用一些東西,同時要對響應的數據進行處理,包括不限于錯誤信息的輸出。 1.SSE(摘錄) SSE(Server-Sent Events)是一種基于HTTP協議、允許…

<<運算符重載 和 c_str() 的區別和聯系

例題 文章開始之前我們看下以下代碼&#xff0c;你能精準的說出正確的輸出結果并知道其原理嗎&#xff1f; void test() {string s1("hello world");cout << s1 << endl;//cout << s1.c_str() << endl;//const char* p1 "xxxx"…

python web flask專題-Flask入門指南:從安裝到核心功能詳解

Flask入門指南&#xff1a;從安裝到核心功能詳解 Flask作為Python最流行的輕量級Web框架之一&#xff0c;以其簡潔靈活的特性廣受開發者喜愛。本文將帶你從零開始學習Flask&#xff0c;涵蓋安裝配置、項目結構、應用實例、路由系統以及請求響應處理等核心知識點。 1. Flask安…

一種C# 的SM4 的 加解密的實現,一般用于醫療或者支付

一種C# 的SM4 的 加解密的實現 一般用于醫療或者支付 加密 string cipherText SM4Helper.Encrypt_test(data, key); public static string Encrypt_test(string plainText, string key) { byte[] keyBytes Encoding.ASCII.GetBytes(key); byte[] input…

“軒轅杯“云盾礪劍CTF挑戰賽 Web wp

文章目錄 ezflaskezjsezrceezssrf1.0簽到ezsql1.0ez_web1非預期預期解 ezflask ssti, 過濾了一些關鍵詞, 繞一下就行 name{{url_for["__globals__"]["__builtins__"]["eval"]("__tropmi__"[::-1])(os)["po""pen"…

Matlab快速上手五十六:詳解符號運算里假設的用法,通過假設可以設置符號變量的取值范圍,也可以通過假設設置變量屬于集合:整數、正數和實數等

1.符號變量中假設的概念 在符號數學工具箱中&#xff0c;符號變量默認范圍是全體復數&#xff0c;也就是說&#xff0c;符號運算是在全體復數域進行的&#xff0c;若需要運算中&#xff0c;不使用全體復數域&#xff0c;可以為變量設定取值范圍&#xff0c;這就用到了假設&…

【python實用小腳本-79】[HR轉型]Excel難民到數據工程師|用Python實現CSV秒轉JSON(附HRIS系統對接方案)

場景故事&#xff1a;從手動復制粘貼到自動化數據流轉 "Kelly&#xff0c;我們需要把3000名員工的考勤數據導入新HR系統&#xff0c;今天能完成嗎&#xff1f;"去年這個時候&#xff0c;作為HRIS項目負責人的我&#xff0c;面對這個需求時第一反應是打開Excel開始手…

數據透視:水安 B 證如何影響水利企業的生存指數?

某大數據公司提取了 3000 家水利企業的經營數據&#xff0c;一組關聯分析令人震驚&#xff1a;B 證配備率與企業利潤率的相關系數達 0.67—— 這意味著持證率每提升 10%&#xff0c;企業利潤率平均提高 4.2 個百分點。當我們用數據解剖這本紅本本&#xff0c;會發現它像一根無形…

從零搭建上門做飯平臺:高并發訂單系統設計

你知道為什么聰明人都在搶著做上門做飯平臺嗎&#xff1f;因為這可能是餐飲行業最后一片藍海&#xff01;傳統餐飲還在為房租人工發愁時&#xff0c;上門私廚已經輕裝上陣殺出重圍。不需要門店租金&#xff0c;不用養服務員&#xff0c;廚師直接上門服務&#xff0c;成本直降60…

openpi π? 項目部署運行邏輯(四)——機器人主控程序 main.py — aloha_real

π? 機器人主控腳本都在 examples 中&#xff1a; 可以看到包含了多種類機器人適配 此筆記首先記錄了 aloha_real 部分 aloha_real 中&#xff0c;main.py 是 openpi ALOHA 平臺上“主控執行入口”&#xff0c;負責&#xff1a; 建立與推理服務器&#xff08;serve_policy.…

利用 Python 爬蟲獲取唯品會 VIP 商品詳情:實戰指南

在當今電商競爭激烈的環境中&#xff0c;VIP 商品往往是商家的核心競爭力所在。這些商品不僅代表著品牌的高端形象&#xff0c;更是吸引高價值客戶的關鍵。因此&#xff0c;獲取 VIP 商品的詳細信息對于市場分析、競品研究以及優化自身產品策略至關重要。Python 作為一種強大的…

鴻蒙桌面快捷方式開發

桌面快捷方式開發實戰 [參考文檔] (https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-desktop-shortcuts) 在module.json5配置文件中的abilities標簽下的metadata中設置resource屬性值為$profile:shortcuts_config&#xff0c;指定應用的快捷方式配置文件&…

3分鐘學會跨瀏覽器富文本編輯器開發:精準光標定位+內容插入(附完整代碼)

一、痛點直擊&#xff1a;傳統編輯器的三大坑 作為前端開發&#xff0c;你是否遇到過以下靈魂拷問&#xff1f; ? 為什么Firefox光標能精準定位&#xff0c;IE卻永遠跳轉到開頭&#xff1f;? 圖片上傳后如何保證插入位置不偏移&#xff1f;? 跨瀏覽器兼容測試時&#xff0…

RK3562 Linux-5.10 內核HUSB311 Type-C 控制器芯片調試記錄

硬件原理&#xff1a; 1. type C 接口&#xff1a; 1.1 HUSB311芯片&#xff0c; CC1和CC2 邏輯接到HUSB311 上面&#xff0c; 接I2C0組和USBCC_INT_L USBCC_INT_L 接到GPIO0_A6 做為CC的邏輯中斷 1.2 TYPEC_DP/TYPEC_DM 接到ARM 端的USB3.0 OTG上面 1.2 TYPEC_RX1P/TYPEC…

深入理解Java中的BigDecimal:高精度計算的核心工具

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 引言 在Java編程中&#xff0c;處理浮點數運算時可能會遇到精度丟失的問題。例如&#xff1a; System.out.println(0.1 0.2); // 輸出&#xff1a;0.30000…

大模型微調(面經總結)

持續更新中 一、LORA篇1、介紹一下Lora的原理2、LoRA 是為了解決什么問題提出的&#xff1f;哪些模型適合用 LoRA 微調&#xff1f;什么是低秩分解&#xff1f;**低秩分解&#xff1a;用小矩陣逼近大矩陣** 3、LoRA初始化4、LoRA初始化秩 r 是怎么選的&#xff1f;為什么不選其…

Camera相機人臉識別系列專題分析之一:人臉識別系列專題SOP及理論知識介紹

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a;內存泄漏和內存占用拆解系列專題 這一篇我們開始講&#xff1a; Camera相機人臉識別系列專題分析之一&#xff1a;人臉識別系列專題SOP及理論知識…

【Elasticsearch】PUT` 請求覆蓋式更新

是的&#xff0c;Elasticsearch 中的 PUT 請求是覆蓋式的。當你使用 PUT 請求向索引中寫入文檔時&#xff0c;如果文檔已經存在&#xff0c;Elasticsearch 會完全替換整個文檔的內容&#xff0c;而不是進行部分更新。 覆蓋式的具體行為 - 文檔存在時&#xff1a;PUT 請求會用新…

計算機系統結構-第4章-數據級并行

數據集并行的概念: 并行場景1: 對不同數據執行相同的操作: 串行執行: 可以同時進行: 可以嘗試一個多條指令,多核執行 引入: SISD: 單核,單線程,串行執行,這樣耗時 MIMD: 多核,多線程,并行執行,一條指令多次重復,變成了MIMID 存在的問題: 在標量CPU流水線中&#xff0…