一、Linux目錄結構
Linux和Windows的不同
一種不同是體現在目錄與存儲介質(磁盤,內存,DVD等)的關系上,Windows一直是以存儲介質為主的,主要以盤符(C盤,D盤...)及分區來實現文件管理,然后之下才是目錄,目錄就顯得不是那么重要,除系統文件之外的用戶文件放在任何地方任何目錄也是沒有多大關系。所以通常Windows在使用一段時間后,磁盤上面的文件目錄會顯得雜亂無章(少數善于整理的用戶除外吧)。然而UNIX/Linux恰好相反,UNIX是以目錄為主的,Linux也繼承了這一優良特性。Linux是以樹形目錄結構的形式來構建整個系統的,可以理解為樹形目錄是一個用戶可操作系統的骨架。雖然本質上無論是目錄結構還是操作系統內核都是存儲在磁盤上的,但從邏輯上來說Linux的磁盤是“掛在”(掛載在)目錄上的,每一個目錄不僅能使用本地磁盤分區的文件系統,也可以使用網絡上的文件系統。舉例來說,可以利用網絡文件系統(Network File System,NFS)服務器載入某特定目錄等。
1. FHS標準
Linux的目錄結構復雜在于,系統的正常運行是以目錄結構為基礎的,初學者里面大部分目錄都不知道其作用,重要與否,對于那些重度Windows用戶,他們會糾結很長時間,關于我安裝的軟件在哪里這類問題。簡單是因為,其中大部分目錄結構是規定好了的(FHS標準),是不可更改的。
FHS(英文:Filesystem Hierarchy Standard中文:文件系統層次結構標準),多數Linux版本采用這種文件組織形式,FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。
FHS定義了兩層規范,第一層是,/下面的各個目錄應該要放什么文件數據,例如/etc應該放置設置文件,/bin與/sbin則應該放置可執行文件等等。
第二層則是針對/usr及/var這兩個目錄的子目錄來定義。例如/var/log放置系統登錄文件,/usr/share放置共享數據等等。
FHS_2.3標準文檔
FHS是根據以往無數Linux用戶和開發者的經驗總結出來的,并且會維持更新,FHS依據文件系統使用的頻繁與否以及是否允許用戶隨意改動(注意,不是不能),將目錄定義為四種交互作用的形態,如下表所示:
2.目錄路徑
路徑
路徑就是要去哪兒的路線。如果想進入某個具體的目錄或者想獲得某個目錄的文件(目錄本身也是文件)就用路徑來找到。
使用cd命令可以切換目錄,在Linux里面使用.表示當前目錄,..表示上一級目錄(注意,以.開頭的文件都是隱藏文件,所以這兩個目錄必然也是隱藏的,可以使用ls -a命令查看隱藏文件), -表示上一次所在目錄,~通常表示當前用戶的home目錄。使用pwd命令可以獲取當前所在路徑(絕對路徑)。
進入上一級目錄:
$ cd ..
進入你的home目錄:
$ cd ~
或者cd
/home/<你的用戶名>
使用pwd獲取當前路徑:
$ pwd
絕對路徑
關于絕對路徑,簡單地說就是以根" / "目錄為起點的完整路徑,以要到的目錄為終點,表現形式如:
/usr/local/bin,表示根目錄下的usr目錄中的local目錄中的bin目錄。
相對路徑
相對路徑,是以當前目錄.為起點,以要到的目錄為終點,表現形式如:
usr/local/bin(這里假設當前目錄為根目錄)。表示相對路徑并沒有加上表示當前目錄的那個.,而是直接以目錄名開頭,因為這個usr目錄為/目錄下的子目錄,可以省略這個.;如果是當前目錄的上一級目錄,則需要使用..,比如當前目錄為home目錄,根目錄就應該表示為../../,表示上一級目錄(home目錄)的上一級目錄(/目錄)。
以home目錄為起點,分別以絕對路徑和相對路徑的方式進入/usr/local/bin目錄:
絕對路徑
$ cd/usr/local/bin
相對路徑
$ cd../../usr/local/bin
進入一個目錄,可以使用絕對路徑也可以使用相對路徑,選擇路徑,方便就好,看個人喜好。比如假設當前在/usr/local/bin目錄,如果要進入的是usr目錄,那么cd /usr,就比cd ../..方便一點。
提示:在進行目錄切換的過程中請多使用Tab鍵自動補全,可避免輸入錯誤,連續按兩次Tab可以顯示全部候選結果。
二、Linux文件的基本操作
1.新建
新建空白文件
使用touch命令創建空白文件。touch命令,主要作用是來更改已有文件的時間戳的(e.g.最近訪問時間,最近修改時間),但其在不加任何參數的情況下,只指定一個文件名,則可以創建一個指定文件名的空白文件(不會覆蓋已有同名文件),當然也可以同時指定該文件的時間戳。
創建名為test的空白文件,因為在其它目錄沒有權限,所以需要先cd ~切換回用戶的/home/shiyanlou目錄:
$ cd ~
$ touch test
新建目錄
使用mkdir(make
directories)命令可以創建一個空目錄,也可同時指定創建目錄的權限屬性。
創建名為“ mydir ”的空目錄:
$ mkdir mydir
使用-p參數,同時創建父目錄(如果不存在該父目錄),如下我們同時創建一個多級目錄(這在安裝軟件、配置安裝路徑時非常有用):
$ mkdir -pfather/son/grandson
后面的目錄路徑,也可以用絕對路徑的方式表示。
2.復制
復制文件
使用cp(copy)命令復制一個文件到指定目錄。
將之前創建的“ test ”文件復制到“
/home/shiyanlou/father/son/grandson ”目錄中:
$ cp testfather/son/grandson
復制目錄
如果直接使用cp命令復制一個目錄的話,會出現如下錯誤:
要成功復制目錄需要加上-r或者-R參數,表示遞歸復制
3.刪除
刪除文件
使用rm(remove files
or directories)命令刪除一個文件:
$ rm test
想要刪除一些為只讀權限的文件,直接使用rm刪除會顯示一個提示,如下:
如果想忽略這提示,直接刪除文件,可以使用-f參數強制刪除:
刪除目錄
要刪除一個目錄,也需要加上-r或-R參數:
4.移動文件與文件重命名
移動文件
使用mv(move or
rename files)命令移動文件(剪切)。將文件“ file1 ”移動到Documents目錄:
mv源目錄文件目的目錄:
$ mkdirDocuments
$ mv file1Documents
重命名文件
將文件“ file1 ”重命名為“ myfile ”:
mv舊的文件名新的文件名:
$ mv file1myfile
批量重命名
使用命令rename來實現。不過它要用perl正則表達式來作為參數(正則表達式我們要在后面才會介紹到),只要記得這個rename命令可以批量重命名就好了。
使用通配符批量創建5個文件:
$ touchfile{1..5}.txt
批量將這5個后綴為.txt的文本文件重命名為以.c為后綴的文件:
$ rename's/.txt/.c/' *.txt
批量將這5個文件,文件名改為大寫:
$ rename'y/a-z/A-Z/'.c
rename是先使用第二個參數的通配符匹配所有后綴為.txt的文件,然后使用第一個參數提供的正則表達式將匹配的這些文件的.txt后綴替換為.c。
5.查看文件
使用cat,tac和nl命令查看文件
前兩個命令都是用來打印文件內容到標準輸出(終端),其中cat為正序顯示,tac為倒序顯示。
標準輸入輸出:當我們執行一個shell命令行時通常會自動打開三個標準文件,即標準輸入文件(stdin),默認對應終端的鍵盤、標準輸出文件(stdout)和標準錯誤輸出文件(stderr),后兩個文件都對應被重定向到終端的屏幕,以便我們能直接看到輸出內容。進程將從標準輸入文件中得到輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。
比如要查看之前從/etc目錄下拷貝來的passwd文件:
$ cat passwd
可以加上-n參數顯示行號:
$ cat -npasswd
nl命令,添加行號并打印,是比cat -n更專業的行號打印命令。
簡單列舉它的常用的幾個參數:
-b :指定添加行號的方式,主要有兩種:
-b a:表示無論是否為空行,同樣列出行號("cat
-n"就是這種方式)
-b t:只列出非空行的編號并列出(默認為這種方式)
-n :設置行號的樣式,主要有三種:
-n ln:在行號字段最左端顯示
-n rn:在行號字段最右邊顯示,且不加0
-n rz:在行號字段最右邊顯示,且加0
-w :行號字段占用的位數(默認為6位)
使用more和less命令分頁查看文件
more和less就是天生用來"閱讀"一個文件的內容的,比如說man手冊內部就是使用的less來顯示內容。more命令比較簡單,只能向一個方向滾動,而less為基于more和vi(一個強大的編輯器)開發,功能更強大。less的使用基本和more一致,具體使用請查看man手冊,這里只介紹more命令的使用。
使用more命令打開passwd文件:
$ more passwd
打開后默認只顯示一屏內容,終端底部顯示當前閱讀的進度。可以使用Enter鍵向下滾動一行,使用Space鍵向下滾動一屏,按下h顯示幫助,q退出。
使用head和tail命令查看文件
它們一個是只查看文件的頭幾行(默認為10行,不足10行則顯示全部)和尾幾行。拿passwd文件舉例,比如當我們想要查看最近新增加的用戶,那么我們可以查看這個/etc/passwd文件,因為系統新增加一個用戶,會將用戶的信息添加到passwd文件的最后,這時候使用tail命令:
$ tail/etc/passwd
甚至更直接的只看一行,加上-n參數,后面緊跟行數:
$ tail -n 1/etc/passwd
6.查看文件類型
在Linux中文件的類型不是根據文件后綴來判斷的,通常使用file命令查看文件的類型:
$ file/bin/ls
說明這是一個可執行文件,運行在64位平臺,并使用了動態鏈接文件(共享庫)。
7.編輯文件
在Linux下面編輯文件通常使用專門的命令行編輯器比如(emacs,vim,nano),可以直接使用Linux內部的vim學習教程,輸入如下命令即可開始:
$ vimtutor
三、召喚眼睛
$ xeyes
可以使用如下命令將它放到后臺運行:
$ nohup xeyes&
*五、作業
圖片版詳見http://t.cn/RaWorGA