文件系統基礎
操作系統用於明確存儲設備或分區上文件的存儲結構,在存儲設備上組織文件的方式,它主要負責爲用戶創建文件、存入、讀出、修改、刪除、複製、剪切等來控制文件。
Linux文件系統結構:一個倒立的樹狀結構,層級,有索引
/:原始起點
/dev/pts/2:
最左側/:爲根目錄
其它/:爲路徑分隔符
文件路徑表示:
絕對路徑:以根目錄爲起點的路徑
相對路徑:以指定目錄爲起點的路徑
文件命名法則:
1.不能超過255個字符
2.嚴格區分大小寫
3.同一級目錄下,不可出現兩個文件名同名
4.可以使用/以外的所有字符
文件系統結構:
/boot:存放開機啓動文件,內核文件,Bootloader引導程序
/etc:存放配置文件
/dev:存放特殊文件
b:block設備,隨機訪問,以塊爲單位
c:character設備,線性訪問,以字符爲單位
/home:存放普通用戶的家目錄
/bin:存放基本用戶命令,普通用戶可執行
/sbin:存放管理命令,只有管理員纔有權限執行
/usr:存放共享文件以及二進制文件
/var:經常可變化的文件
/lib:存放程序所依賴的庫文件
/lib64:存放用於x86_64系統上的庫文件
/root:管理員家目錄
/opt:第三方程序文件
/mnt:默認文件系統掛載點
/media:默認光盤掛載點
/tmp:存放臨時文件
/srv:系統上運行的服務用到的數據
/proc:用於輸出內核與進程相關信息的僞文件系統
/sys:用於輸出當前系統上硬件相關信息的僞文件系統
linux上的程序組成:
1.二進制文件:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
2.庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
3.幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
4.配置文件:/etc, /etc/DIRECTORY, /etc/local/etc
linux下文件類型:
-:普通文件
d:目錄文件
l:鏈接文件
b:塊設備文件
c:字符設備文件
p:管道文件
s:套接字文件
基礎命令
cd命令:切換當前用戶的工作目錄
cd [OPTIONS...] DIORECTORY
cd /PATH:切換至指定工作目錄
cd ~:切換至用戶家目錄
cd ~USERNAME:切換指定用戶的家目錄
cd -:與上一次所在工作目錄之間來回切換
cd ..:切換之上一級目錄
ls命令:顯示當前目錄或指定目錄下的文件列表
ls [OPTIONS...] DIRECTORY
-d:只顯示目錄文件本身
-i:顯示每個文件的inode號
-h:對文件大小做單位換算,一般和-l選項結合用
-R:遞歸顯示目錄下所有文件以及子目錄下的文件
-r:逆序顯示文件列表
-a:顯示目錄下所有文件,包括以.開頭的文件
-A:除了.和..以外,其餘都顯示
-S:文件以大到小排序顯示
-Sr:文件從小到大顯示
文件通配符:
*:匹配任意字符任意次
?:匹配任意單個字符
[]:匹配指定範圍內任意單個字符
[^]:匹配指定範圍外任意單個字符
[0-9]:匹配數字範圍
[a-z]:匹配字母範圍
[abc123]:範圍內任意一個字符
預定義的字符類:#man 7 glob 可查看幫助
[:digit:]:匹配任意單個數字
[:alpha:]:匹配任意單個大小寫字母
[:space:]:匹配空白字符
[:punct:]:匹配任意特殊字符
[:upper:]:匹配大寫字母
[:lower:]:匹配小寫字母
[:alnum:]:匹配字母或數字
pwd命令:顯示當前用戶所在工作目錄
當前工作目錄環境變量$PWD
上一次所在目錄環境變量$OLDPWD
stat命令:查看文件元數據,包括文件時間戳,權限,大小,屬主屬組,鏈接數等
文件三個時間戳:
Access time:訪問時間,讀取文件內容時將改變此時間戳
Modify time:修改時間,修改文件內容時將改變此時間戳
Change time:改變時間,文件元數據發生變動時,將改變此此時間戳
touch命令:修改文件時間戳或創建空文件
touch [OPTIONS...] FILE...
-a:更新文件的訪問時間戳
-m:更新文件的修改時間戳
-c:刷新文件的所有時間戳,如果文件不存在,則不予創建
-t DATE:明確指定文件時間戳
YYmmddHHMM.S
touch FILE:創建空文件
cp命令:複製文件或目錄
cp [OPTIONS...] SOURCE DEST
cp SRC DEST:單源複製
如果DEST存在,且爲文件,把SRC文件內容覆蓋至DEST
如果DEST不存,則創建,並把文件內容覆蓋至DEST
如果DEST存在,且爲目錄,在DEST目錄下創建一個與SRC同名的文件,並把內容填充至此
cp SRC... DEST:多源複製
如果DEST不存在,則報錯
如果DEST存在,且爲目錄,則將SRC...複製到DEST目錄下
如果DEST存在,且爲文件,報錯
cp SRC DEST:單源複製,源爲目錄,需要加-r選項
如果DEST存在,且爲目錄,將SRC目錄複製到DEST目錄下
如果DEST存在,則爲文件,報錯
如果DEST不存在,則創建DEST目錄,並把SRC目錄下所有文件複製到DEST目錄
-r:複製目錄文件,默認只能複製文件
-f:強制
-i:交互式
-p:保留原文件的ownership,mode,timestamp屬性
-a:歸檔
-v:顯示詳細過程
--preserv=
mode:權限
ownership:屬主屬組
timestamp:時間戳
link:鏈接屬性
all:所有
命令別名:定義別名可以簡化操作,提高命令執行效率
alias:顯示當前shell進程所定義的別名
定義別名:
alias NAME='COMMAND'
撤銷別名:
unalias NAME
執行原始命令:
\COMMAND
'COMMAND'
/PATH/TO/COMMAND
在命令行定義別名只對當前shell進程有效,如果想永久有效,則需要定義在配置文件當中
/etc/bashrc:全局配置,所有用戶都生效
~/.bashrc:只對當前用戶生效
練習:
1、定義別名命令baketc,每天將/etc/目錄下所有文件,備份到/testdir獨立的子目錄下,並要求子目錄格式爲backupYYYY-mm-dd,備份過程可見
2、創建/testdir/rootdir目錄並複製/root所有下文件到該目錄內,要求保留原有權限
mv:移動或重命名文件或目錄
工作機制與cp命令一致
mv [OPTIONS...] SRC DEST
-i:交互式
-f:強制
重命名文件名:mv NAME NEWNAME
rm:刪除文件或目錄
rm [OPTIONS...] FILE...
-r:遞歸刪除
-f:強制刪除
-i:交互式
注意:危險操作 rm -rf /*
tree命令:以樹狀格式查看目錄結構
-L:查看目錄級別
-d:只顯示目錄
mkdir命令:創建目錄
-p:遞歸創建
-v:顯示詳細信息
-m MODE:創建目錄時,指定權限
rmdir命令:刪除空目錄
-p:遞歸刪除空目錄
-v:顯示過程
file命令:查看文件內容類型
file [OPTIONS...] FILE...
-b:列出命令結果,不顯示文件名
-c:顯示命令執行過程
-f:列出指定文件中的文件的類型
-L:查看軟鏈接文件對應的文件類型
-F:使用指定分隔符號替換輸出文件名後默認的”:”分隔符
-i:輸出mime類型的字符串
-z:嘗試去解讀壓縮文件的內容