一、Linux目錄結構
Linux目錄結構和Windows目錄結構從實現機制來看是完全不同的:一種不同體現在目錄與存儲介質(磁盤,內存,DVD等)的關系上,Windows一直是以存儲介質為主的,主要以盤符(C盤,D盤...)及分區來實現文件管理,然后下一層才是目錄,所以目錄就顯得不是那么重要了,除系統文件意外的用戶文件放在任何地方任何目錄都是沒有多大關系的。UNIX/Linux恰好相反,UNIX是以目錄為主的,Linux也繼承了這一優良特性。Linux是以樹形目錄結構的形式來構建整個系統的,可以理解為一個用戶可操作系統的骨架。無論是目錄結構還是操作系統內核都是存儲在磁盤上的,但從邏輯上來說Linux的磁盤是“掛在”目錄上的,每一個目錄不僅能使用本地磁盤分區的文件系統,也可以使用網絡上的文件系統,比如利用網絡文件系統(NFS)載入某個特定目錄等。
1.FHS標準
Linux的目錄結構雖然復雜,但是它其中大部分目錄結構是規定好了的,是符合FHS標準的,當你掌握好后,你的一切操作都會變得盡然有序。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統層次結構標準),多數Linux版本采用這種文件組織形式。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。
FHS定義了兩層規范:
第一層是規范了“/”下面的各個目錄應該要放什么文件數據。例如/etc放置設置文件,/bin與/sbin則應該要放置可執行文件等等。
第二層是針對/usr及/var兩個目錄的子目錄來定義。例如/var/log放置系統登錄文件,/usr/share放置共享數據等等。
FHS詳細規范可參考:FHS_2.3 標準文檔
最直觀的查看系統目錄機構的方法是通過tree命令:
FHS是根據以往無數Linux用戶和開發者的經驗總結出來的,并且會持續更新,FHS依據文件系統使用的平凡與否以及是否允許用戶隨意改動(注意,不是不能,是能否隨意),將目錄定義為四種交互作用的形態,如下表所示:
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不可變的(static) | /usr(軟件文件) | /etc(配置文件) |
/opt(第三方軟件文件) | /boot(開機及內核文件) | |
可變動的(variable) | /var/mail(用戶郵件) | /var/run(程序相關) |
/var/news(新聞組) | /var/lock(文件鎖相關) |
2.目錄路徑
使用cd
命令可以切換目錄,在Linux里面使用.
表示當前目錄,..
表示上一級目錄(以.
開頭的文件都是隱藏文件,所以這兩個目錄都是隱藏的,可以通過ls -a
命令查看隱藏文件),-
表示上一次所在目錄,~
通常表示當前用戶的“home”目錄,使用pwd
可以獲取當前所在絕對路徑。
絕對路徑:以根“/”目錄為起點的完整路徑;
相對路徑:以當前目錄“.”為起點,以要到的目錄為終點,如:
usr/local/bin
;
相對路徑實際山并沒有加上當前目錄的那個“.”,而是直接以目錄名開頭,因為usr目錄是當前目錄的子目錄,;如果是當前目錄的上一級目錄,則需要使用“..”。
提示:在進行目錄切換過程中,請多次使用Tab
鍵自動補全,可避免輸入錯誤,連續按兩次Tab
可以顯示出全部候選結果
二、Linux文件的基本操作
1.新建
-
新建文件:
touch
,touch命令主要是來更改已有文件的時間戳的,但在不加任何參數的情況下,可以創建一個指定文件名的空白文件(不會覆蓋已有同名文件):
新建文件 -
新建目錄
mkdir
,mkdir命令可以創建一個空目錄,也可同時指定創建目錄的權限屬性:
新建目錄
2.復制
復制文件
cp
,cp命令復制一個文件或目錄到指定目錄。-
復制目錄
cp -r
,直接使用cp
命令復制一個目錄會報錯,要成功復制需要加上-r
或-R
:
復制目錄
3.刪除
-
刪除文件
rm
,rm命令刪除一個文件或目錄。刪除只讀文件需要使用-f
參數進行強制刪除:
刪除文件 -
刪除目錄
rm -r
,跟復制目錄一樣,如果要刪除一個目錄,也需要加上-r
或-R
參數:
刪除目錄
4.移動和重命名
-
移動文件
mv
,mv命令用來移動文件,用法mv <filename> <dest-dir>
:
移動文件 -
重命名文件
mv
,mv命令也可以用來重命名文件,用法mv <filename> <new-filename>
:
重命名文件 -
批量重命名
rename
,rename命令可以用來實現批量重命名。
批量重命名
rename
是先使用第二個參數的通配符匹配所有后綴為.txt
的文件,然后使用第一個參數提供的正則表達式將匹配的這些文件的.txt
后綴替換成.c
,這一點可以參考sed
命令。
5.查看
標準輸入輸出:當我們執行一個shell命令行時通常會自動打開三個標準文件:標準輸入文件(stdin),默認對應終端的鍵盤;標準輸出文件(stdout)和標準錯誤輸出文件(stderr),這兩個文件都對應被重定向到終端的屏幕。進程從標準輸入文件中得到的輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。
-
使用cat,tac和nl命令查看文件
cat
:正序打印文件內容到標準輸出,cat -n
可以顯示行號。tac
:倒序打印文件內容到標準輸出。-
nl
:添加行號并打印,這是比cat -n
更專業的行號打印命令。
nl命令幫助1
nl命令幫助2
-
使用more和less命令分頁查看文件
more
:默認只打開一屏內容,終端底部顯示當前閱讀的進度,使用Enter
向下滾動一行,使用Space
鍵向下滾動一屏,按下h
顯示幫助,q
退出。less
:集成了vi和more的功能。
-
使用head和cat命令查看文件
head
:查看文件頭幾行(默認10行,不足10行顯示全部),結合-n
參數設置查看的行數。tail
:查看文件尾幾行,結合-n
參數設置查看的行數,-f
參數實現不停地讀取某個文件尾部的內容并顯示。
-
使用file查看文件類型
file查看文件類型
6.編輯
在Linux下編輯文件通常會直接使用專門的命令行編輯器(比如:emacs,vim,nano)。