1. 程式人生 > >Linux學習-文件管理(1)

Linux學習-文件管理(1)

詳細信息 src 最長 mod 展開 重新啟動 upper 填充 虛擬

文件管理——當你使用Linux時,大部分時間都會和文件打交道,我們需要了解基本的文件操作,如創建文件、刪除文件、復制文件、重命名文件以及為文件創建鏈接等。


目錄

文件的組成

目錄結構

文件類型

pwd命令

更改目錄 cd

查看文件狀態 stat --時間戳

文件通配符

復制文件和目錄 cp

未完待續


詳細內容


一、文件的組成

①元數據 -- 元數據就是數據的數據,用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息等;

對文件系統元數據的更改都被保存到一份單獨的日誌裏,當發生系統崩潰時可以利用日誌正確地恢復數據。除此之外,日誌使系統重新啟動時不必進行文件系統的檢查,從而縮短了恢復時間。

②數據-- 普通文件中的實際數據



二、目錄結構

Linux下文件和目錄組織成一個單根倒置樹結構:

技術分享圖片


/ 根目錄

/boot 引導文件存放目錄

/bin 供所有用戶使用的基本命令

/sbin 管理類的基本命令

/lib 庫文件以及內核模塊文件

/lib64 專用於x86_64系統上的輔助共享庫文件存放位置

/etc 配置文件目錄

/home 普通用戶家目錄,軟件的個性化配置

如用戶自己設置的別名就存放在該目錄下

/root 管理員家目錄


/dev 設備文件,Linux下一切皆文件

/media 便攜式移動設備掛載點

/mnt 臨時文件系統掛載點

/opt 第三方應用程序的安裝位置

/tmp 臨時文件存儲位置

/usr read-only,以後不發生變化的數據

/var 可變數據文件 如運行程序緩存的數據,日誌文件等

/proc 虛擬文件系統

/proc/cpuinfo 查看CPU信息

/proc/meninfo 查看內存信息

/sys 虛擬文件系統



查看根目錄下的文件和目錄:


技術分享圖片


以.開頭的文件為隱藏文件

文件名最長255個字節(linux沒有文件擴展名的概念,這一點和Windows不同)

藍色->目錄

綠色-> 可執行文件

紅色-> 壓縮文件

淺藍色-> 鏈接文件


tree--以樹形結構列出目錄結構

-d 只列子目錄,不列子文件

-L+n 查看n級目錄

*******運行tree命令的時候可能會遇到命令不存在等的問題**********

如下圖所示操作:

技術分享圖片

***********************************************************************


三、文件類型

- 普通文件

d 目錄文件

b 塊設備

c 字符設備

l 軟鏈接

s 套接字文件socker

p 管道文件


技術分享圖片


四、pwd命令

pwd--顯示當前文件所在路徑

-p 顯示真實物理路徑,當目錄為軟鏈接時,顯示源目錄


. 代表當前目錄

.. 代表上一級目錄 (任何目錄下都有. 和..兩個目錄 ; cd ../.. 代表進入上上一級目錄)


basename 顯示基名(最後一項)

dirname 顯示目錄名(除最後一項)


技術分享圖片


五、更改目錄 cd

cd 進入家目錄

列出目錄內容 ls

-a 顯示所有文件

-A 顯示所有文件,不包含.和..

-l 顯示詳細信息

-R 遞歸展開目錄

-d 不列出子目錄

-1(數字1) 以一縱列顯示

-S 從大到小排列

-t 從今往前的修改時間排序

-ut 從今往前的訪問時間排序

-U 按目錄存放信息排序

-X 按文件後綴排序


六、查看文件狀態 stat

三個時間戳

access time訪問時間 atime

midify time修改時間 mtime (文件的數據更改的時間)

change time改變時間 ctime (文件的元數據更改的時間,mtime變ctime一定也跟著變)

touch 當文件存在時,可以更新三個時間戳

當文件不存在時,則創建

touch -a 更新atime 和 ctime

touch -m 更新mtime 和 ctime

touch -t [CC[YY]]MMDDHHmm[.ss] (年月日時分.秒) 更新atime mtime到指定時間

touch -c 當文件已存在時,更新全部時間戳;當文件不存在時,不創建


七、文件通配符

* 0或多個任意字符

一個任意字符

~ 當前用戶家目錄

~name 用戶name的家目錄

[0-9] 數字範圍

[a-Z] 字母範圍 註意:ls +字母範圍 是按aAbBcCdD....zZ排列的

[任意字符] 匹配方括號內的任何的一個字符

[^任意字符] 匹配方括號內的字符以外的任何字符


[:digit:] 任意數字 例如:ls [[:digit:]]*

[:lower:] 任意小寫字母

[:upper:] 任意大寫字母

[:alpha:] 任意大小寫字母

[:alnum:] 任意字母或數字

[:blank:] 水平空白字符

[:space:] 水平或垂直空白字符

' ' 也可以表示空格

[:punct:] 任意符號

案例:

1、顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數字,其它為任意字符的文件或目錄

ls -d /etc/rc[0-6]*

2、顯示/etc目錄下,所有以.d結尾的文件或目錄

ls -d /etc/*.d

3、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

ls -d /etc/[mnrp]*.conf

4、只顯示/root下的隱藏文件和目錄(三種寫法)

ls -a --ignore=[^.]* /root

ls -a -I "[^.]*" /root

ls -d .* /root

5、只顯示/etc下的非隱藏目錄

ls -d /etc/*/

6、顯示/etc目錄下所有以k開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄

ls -d /etc/k*[[:digit:]]*[[:lower]]

7、顯示/etc目錄下,所有以一個大寫字母開頭,以兩個數字結尾的文件或目錄

ls -d /etc/[[:upper]]*[0-9][0-9]

8、顯示/etc目錄下,文件名至少包含一個小寫字母和一個數字並以.conf結尾的文件或目錄

ls -d /etc/*[[:lower]]*[0-9]*.conf


八、復制文件和目錄 cp

cp + source + dest

1、source是單個文件

如果目標不存在,新建dest,並將文件內容填充至dest

如果目標存在且是文件,內容覆蓋

如果目標存在且是目錄,在dest下新建與源文件名同名的文件,並填充至新文件

2、source是目錄——要加選項 -r(此選項下面有說明)

如果目標不存在,則新建指定目錄,然後復制source下所有文件至新建目錄

如果目標存在,在dest下新建與源目錄同名的目錄,並復制源目錄內容至新建目錄

總結如下圖

技術分享圖片

cp

-i覆蓋前提示 –n:不覆蓋,註意兩者順序

-r, -R: 遞歸復制目錄及內部的所有內容

-a: 歸檔,相當於-dR --preserv=all

-d:--no-dereference --preserv=links 不復制原文件,只復制鏈接名

--preserv[=ATTR_LIST]

mode: 權限

ownership: 屬主屬組

timestamp:

links

xattr

context

all

-p: 等同--preserv=mode,ownership,timestamp

-v: --verbose 顯示復制的過程

-f: --force 當普通用戶對某目錄有rx權限時,使用-f可以將沒有修改權限的文件強制覆蓋。即刪除再創建

案例

1、定義別名命令baketc,將/etc/目錄下所有文件,備份到/testdir獨立的子目錄下,並要求子目錄格式為 backupYYYY-mm-dd,備份過程可見

alias baketc='mkdir -p(遞歸創建) /testdir/backup$(date +%F);cp -av /etc/* /testdir/backup$(date +%F)'

2、創建/testdir/rootdir目錄,並復制root下所有文件到該目錄內,要求保留原有權限

mkdir -p /testdir/rootdir;cp -a /root/* /testdir/rootdir/rootdir


Linux學習-文件管理(1)