Linux學習-文件管理(1)
目錄
文件的組成
目錄結構
文件類型
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)