2、檔案管理

7七柒發表於2024-06-28

linux目錄結構

Windows:以多根的方式 C:\ D:\ E:\等等

linux:以單根的方式組織檔案 / 。也就是所有的檔案都放在根目錄下

Linux目錄檢視

/ 被稱為根目錄,下面的bin、boot、dev等等為一級目錄,只有管理員可以訪問

一級目錄簡介

目錄 說明
bin 存放二進位制可執行檔案(ls,cat,mkdir等)常用命令一般都在這
boot 存放用於系統引導時使用的各種檔案,也就是啟動檔案
dev 用於存放裝置檔案
etc 存放系統管理和配置檔案
home 存放所有普通使用者檔案,也是普通使用者的根目錄
root 管理員的主目錄
run 執行目錄,用的很少
sbin 與bin相似,存放管理員相關的命令
tmp 用於存放各種臨時檔案,是公用的臨時檔案儲存點
usr 用於存放系統應用程式,比較重要的目錄/usr/local 本地系統管理員軟體安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程式和檔案幾乎都在這個目錄
var 用於存放執行時需要改變資料的檔案,也是某些大檔案的溢位區,比方說各種服務的日誌檔案(系統啟動日誌等。)等。

檔案型別

使用ls -l 命令可以檢視檔案的詳細資訊

  • - 開頭:普通檔案。如:文字檔案、二進位制檔案、圖片等等(白色)
  • d 開頭:目錄檔案(藍色)
  • b 開頭:裝置檔案,塊裝置。如:儲存裝置硬碟、u盤/dev/sda、/dev/sda1(黃色)
  • c 開頭:裝置檔案,字元裝置。如:印表機、終端/dev/ttr1
  • l 開頭:連線檔案(淡藍色)
  • s 開頭:套接字檔案
  • p 開頭:管道檔案
  • - 開頭:壓縮檔案(紅色)。注意:和普通檔案是一樣的字元,只是顏色不同

萬用字元

  • * :匹配任意數的字元

  • ?:匹配單個字元

  • [] :匹配陣列中的任意字元

    • [abc]:匹配a、b、c中任意字元
    • [a-z] :表示匹配範圍為a到z
    • [!abc]:表示不匹配括號中的任何字元
  • {} :

    • 匹配大括號中的任意字串

    • 用於一次建立多個檔案或目錄

      建立兩個同級別的目錄:dir2、dir1,注意逗號之間一定不能有空格

      [root@lyy my_dir]# mkdir {dir2,dir3}
      

      建立兩個同級別的檔案同理

      [root@lyy my_dir]# touch dir1/{file1,file2}
      

檔案管理常用命令

ls:顯示目錄中檔案

list的縮寫

語法:ls 引數 檔名

常用引數

引數 描述
-a 顯示所有檔案及目錄
-A 不顯示當前目錄和父目錄
-d 顯示目錄自身的屬性資訊
-i 顯示檔案的inode屬性資訊
-l 顯示檔案的詳細屬性資訊
-m 以逗號為間隔符,水平顯示檔案資訊
-r 依據首字母將檔案以相反次序顯示
-R 遞迴顯示所有子檔案
-S 依據內容大小將檔案排序顯示
-t 依據最後修改時間將檔案排序顯示
-X 依據副檔名將檔案排序顯示
-h 顯示檔案的大小
-color 以彩色顯示資訊

使用示例

  • 顯示檔案袋詳細屬性資訊

    [root@localhost ~]# ls -l
    總用量 8
    -rw-------. 1 root root 1516 4月  17 03:46 anaconda-ks.cfg
    -rw-r--r--. 1 root root 1564 4月  17 03:49 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root    6 4月  17 05:14 公共
    drwxr-xr-x. 2 root root    6 4月  17 05:14 模板
    drwxr-xr-x. 2 root root    6 4月  17 05:14 影片
    drwxr-xr-x. 2 root root    6 4月  17 05:14 圖片
    drwxr-xr-x. 2 root root    6 4月  17 05:14 文件
    drwxr-xr-x. 2 root root    6 4月  17 05:14 下載
    drwxr-xr-x. 2 root root    6 4月  17 05:14 音樂
    drwxr-xr-x. 2 root root   30 4月  18 05:05 桌面
    
  • 顯示指定路徑:/root/桌面 下的檔案

    [root@localhost ~]# ls /root/桌面
    file.txt
    
  • 顯示當前目錄下以fi開頭的檔案

    [root@localhost 桌面]# ls fi*
    file.txt
    
  • 顯示目錄/etc 下的檔案詳細資訊並顯示檔案的大小

    [root@localhost rootdir]# ls -lh /etc
    總用量 1.4M
    drwxr-xr-x.  3 root root    101 4月  17 03:42 abrt
    -rw-r--r--.  1 root root     16 4月  17 03:45 adjtime
    -rw-r--r--.  1 root root   1.5K 4月   1 2020 aliases
    -rw-r--r--.  1 root root    12K 4月  17 03:46 aliases.db
    drwxr-xr-x.  3 root root     65 4月  17 03:43 alsa
    drwxr-xr-x.  2 root root   4.0K 4月  17 03:44 alternatives
    .............省略其他內容
    

cd:切換目錄

change directory的縮寫

其功能是更改當前所處的工作目錄,路徑可以是絕對路徑,也可以是相對路徑,若省略不寫則會跳轉至當前使用者的家目‍錄。

語法:cd 引數 目錄名

常用引數

引數 描述
-L 切換至符號連結所在的目錄
-P 切換至符號連結對應的實際目錄
-- 切換至上次所在目錄
~ 切換至使用者家目錄
.. 切換至當前位置的上一級目錄

使用示例:

  • 去根目錄

    [root@localhost ~]# cd /
    [root@localhost /]# 
    
  • 去指定路徑:/root/桌面

    [root@localhost /]# cd /root/桌面
    [root@localhost 桌面]# 
    
  • 切換至當前位置的上一級目錄

    [root@localhost 桌面]# cd ..
    [root@localhost ~]#
    

pwd:顯示當前目錄路徑

print working directory的縮寫

顯示當前工作目錄的路徑,即顯示所在位置的絕對路‍徑。

使用示例

[root@localhost ~]# pwd -L
/root

touch:建立檔案

如果檔案不存在,則會建立一個空內容的文字檔案;如果檔案已經存在,則會對檔案的Atime(訪問時間)和Ctime(修改時間)進行修改操作,管理員可以完成此項工作,而普通使用者只能管理主機的文‍件

語法:touch 引數 檔名

常用引數

引數 描述
-a 設定檔案的讀取時間記錄
-c 不建立新檔案
-d 設定時間與日期
-m 設定檔案的修改時間記錄
-t 設定檔案的時間記錄
--help 顯示幫助資訊
--version 顯示版本資訊

使用示例

  • 在當前目錄下建立檔案:file.txt

    [root@localhost ~]# touch file.txt
    
  • 結合萬用字元建立多個檔案

    [root@localhost ~]# touch file{1..3}.txt
    
  • 在指定路徑:/root/桌面 下建立檔案:file.txt

    [root@localhost ~]# touch /root/桌面/file.txt
    
  • 建立兩個同級別的檔案:file1和file2,注意檔名之間一定不能有空格,只用逗號隔開

    [root@lyy my_dir]# touch dir1/{file1,file2}
    
  • 建立隱藏檔案,以 . 開頭的檔案都是隱藏檔案

    [root@lyy my_dir]# touch dir1/.file		// 建立隱藏檔案
    [root@lyy my_dir]# ls dir1				// ls只能檢視未隱藏的檔案
    aaa  bbb
    [root@lyy my_dir]# ls -a dir1			// ls -a 可以檢視隱藏檔案
    .  ..  aaa  bbb  .file
    

mkdir:建立目錄

make directories的縮寫

其功能是建立目錄檔案。若要建立的目標目錄已經存在,則會提示已存在而不繼續建立,不覆蓋已有檔案。若目錄不存在,但具有巢狀的依賴關係時,例如/Dir1/Dir2/Dir3/Dir4/Dir5,要想一次性建立則需要加入-p引數,進行遞迴操‍作

語法 : mkdir 引數 目錄名

常用引數

引數 描述
-m 建立目錄的同時設定許可權
-v 顯示執行過程詳細資訊
-p 遞迴建立多級目錄
-z 設定目錄安全上下文

使用示例

  • 建立一個資料夾:dir1

    [root@localhost 桌面]# mkdir dir1
    
  • 一次性建立多個資料夾:dir2、dir3、dir4

    [root@localhost 桌面]# mkdir dir2 dir3 dir4
    
  • 建立多級遞迴資料夾:aaa/bbb/ccc

    [root@localhost 桌面]# mkdir -p aaa/bbb/ccc
    
  • 建立兩個同級別的目錄:dir2、dir1,注意目錄名之間一定不能有空格,只用逗號隔開

    [root@lyy my_dir]# mkdir {dir2,dir3}
    
  • 同時建立同級目錄和遞迴目錄

    [root@lyy my_dir]# mkdir -pv {dir1/{aaa,bbb},dir2/{aaa,bbb},dir{3,4,5}}
    mkdir: 已建立目錄 "dir1"
    mkdir: 已建立目錄 "dir1/aaa"
    mkdir: 已建立目錄 "dir1/bbb"
    mkdir: 已建立目錄 "dir2"
    mkdir: 已建立目錄 "dir2/aaa"
    mkdir: 已建立目錄 "dir2/bbb"
    mkdir: 已建立目錄 "dir3"
    mkdir: 已建立目錄 "dir4"
    mkdir: 已建立目錄 "dir5"
    

cp:複製檔案或目錄

copy的縮寫

cp命令能夠將一個或多個檔案或目錄複製到指定位置,亦常用於檔案的備份工作。-r引數用於遞迴操作,複製目錄時若忘記新增則會直接報錯;-f引數則用於當目標檔案已存在時會直接覆蓋而不再詢問。這兩個引數尤為常用。

語法: cp 引數 原始檔名 目標檔名

常用引數

引數 描述
-a 功能等價於pdr引數組合
-b 覆蓋目標檔案前先進行備份
-d 複製連結檔案時,將目標檔案也建立為連結檔案
-f 若目標檔案已存在,則會直接覆蓋
-i 若目標檔案已存在,則會詢問是否覆蓋
-l 對原始檔建立硬連結,而非複製檔案
-p 保留原始檔或目錄的所有屬性資訊
-r 遞迴複製所有子檔案
-s 對原始檔建立軟連結,而非複製檔案
-v 顯示執行過程詳細資訊

使用示例

  • 複製路徑:dir1/a.txt 的檔案到:dir2資料夾中

    [root@localhost 桌面]# cp dir1/a.txt dir2
    
  • 複製路徑:dir1/a.txt 的檔案到:dir2資料夾中,並定義新的名稱:b.txt

    [root@localhost 桌面]# cp dir1/a.txt dir2/b.txt
    
  • 複製資料夾:aaa 到桌面,並定義新的名稱:aaa_1

    [root@localhost 桌面]# cp -r aaa aaa_1
    

mv:移動或改名檔案

move的縮寫

能夠對檔案進行剪下和重新命名操作

語法: mv 引數 原始檔名 目標檔名

常用引數

引數 描述
-b 覆蓋前為目標檔案建立備份
-f 強制覆蓋目標檔案而不詢問
-i 覆蓋目標檔案前詢問使用者是否確認
-n 不要覆蓋已有檔案
-u 當原始檔比目標檔案更新時,才執行覆蓋操作
-v 顯示執行過程詳細資訊
-Z 設定檔案安全上下文
--help 顯示幫助資訊
--version 顯示版本資訊

使用示例

  • 將路徑:aaa/a.txt 檔案移動到桌面,並不改變檔名

    [root@localhost 桌面]# mv aaa/a.txt .
    
  • 重新命名操作,將a.txt改名為b.txt。實際操作就是 剪下後貼上

    [root@localhost 桌面]# mv a.txt b.txt
    
  • 將資料夾aaa移到bbb資料夾中

    [root@localhost 桌面]# mv aaa bbb
    
  • 將ccc資料夾中的所有檔案都移動到資料夾bbb中,如果遇到已存在的檔案直接覆蓋

    [root@localhost 桌面]# mv -f ccc/* bbb
    

rm:刪除檔案或目錄

remove的縮寫

刪除檔案或目錄,一次可以刪除多個檔案,或遞迴刪除目錄及其內的所有子檔案。

語法:rm 引數 檔名

常用引數

引數 描述
-d 僅刪除無子檔案的空目錄
-f 強制刪除檔案而不詢問
-i 刪除檔案前詢問使用者是否確認
-r 遞迴刪除目錄及其內全部子檔案
-v 顯示執行過程詳細資訊
--help 顯示幫助資訊
--version 顯示版本資訊

使用示例

  • 刪除檔案時會預設進行二次確認

    [root@localhost 桌面]# rm a.txt
    rm:是否刪除普通空檔案 "a.txt"?y
    
  • 強制刪除檔案無須二次確認

    [root@localhost 桌面]# rm -f b.txt
    
  • 刪除指定目錄及其內部的子檔案,且無須確認

    [root@localhost 桌面]# rm -f b.txt
    
  • 強制刪除aaa資料夾下,以.txt為字尾的檔案

    [root@localhost 桌面]# rm -rf aaa/*.txt
    
  • 強制刪除以b開頭的檔案

    [root@localhost 桌面]# rm -rf aaa/b*
    

顯示檔案內容

cat:在終端顯示檔案內容

concatenate files and print的縮寫

其功能是在終端裝置上顯示檔案內容。適合檢視內容較少的純文字檔案。 對於內容較多的檔案,使用cat命令檢視後會在螢幕上快速滾屏

語法: cat 引數 檔名

常用引數

引數 描述
-A 等價於-vET引數組合
-b 顯示行數(空行不編號)
-e 等價於-vE引數組合
-E 每行結束處顯示$符號
-n 顯示行數(空行也編號)
-s 顯示行數(多個空行算一個編號)
-t 等價於-vT引數組合
-T 將TAB字元顯示為^I符號
-v 使用^和M-引用,LFD和TAB除外
--help 顯示幫助資訊
--version 顯示版本資訊

使用示例

  • 檢視當前目錄下的a.txt檔案

    [root@localhost 桌面]# cat a.txt
    
  • 檢視當前目錄下的a.txt檔案,並顯示行號

    [root@localhost 桌面]# cat -n a.txt
    

tail:顯示檔案尾部內容

預設會在終端介面上顯示指定檔案的末尾10行,如果指定了多個檔案,則會在顯示的每個檔案內容前面加上檔名來加以區分

語法: tail 引數 檔名

常用引數

引數 描述
-c 設定顯示檔案尾部的字元數
-f 持續顯示檔案尾部最新內容
-n 設定顯示檔案尾部的行數
--help 顯示幫助資訊
--pid 當指定PID程序結束時,自動退出命令
--retry 當檔案無許可權訪問時,依然嘗試開啟
--version 顯示版本資訊

使用示例

  • 預設顯示檔案後十行內容

    [root@localhost 桌面]# tail a.txt
    
  • 指定顯示檔案後五行的內容

    [root@localhost 桌面]# tail -n 5 a.txt
    
  • 顯示檔案後8個位元組

    [root@localhost 桌面]# tail -c 8 a.txt
    
  • 持續重新整理檔案後5行的內容

    [root@localhost 桌面]# tail -fn 5 a.txt
    

head:顯示檔案開頭的內容

顯示檔案開頭的內容,不使用引數時預設顯示前十行

語法:head 引數 檔名

常用引數

引數 描述
-c 設定顯示頭部內容的字元數
-n 設定顯示行數
-q 不顯示檔名的頭資訊
-v 顯示檔名的頭資訊
--help 顯示幫助資訊
--version 顯示版本資訊

使用:與tail基本一致

more:分頁顯示檔案內容

如果文字檔案中的內容較多較長,使用cat命令讀取後則很難看清,這時使用more命令進行分頁檢視就比較合適了,該命令可以把文字內容一頁一頁地顯示在終端介面上,使用者每按一次Enter鍵即向下一行,每按一次空格鍵即向下一頁,直至看完為止。

語法: more 引數 檔名

常用引數

引數 描述
-c 不滾屏,先顯示內容再清除舊內容
-d 顯示提醒資訊,關閉響鈴功能
-f 統計實際的行數,而非自動換行的行數
-l 將“^L”當作普通字元處理,而不暫停輸出資訊
-p 先清除螢幕再顯示文字檔案的剩餘內容
-s 將多個空行壓縮成一行顯示
-u 禁止下劃線
-數字 設定每屏顯示的最大行數
+數字 設定從指定的行開始顯示內容
+/關鍵詞 從指定關鍵詞開始顯示檔案內容

使用示例

  • 使用分頁顯示檔案內容

    [root@localhost 桌面]# more a.txt
    
  • 每一頁顯示10行

    [root@localhost 桌面]# more -10 a.txt
    
  • 不滾屏,每顯示新的一頁前先清一次屏,並且每一頁顯示10行

    [root@localhost 桌面]# more -10 a.txt
    
  • 從第5行開始分壓顯示檔案內容

    [root@localhost 桌面]# more +5 a.txt
    

grep:文字搜尋工具

global search regular expression and print out the line的縮寫

用於全面搜尋的正規表示式,並將結果輸出。人們通常會將grep命令與正規表示式搭配使用,引數作為搜尋過程中的補充或對輸出結果的篩選

語法:grep 引數 檔名

常用引數

引數 描述
-b 顯示匹配行距檔案頭部的偏移量
-c 只顯示匹配的行數
-E 支援擴充套件正規表示式
-F 匹配固定字串的內容
-h 搜尋多檔案時不顯示檔名
-i 忽略關鍵詞大小寫
-l 只顯示符合匹配條件的檔名
-n 顯示所有匹配行及其行號
-o 顯示匹配詞距檔案頭部的偏移量
-q 靜默執行模式
-r 遞迴搜尋模式
-s 不顯示沒有匹配文字的錯誤資訊
-v 顯示不包含匹配文字的所有行
-w 精準匹配整詞
-x 精準匹配整行

vim編輯器:操作檔案

vim介紹

vim是vi的高階版本,由vim-enhanced軟體包提供

操作鍵盤次數少,不依賴滑鼠,可適用於多unix系統

gvim:vim的圖形化版本,在vim-x11包裡

vim和vi的區別:

vim比vi多了色彩提示,有基本的命令提示,支援的字符集和命令比vi多

vim命令的常用引數

引數 描述
-b 使用二進位制模式
-c 載入檔案後執行指定命令
-e 使用ex底層編輯模式
-m 不允許修改內容
-n 不使用交換分割槽,強制使用記憶體
-N 使用非相容模式
-o 開啟指定數量的視窗
-p 開啟指定數量的標籤頁
-r 顯示交換檔案
-R 使用只讀模式
-s 靜默執行模式
-T 設定使用指定終端
-u 強制使用vimrc
-v 使用vi編輯模式
-w 寫入指令碼輸出檔案
-x 對檔案進行加密
-y 使用簡易模式
-Z 使用受限模式
+數字 從指定行開始
--help 顯示幫助資訊
--noplugin 不載入外掛指令碼
--version 顯示版本資訊

使用示例

  • 建立檔案a.txt,並進行編寫操作,如果已建立則開啟

    [root@lyy my_files]# vim a.txt
    
  • 開啟a.txt檔案,並將游標移到第六行

    [root@lyy my_files]# vim +7 a.txt
    
  • 以自讀的模式進入a.txt

    [root@lyy my_files]# vim -R a.txt
    

vim的四種模式

分別是:

  • 命令模式
  • 插入模式
  • 末尾模式
  • 可視模式

使用vim命令操作檔案時,最開始的模式就是命令模式

在命令模式下按 i 可以進入插入模式,按esc鍵從插入模式退出到命令模式;

在命令模式下按 : 可進入末行模式,按enter鍵從末行模式退出到命令模式

在命令模式下按 v 可以進入可視模式,再按v從可視模式退出到命令模式。

命令模式

移動游標

  • 游標方向移動:小鍵盤旁邊的四個箭頭按鍵,分別進行上下左右操作
  • 翻頁:
    • 向下翻頁:Ctrl+FPage Down
    • 向上翻頁:Ctrl+BPage Up
  • 單行內跳轉:
    • 跳到行首:^、數字0Home
    • 跳到行尾:$End
  • 檔案內多行跳轉:
    • 跳轉到檔案的首行:gg
    • 跳轉到檔案的尾行:G
    • 跳轉到指定行:dG(d是一個整數,表示要跳轉的行數)

複製貼上

  • 刪除:

    • 刪除游標處的單個字元:xDelete
    • 刪除游標所處行,並進入插入模式:cc
    • 刪除從游標之前到行首的所有字元:d^
    • 刪除從游標開始到行尾的所有字元:d$
    • 刪除從游標開始到詞尾(單詞)的所有字元:dw
  • 剪下:

    • 剪下當前游標所在行:dd
    • 從當前游標開始,向下剪下指定的行數:Ndd(N是一個整數,表示要剪下的行數)
  • 複製:

    • 複製當前行:yy
    • 從當前行開始,向下複製N行:Nyy(N是一個大於等於3的整數,表示要複製的行數,包括當前行)
    • 將start行到end行的內容複製到dest行以下::start, end copy dest(start、end、dest都表示一個整數,表示行號)
  • 移動:

    • 將start行到end行的內容移動到dest行以下::start, end m dest(start、end、dest都表示一個整數,表示行號)
  • 貼上:

    • 貼上到游標位置之後:p(小寫p)
    • 貼上到游標位置之前:P(大寫P)

查詢檔案中的字元

命令 描述
/word 從上至下在檔案中查詢字串“word”
?word 從下至上在檔案中查詢字串“word”
n 定位下一個被查詢的字串
N 定位上一個被查詢的字串

可以使用:nohlsearch命令取消高亮

撤銷

命令 描述
u 按一次撤銷一次最近的操作
U 撤銷游標所在行的更改
Ctrl+r 取消最後一次的撤銷操作
. 重複操作

插入模式

在命令模式下按以下鍵進入插入模式

命令 描述
i 游標左邊插入文字
a 游標右邊插入文字
o 游標所在行的下一行插入新行
I 在行首插入文字
A 在行尾新增文字
O 游標所在行的上一行插入新行

末行模式

儲存和退出

  • 儲存檔案

    • 儲存當前檔案::w
    • 另存為其他檔案::w /root/my_dir/aaa.txt(/root/my_dir為路徑,aaa.txt為另存為的檔名)(如果該檔案已存在,則在w後面加上:!,強制執行)
    • 把m到n行的內容另存到指定檔案中::m,nw /root/my_dir/b.txt(m和n為整數,表示行號。/root/my_dir為路徑。b.txt為另存為的檔名)(如果該檔案已存在,則在w後面加上:!,強制執行)
  • 退出vim

    • 沒有修改檔案內容時退出::q(如果修改過檔案內容這無法使用該命令退出)
    • 強制退出::q!(即使修改檔案了也可以退出,但是不會儲存修改的內容)
    • 儲存並退出::wq
    • 強制儲存並退出:wq!

查詢和替換

命令 描述
😒 /old/new 將當前行中查詢到的第一個"old"字串替換為"new"
😒 /old/new/g 將當前行中查到的所有"old"字串替換為"new"
:m,n s/old/new/g 將行號:[m,n] 範圍內所有的字串"old"替換為"new"
:% s/old/new/gi 將整個檔案範圍內的"old"字串替換為“new”
😒 /old/new/c 在替換命令末尾加上c命令,會在替換前提示使用者進行確認

顯示行號

  • 顯示行號::set nu
  • 取消顯示行號::set nonu

顯示控制字元

  • 顯示控制字元::set list
  • 取消顯示控制字元::set nolist

取消檔案中的高亮

:nohlsearch

可視模式

用來模擬滑鼠選中指定區域的功能,與下面windows中用滑鼠選中是一樣的

命令 描述
v(小寫) 可視(選中想要的區域)
V(大寫) 行可視(只允許選中整行)
Ctrl+v 塊可視(可以選中中間的區域)

使用:可以對選中的區域進行復制、刪除、剪下等等操作

可視:按v(小寫)進入

下面白色部分就是被選中的部分,與windows中用滑鼠選中一模一樣

使用上下箭頭選中行,左右箭頭選擇當前行的列數

行可視:按V(大寫)進入

與上面相比,這裡有一定的限制,就是選中的時候只能選中一整行的

也就是隻有上下箭頭有用,左右箭頭沒用

塊可視:Ctrl+v進入

可以選中一塊區域,使用上下左右鍵控制行和列

vim:交換檔案

本地檔案系統都是有鎖的,不能多次同時開啟同一個檔案

在使用vim開啟一個檔案後,系統會建立一個副本,例如開啟a.txt檔案,那麼則會在檔案所在的路徑建立 .a.txt.swp 的副本檔案,也叫交換檔案

當我們正常使用:wq退出vim時,系統會用副本替換原來的檔案

但是如果沒有正常退出檔案,例如突然斷電、斷網以及使用者的不合法行為,交換檔案和原檔案共存時,再用vim開啟檔案就會如下錯誤:

直接按D刪除交換檔案,或者按R恢復

交換檔案屬於隱藏檔案,需要使用:ls -a命令才能檢視

相關文章