日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Sed 原地替換文件時遇到的趣事

來源: 責編: 時間:2023-11-04 23:04:48 342觀看
導讀哈嘍大家好,我是咸魚在文章《三劍客之 sed》中咸魚向大家介紹了文本三劍客中的 sedsed 全名叫 stream editor,流編輯器,用程序的方式來編輯文本那么今天咸魚打算講一下我在用 sed 原地替換文件時遇到的趣事sed 讓文件屬

哈嘍大家好,我是咸魚tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

在文章《三劍客之 sed》中咸魚向大家介紹了文本三劍客中的 sedtlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

sed 全名叫 stream editor,流編輯器,用程序的方式來編輯文本tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

那么今天咸魚打算講一下我在用 sed 原地替換文件時遇到的趣事tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

sed 讓文件屬性變了?

tlV28資訊網——每日最新資訊28at.com

有這么一個普通文件 test.txt ,內容如下:tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

link_test.txt 是一個軟鏈接(Symbolic Link,也可以叫符號鏈接)文件,指向 test.txt 文件tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

軟鏈接文件類似于 Windows 的快捷方式,它實際上是一個特殊的文件。關于軟鏈接相關的內容這里不過多介紹tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

如果我們對軟鏈接文件內容進行修改,源文件是會跟著改變的tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

當我使用 sed 對軟鏈接文件 link_test.txt 進行內容修改時,命令如下tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

有趣的現象發生了:使用 sed 對軟鏈接文件 link_test.txt 進行內容修改之后,源文件 test.txt 內容沒有變化,軟鏈接文件link_test.txt 的內容發生變化且變成了普通文件tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

怎么樣,是不是很神奇?sed 不但把文件內容改了,還把文件屬性也給改了tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

我們用 strace 工具來查看一下在執行 sed 命令時操作系統做了哪些操作tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

strace 一個系統調用跟蹤工具,它會跟蹤并記錄命令運行期間的系統調用和信號tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

具體內容有點多,我們著重看下關鍵內容tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

由上圖可以知道,如果我們使用 sed 對一個文件進行原地替換,需要有一個臨時文件,sed 先把修改內容寫入到這個文件,最后將文件 rename 到原來的地方tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

那我的需求是對軟鏈接文件 link_test.txt 進行內容修改,軟鏈接文件屬性不變,且源文件的內容也跟著改變,有沒有什么方法呢?tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

也就是說我們希望命令在執行的時候能夠解析出來軟鏈接文件后面指向的源文件,直接對源文件進行讀--處理--寫,最后 renametlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

sed 命令有一個選項 --follow-symlinkstlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

我們在執行的時候加上這個選項:tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

圖片圖片tlV28資訊網——每日最新資訊28at.com

tlV28資訊網——每日最新資訊28at.com

總結一下:tlV28資訊網——每日最新資訊28at.com

  • sed 替換的底層邏輯是把更新后的內容寫入一個臨時文件里面,然后再 rename 這個臨時文件
  • 這樣就會使得如果沒有添加 –follow-symlinks 選項的話,對軟鏈接文件進行 sed 操作就會使得軟鏈文件變成了一個常規文件(其實是那個臨時文件重命名導致的)
  • 如果要對軟鏈接文件指向的源文件進行操作,就需要添加 –follow-symlinks 選項

本文鏈接:http://www.www897cc.com/showinfo-26-16938-0.htmlSed 原地替換文件時遇到的趣事

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 【技術革命】JDK21虛擬線程來襲,讓系統的吞吐量翻倍!

下一篇: 通過研究案例,徹底掌握Python GIL

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 分布式系統中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統的小伙伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 得物寵物生意「狂飆」,發力“它經濟”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內的“在線鑒別”,可找到鑒別寵物的選項。通過上傳自家寵物的部位細節,就能收獲擁有專業資質認證的得物鑒
  • 引領旗艦級影像能力向中端機普及 OPPO K11 系列發布 1799 元起

    7月25日,OPPO正式發布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • 機構稱Q2全球智能手機出貨量同比下滑11% 蘋果份額依舊第2

    7月20日消息,據外媒報道,研究機構的報告顯示,由于需求下滑,今年二季度全球智能手機的出貨量,同比下滑了11%,三星、蘋果等主要廠商的銷量,較去年同期均有下
  • 三翼鳥智能家居亮相電博會,讓用戶體驗更真實

    2021電博會在青島國際會展中心開幕中,三翼鳥直接把“家”搬到了現場,成為了展會的一大看點。這也是三翼鳥繼9月9日發布了行業首個一站式定制智慧家平臺后的
Top 主站蜘蛛池模板: 扶沟县| 辽阳县| 勃利县| 琼海市| 米泉市| 富顺县| 周至县| 松滋市| 北流市| 资阳市| 邳州市| 舞钢市| 陈巴尔虎旗| 仙游县| 军事| 孝感市| 永仁县| 松原市| 泰顺县| 久治县| 三原县| 伊宁市| 民权县| 尼木县| 始兴县| 泰兴市| 托克逊县| 青岛市| 赤壁市| 罗甸县| 兴仁县| 闽清县| 乐清市| 屯门区| 濮阳市| 绥江县| 满城县| 吉安县| 民县| 绥江县| 社旗县|