1.Linux系統中目錄的樹狀結構
目錄 |
|
/bin |
存放二進制可執行文件(ls,cat,mkdir等),常用命令一般都在這里。 |
/etc |
存放系統管理和配置文件 |
/home |
存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示
|
/usr |
用於存放系統應用程序,比較重要的目錄/usr/local 本地系統管理員軟件安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。 /usr/x11r6 存放x window的目錄 /usr/bin 眾多的應用程序 /usr/sbin 超級用戶的一些管理程序 /usr/doc Linux文檔 /usr/include linux下開發和編譯應用程序所需要的頭文件 /usr/lib 常用的動態鏈接庫和軟件包的配置文件 /usr/man 幫助文檔 /usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的庫 |
/opt |
額外安裝的可選應用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里。 |
/proc |
虛擬文件系統目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息。 |
/root |
超級用戶(系統管理員)的主目錄(特權階級^o^) |
/sbin |
存放二進制可執行文件,只有root才能訪問。這里存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等。 |
/dev |
用於存放設備文件。 |
/mnt |
系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統。 |
/boot |
存放用於系統引導時使用的各種文件 |
/lib |
存放跟文件系統中的程序運行所需要的共享庫及內核模塊。共享庫又叫動態鏈接共享庫,作用類似windows里的.dll文件,存放了根文件系統程序運行所需的共享文件。 |
/tmp |
用於存放各種臨時文件,是公用的臨時文件存儲點。 |
/var |
用於存放運行時需要改變數據的文件,也是某些大文件的溢出區,比方說各種服務的日志文件(系統啟動日志等。)等。 |
/lost+found |
這個目錄平時是空的,系統非正常關機而留下"無家可歸"的文件(windows下叫什么.chk)就在這里 |
重要目錄的解釋:
/bin:bin是Binary的縮寫, 這個目錄存放着最常使用的命令,諸如mkdir、cat命令。
/etc:etc這個目錄用來存放所有系統管理的配置目錄和配置文件。
/home:用於存放用戶主目錄的,在Linux中,每個用戶都有一個以自身賬號命名的目錄,我們稱其為用戶主目錄,用戶主目錄一般存放在/home下。
【注】
⑴windows與linux文件路徑的區別在於目錄的分隔符,Windows目前用正反斜杠(/和\)均可以,Linux只能用正斜杠(/)。
⑵因為web程序開始於Unix系統,所以URL也用 / 做路徑分割符,后沿襲做運算符/除法
2.目錄的增、刪、改、查操作
mkdir (創建新目錄)
語法:mkdir [-mp] 目錄名稱 選項與參數: -m :mode創建目錄的同時指明目錄的權限 -p :錄遞歸的創建上層目 實例: [root@www ~]# cd /tmp [root@www tmp]# mkdir –m 711 test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 因找不到上層目錄而創建失敗 [root@www tmp]# mkdir –m 711 -p test1/test2/test3/test4 加了參數-p后就可以遞歸的創建上層目錄
rmdir (刪除空的目錄)
語法:rmdir [-p] 目錄名稱 選項與參數: -p :連同上一級『空的』目錄也一起刪除,僅當前目錄刪除后其父目錄為空時父目錄才會被刪除 實例: [root@www tmp]# rmdir test <==可直接刪除,沒問題 [root@www tmp]# rmdir test1 <==因為尚有內容,所以無法刪除! 【注意】
⑴加了參數 -p,僅當前目錄刪除后其父目錄為空時父目錄才會被刪除。 ⑵rmdir 僅能刪除空目錄,用 rm –rf 目錄 來刪除非空目錄。
cp (復制目錄或文件)
語法: cp [-adfilprsu] 來源檔(source) 目標檔(destination) cp [options] source1 source2 source3 .... directory 選項與參數: -i:若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用) -p:連同文件的屬性一起復制過去,而非使用默認屬性(備份時常用); -r:遞歸的復制,用於目錄的復制行為(常用) 實例: [root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆蓋,y為覆蓋
mv (移動文件與目錄,或修改名稱)
語法: mv [-fiu] source destination mv [options] source1 source2 source3 .... directory 選項與參數: -f :force 強制移動的意思,如果目標文件已經存在,不會詢問而直接覆蓋; -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋! 實例: [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest <==將目錄bashrc移動到目錄 mvtest [root@www tmp]# mv mvtest mvtest2 <==將目錄mvtest重命名為mvtest2 【注】mv命令中若目標已存在則表示移動,若目標不存在則表示重命名
ls(列出某目錄中的內容)
語法: ls [options] 目錄名稱 選項與參數: -a :列出包括隱藏文件在內的全部文件, -l :列出文件的屬性與權限等數據(常用) 實例: [root@localhost ~]# ls -l ~ #查看root主目錄中各文件或目錄的屬性

【注意】⑴目錄的增刪操作中參數-p表示向上遞歸,而在拷貝和移動中參數-r表示向下遞歸,參數-f和-i分別表示強制和交互式操作。
3. 文件的增、刪、改、查操作
touch(新增文件)
語法: touch 文件名 功能描述:當參數為已存在的文件,則表示更新該文件的創建時間為當前時間。 若參數為不存在的文件則表示新建空的文件。 實例: ①更新文件的創建時間: [root@mail test]# ll 總用量 4 -rw-r--r-- 1 root root 12 3月 12 13:43 1.txt [root@mail test]# touch 1.txt [root@mail test]# ll 總用量 4 -rw-r--r-- 1 root root 12 3月 12 13:58 1.txt #更新到系統當前時間 ②創建空的文件: [root@mail test]# ll -rw-r--r-- 1 root root 12 3月 12 13:58 1.txt [root@mail test]# touch 2.txt [root@mail test]# ll -rw-r--r-- 1 root root 12 3月 12 13:58 1.txt -rw-r--r-- 1 root root 0 3月 12 14:06 2.txt #文件大小為0所以是個空文件
rm (刪除文件或目錄)
語法:rm [options] 文件或目錄 選項與參數: -f :就是 force 的意思,忽略不存在的文件,不會出現警告信息; -i :交互式刪除,在刪除前會詢問使用者是否動作 -r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!! 實例: [root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y
【注】rm 命令不僅可刪除文件,還可以用來刪除非空目錄
cat(查看文件內容)
cat命令可用於查看文件內容、創建新的文件、將多個文件合並成一個文件,它常與重定向符號(">")配合使用,具體語法如下:
- 查看文件內容:cat filename
- 新建一個名為filename的文件:cat >filename 只能創建新文件,不能編輯已有文件,這是與vi命令的區別
- 將多個文件合並為一個文件:cat file1 file2 > file
【注】tac與cat命令剛好相反,文件內容從最后一行開始顯示,可以看出 tac 是 cat 的倒着寫。
4.文件或目錄的屬性管理
可以使用ll或者ls –l命令來顯示一個目錄中所有的文件或目錄的屬性。
示例:[root@localhost ~]# ls -l ~ 查看root主目錄中各文件或目錄的屬性
⑴開始的total表示該目錄的大小(以KB為單位)
⑵各文件或目錄七個屬性段的含義:
第1段表示文件類型及讀、寫、執行權限
第2段表示文件硬鏈接數(同快捷方式)或子目錄數(類型為目錄的前提下)
第3段表示該文件的屬主
第4段表示該文件的屬組
第5段表示該文件的大小(以byte字節為單位)
第6段表示該文件的創建時間(以月-日-年的格式表示)
第7段表示該文件的文件名
4.1 chown(更改文件屬主)
語法: chown [–R] 屬主名 文件名 chown [-R] 屬主名:屬組名 文件名 【注】chown可同時更改屬主和屬組,參數R表示遞歸更改
4.2 chgrp(更改文件屬組)
語法:chgrp [-R] 屬組名 文件名
4.3 chmod(更改文件的讀、寫以及執行權限)
Linux文件的權限有兩種更改方法:一種是通過數字,一種是通過符號。文件的基本權限有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限,各權限的權值對照表如下:
r:4
w:2
x:1
這相當於將rwx視作3位二進制數,有相應權限該位為1,無權限該位為0。
法一、通過數字更改權限:
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
法二、通過符號更改權限
改變文件權限就是改變(1)user (2)group (3)others這三個身份上的讀、寫及執行權限,我們可以由u, g, o來分別代表這三種身份,此外可用a (all)代表全部身份。那么改變權限的另一種方式如下:
創建文件並將文件權限設置為 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 來設定: # touch test1 // 創建 test1 文件 # ls -al test1 // 查看 test1 默認權限 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1 # chmod u=rwx,g=rx,o=r test1 // 修改 test1 權限 # ls -al test1 -rwxr-xr-- 1 root root 0 Nov 15 10:32 test1 拿掉所有人的可執行權限,其它權限不變 # chmod a-x test1 # ls -al test1 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1
【注】⑴第一種數字權限表示法無需指明身份,第二種需指明身份的簡寫。
有關文件和目錄的屬性設置可參考博文:Linux 文件屬性
5.文件的特殊操作
5.1 find查找命令
Linux下find命令提供相當多的查找條件,因此功能比較強大,可以在眾多文件或目錄下查找你想要的任何文件或目錄。
find命令語法格式:find [查找路徑] [查找條件] [針對查找到的結果逐個處理]
查找路徑:指在那個目錄下查找,默認為在當前目錄;
查找條件:即為搜索條件,可取值如下:
s 套接字文件。
b 塊設備文件,二進制文件。
c 字符設備文件。
p 命名管道文件。
- 普通文件,或更准確地說,不屬於以上幾種類型的文件。


-exec: 對查找的結果逐個執行某種shell命令。命令的形式為command { } \;,其中“{ } \;”是固定寫法,變化的僅僅是command,且需注意他們之間的空格。
#在當前目錄下查找名為test.sh的文件,首先打印出文件名,再輸出文件的內容 [root@localhost bash]# find -name test.sh -print -exec cat {} \; ./test.sh #!/bin/bash echo "Hello World !" #只輸出文件的內容,不打印文件名 [root@localhost bash]# find -name test.sh -exec cat {} \; #!/bin/bash echo "Hello World !"
[root@localhost bash]# find -name test.sh -ok cat {} \; < cat ... ./test.sh > ? y #!/bin/bash echo "Hello World !" [root@localhost bash]# find -name test.sh -ok cat {} \; < cat ... ./test.sh > ? n [root@localhost bash]#