Linux目錄結構,基本命令及檔案操作命令
一.Linux系統中的目錄結構
1.根目錄 (/)
根目錄與開機/還原/系統修復等動作有關。目錄不要放在非常大的分割槽, 因為越大的分割槽內你會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。
因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。 說白了,就是根目錄和Windows的C盤一個樣。
一下介紹根目錄下的子目錄
2.bin目錄(二進位制)
/bin主要用於存放普通使用者可以使用的命令。
該目錄為命令檔案目錄,也稱為二進位制目錄。包含了供系統管理員及普通使用者使用的重要的linux命令和二進位制(可執行)檔案
3.boot目錄(引導)
主要用於存放Linux啟動所需的檔案,包括核心,引導檔案等。
該目錄中存放系統的核心檔案和引導裝載程式檔案,/boot/vmlinuz為linux的核心檔案,以及/boot/gurb。建議單獨分割槽,分割槽大小100M即可。
4.dev目錄(裝置)
/dev: 裝置檔案目錄,存放裝置檔案。訪問該目錄下某個檔案,相當於訪問某個裝置存放連線到計算機上的裝置(終端、磁碟驅動器、光碟機及網絡卡等)的對應檔案,包括字元裝置和塊裝置等,常用的是掛載光碟機mount /dev/cdrom/mnt。
5.etc目錄
/etc: 存放系統和服務的配置檔案。該目錄存放系統的大部分配置檔案和子目錄(例如系統使用者密碼,網路介面,防火牆和系統服務的配置檔案等)。不建議在此目錄下存放可執行檔案,重要的配置檔案有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11(X Window系統有關)、/etc/sysconfig(與網路有關)、/etc/xinetd.d若要修改其中檔案,要遵循先備份後修改的原則
6.home目錄
/home: 該目錄用於存放普通使用者的家目錄,用來存放使用者的個人檔案,系統檔案和應用程式的初始化檔案等。家目錄是使用者登入系統後的起始目錄。
新增使用者賬號時,使用者的宿主目錄都存放在此目錄下,~表示當前使用者的宿主目錄,~test表示使用者test的宿主目錄。建議單獨分割槽。
7.lib目錄
/lib:用於存放系統及相關軟體的依賴的庫檔案。
系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫的協助,該目錄下存放了各種程式語言庫。典型的linux系統包含了C、C++和FORTRAN語言的庫檔案。/lib目錄下的庫映像檔案可以用來啟動系統並執行一些命令,目錄/lib/modules包含了可載入的核心模組,/lib目錄存放了所有重要的庫檔案,其他的庫檔案則大部分存放在/usr/lib目錄下。
8.lost+fount目錄
/lost+fount:如果系統出現意外或掉電關機,檔案系統會損失一些檔案或產生一些檔案碎片。當系統重新啟動時會修復這些檔案,並將這些檔案放入次目錄以便管理員恢復。多數情況下系統會自動修復這些碎片檔案,該目錄只存在於分割槽掛載目錄中。
9.media,mnt目錄
/media:用來掛載一些可移動媒體,例如光碟機,U盤。
/mnt主要用來臨時掛載一些磁碟裝置,為某些裝置提供預設掛載點.如floppy,cdrom。這樣當掛載了一個裝置如光碟機時,就可以通過訪問目錄/mnt/cdrom下的檔案來訪問相應的光碟機上的檔案了。
10.opt目錄
/opt: 給主機額外安裝軟體所擺放的目錄,也可以將需要編譯安裝的軟體放於此目錄。如:如果想要自行安裝某軟體,可以將該軟體安裝在該目錄下。以前的 Linux 系統中,習慣放置在 /usr/local 目錄下。
11.proc目錄(process)
/proc: 系統執行時將相關的暫存資訊放在此目錄。此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
12、root目錄(根)
/root:系統管理員root的家目錄,系統第一個啟動的分割槽為/,所以最好將/root和/放置在一個分割槽下。
13.sbin目錄
存放一些系統管理命令。一般情況下普通使用者不能執行這些命令。
/sbin,/usr/sbin,/usr/local/sbin:放置系統管理員使用的可執行命令,如fdisk、shutdown、mount等。
與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般使用者只能"檢視"而不能設定和使用。
14.srv目錄(serve服務)
/srv: 服務啟動之後需要訪問的資料目錄,如www服務需要訪問的網頁資料存放在/srv/www內。
15.usr目錄
存放一些應用程式,幫助和文件,有時也存放一些配置檔案和程式等。
/usr: 應用程式存放目錄,/usr/bin 存放應用程式, /usr/share 存放共享資料,/usr/lib 存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案,/usr/local 存放軟體升級包,/usr/share/doc 系統說明檔案存放目錄。/usr/share/man: 程式說明檔案存放目錄,使用 man ls時會查詢/usr/share/man/man1/ls.1.gz的內容。建議單獨分割槽,設定較大的磁碟空間。
16.var目錄
放置系統執行過程中經常變化的檔案,例如日誌檔案,資料庫檔案,和web伺服器程式檔案等。
隨時更改的日誌檔案 /var/log。/var/log/message: 所有的登入檔案存放目錄。/var/spool/mail: 郵件存放的目錄。 /var/run: 程式或服務啟動後。建議單獨分割槽,設定較大的磁碟空間。
17.tmp目錄(temporary 臨時)
存放系統或程序在執行時產生的臨時檔案,使用者也可以在此存放自己的臨時檔案。
tmp目錄儲存的臨時檔案對所有使用者可見,因此此目錄的檔案可能回洩露並造成一些安全問題。
該目錄下的所有檔案會被定時刪除,且任何人都可以訪問,重要資料不可放置在此目錄下。10天內未訪問,未更改的檔案講自動被刪除。以避免臨時檔案佔滿整個磁碟。/var/tmp,30內未訪問,未更改的檔案講自動被刪除。
注意:
在沒有確認修改檔案內容安全之前,不要隨意修改目錄proc中的任何檔案,否則會造成系統崩潰。
/etc,該目錄下的檔案由系統管理員來使用,普通使用者通常僅能只讀。
/tmp,儲存的臨時檔案對所有使用者可見,且所有檔案會被定時刪除,因此重要資料不可放置在此目錄下。
二.Linux基本命令
1.切換工作目錄命令cd
Linux cd命令用於切換當前工作目錄至 dirName(目錄引數)。
其中 dirName 表示法可為絕對路徑(以/開頭的)或相對路徑(以“ .”或者“../”開頭的)。若目錄名稱省略,則變換至使用者的 home 目錄。
另外,"~" 也表示為 home 目錄 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
#檢視當前路徑
[email protected]:~$ pwd
/home/lkw
#檢視上級目錄
[email protected]:~$ cd ../
[email protected]:/home$ pwd
/home
[email protected]:/home$ cd /var/log
[email protected]:/var/log$
#快速返回家目錄
[email protected]:/var/log$ cd ~
[email protected]:~$ pwd
/home/lkw
#cd引數為空,也是返回家目錄,與~相同
[email protected]:~$ cd /var/log
[email protected]:/var/log$ cd
[email protected]:~$ pwd
/home/lkw
2.檢視當前路徑命令pwd
3.檢視檔案列表命令ls
Linux ls命令用於顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄),還可以檢視檔案的詳細資訊,例如檢視檔案的許可權,大小,所有者等。
引數:
- -a 顯示所有檔案及目錄 (ls內定將檔名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
- -l 除檔名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出
- -r 將檔案以相反次序顯示(原定依英文字母次序)
- -t 將檔案依建立時間之先後次序列出
- -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
- -F 在列出的檔名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
- -R 若目錄下有檔案,則以下之檔案亦皆依序列出
#檢視當前目錄下的檔案列表
[email protected]:~$ ls
1 bf2.c Desktop FF.c phi rw sy33 sy4 Templates 新建文字.txt
3 bf.c Documents FF.cpp phi.c rw.c sy333 sy44 Videos
3.c bff.c Downloads gd phiq screen shot sy333.c sy44.c wf
bf cc eclipse-workspace gd.c phiq.c sy2 sy33.c sy4.c wf.c
bf2 Code FF Music Pictures sy2.c sy3.c synopsis?:q wfz.c
#檔案詳細資訊
[email protected]:~$ ls -l
總用量 384
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rwxr-xr-x 1 lkw lkw 8784 4月 4 2018 3
-rw-r--r-- 1 lkw lkw 1508 4月 4 2018 3.c
-rwxr-xr-x 1 lkw lkw 18064 5月 10 17:06 bf
-rwxr-xr-x 1 lkw lkw 18064 5月 10 17:08 bf2
-rw-r--r-- 1 lkw lkw 10960 5月 10 17:08 bf2.c
-rw-r--r-- 1 lkw lkw 11178 5月 10 16:45 bf.c
-rw-r--r-- 1 lkw lkw 11219 5月 10 16:23 bff.c
-rw-r--r-- 1 lkw lkw 0 3月 29 2018 cc
drwxr-xr-x 4 lkw lkw 4096 4月 4 2018 Code
drwxr-xr-x 3 lkw lkw 4096 5月 24 17:00 Desktop
drwxr-xr-x 4 lkw lkw 4096 3月 20 2018 Documents
drwxr-xr-x 2 lkw lkw 4096 4月 4 2018 Downloads
drwxr-xr-x 5 lkw lkw 4096 3月 28 2018 eclipse-workspace
-rwxr-xr-x 1 lkw lkw 13144 5月 10 17:06 FF
-rw-r--r-- 1 lkw lkw 6186 5月 3 17:27 FF.c
-rw-r--r-- 1 lkw lkw 0 5月 3 16:51 FF.cpp
-rwxr-xr-x 1 lkw lkw 9192 4月 9 2018 gd
-rw-r--r-- 1 lkw lkw 1187 4月 9 2018 gd.c
.....
- 第一個欄位第一個字元描述檔案型別。“ - ” 代表普通檔案,” d “代表一個目錄,” l “連結檔案,” b “塊裝置檔案,”c“字元裝置檔案,” p “管道檔案。
- 檔案的連線數
- 檔案的屬主
- 檔案的屬組
- 檔案的大小(預設單位為位元組)
- 檔案建立的時間
- 檔案及目錄名
綠色表示可執行檔案,藍色表示目錄;
#引數為目錄,檢視目錄中所有檔案
[email protected]:~$ ls -l /usr
總用量 84
drwxr-xr-x 2 root root 40960 4月 4 2018 bin
drwxr-xr-x 2 root root 4096 3月 17 2018 games
drwxr-xr-x 55 root root 4096 3月 20 2018 include
drwxr-xr-x 116 root root 4096 3月 28 2018 lib
drwxrwsr-x 10 root staff 4096 3月 10 2018 local
drwxr-xr-x 2 root root 12288 3月 20 2018 sbin
drwxr-xr-x 234 root root 12288 4月 4 2018 share
drwxr-xr-x 6 root root 4096 3月 10 2018 src
#引數為目錄,用d檢視目錄
[email protected]:~$ ls -ld /usr
drwxr-xr-x 10 root root 4096 3月 10 2018 /usr
#隱藏檔案都以點號”.“開頭,預設情況下ls不顯示隱藏檔案,用a顯示檢視
[email protected]:~$ ls -al
總用量 1028
drwxr-xr-x 32 lkw lkw 4096 10月 16 21:06 .
drwxr-xr-x 4 root root 4096 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swo
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swp
-rw-r--r-- 1 lkw lkw 12288 10月 12 21:01 .1.swp
-rw-r--r-- 1 lkw lkw 12288 3月 18 2018 .2.c.swp
......
#以k位元組
[email protected]:~$ ls -lak
總用量 1164
drwxr-xr-x 32 lkw lkw 4096 10月 16 21:06 .
drwxr-xr-x 4 root root 4096 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swo
#以h檢視檔案大小,k
[email protected]:~$ ls -lah
總用量 1.2M
drwxr-xr-x 32 lkw lkw 4.0K 10月 16 21:06 .
drwxr-xr-x 4 root root 4.0K 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12K 3月 18 2018 .1.c.swo
-rw------- 1 lkw lkw 12K 3月 18 2018 .1.c.swp
-rw-r--r-- 1 lkw lkw 12K 10月 12 21:01 .1.swp
-rw-r--r-- 1 lkw lkw 12K 3月 18 2018 .2.c.swp
-rwxr-xr-x 1 lkw lkw 8.6K 4月 4 2018 3
4.檔案連結命令ln
Linux檔案系統中,有所謂的連結(link)可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結即一個快捷方式。硬連結,是目標檔案的副本。無論目標檔案存在多少個副本,這些副本都使用同一塊儲存區域,其中一個副本內容變化則所有副本和目標檔案內容都改變。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
不論是硬連結或軟連結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。
軟連結:
- 1.軟連結,以路徑的形式存在。類似於Windows作業系統中的快捷方式
- 2.軟連結可以 跨檔案系統 ,硬連結不可以
- 3.軟連結可以對一個不存在的檔名進行連結
- 4.軟連結可以對目錄進行連結
硬連結:
- 1.硬連結,是目標檔案的副本。無論目標檔案存在多少個副本,這些副本都使用同一塊儲存區域。其中一個副本內容變化則所有副本和目標檔案內容都改變。
- 2.不允許給目錄建立硬連結
- 3.硬連結只有在同一個檔案系統中才能建立
命令引數
必要引數:
- -b 刪除,覆蓋以前建立的連結
- -d 允許超級使用者製作目錄的硬連結
- -f 強制執行
- -i 互動模式,檔案存在則提示使用者是否覆蓋
- -n 把符號連結視為一般目錄
- -s 軟連結(符號連結)
- -v 顯示詳細的處理過程
選擇引數:
(1)建立硬連結
預設為硬連結
- -S "-S<字尾備份字串> "或 "--suffix=<字尾備份字串>"
- -V "-V<備份方式>"或"--version-control=<備份方式>"
- --help 顯示幫助資訊
- --version 顯示版本資訊
#不使用任何選項時ln會建立一個硬連結檔案
#將/home/lkw/1 建立一個硬連結,並命名未lkww
[email protected]:~$ ln /home/lkw/1 lkww
#檢視建立的硬連結檔案
[email protected]:~$ ls -l lkww
-rw-r--r-- 2 lkw lkw 120 10月 12 20:28 lkww
(2)建立軟連結
建立軟連結,需使用s選項
#使用s建立軟連結檔案
[email protected]:~$ ln -s /home/lkw/1 lla
#檢視建立的軟連結檔案,將顯示連結的原始檔資訊
[email protected]:~$ ls -l lla
lrwxrwxrwx 1 lkw lkw 11 10月 17 17:17 lla -> /home/lkw/1
連結檔案顯示為紅色,並且以 l 開頭。
三.檔案操作命令
1.檔案命名規則
(1)檔案命名規則
遵守以下規則:
- 除了/外,所有的字元都可以;
- 有些字元最好不用,如空格符,製表符,退格符和字元:? @ # $ & () \ | ; ‘’ “ ” <> 等;
- 避免使用+ -或.作為普通檔名的第一個字元(在Linux下以 . 開頭的檔案是屬於隱藏檔案);
- 另外和Windows檔案命名不一樣的是,在Linux下檔名大小寫敏感。
(2)副檔名
雖然Linux系統下無副檔名的概念,但某些特殊的程式要求檔案必須要有正確的副檔名才可使用。例如,gcc編譯器要求原始碼檔案必須 .c 結尾。 .conf表示配置檔案。 .sh表示一段shell程式。 .log表示日誌檔案
(3)特殊字元和隱藏檔案
. 開頭的檔案都屬於隱藏檔案。不建議使用
2.建立檔案命令touch
touch命令,若檔案不存在,用於建立一個空檔案。若存在,用來修改檔案或者目錄的建立時間,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。
#建立一個檔案ab
[email protected]:~$ touch ab
查詢ab資訊
[email protected]:~$ ls -l ab
-rw-r--r-- 1 lkw lkw 0 10月 17 17:42 ab
#建立檔案時,使用選項d指定時間
[email protected]:~$ touch -d "8/10/16 18:32" ed
#查詢ed檔案
[email protected]:~$ ls -l ed
-rw-r--r-- 1 lkw lkw 0 8月 10 2016 ed
3.建立目錄命令mkdir( directory)
mkdir命令用於建立目錄。
#建立一個目錄
[email protected]:~$ mkdir test
#顯示目錄 -ld
[email protected]:~$ ls -ld test
drwxr-xr-x 2 lkw lkw 4096 10月 17 17:51 test
#多級目錄,-p(目錄不存在),若存在不加-p
[email protected]:~$ mkdir -p a/b/c/d/e
#進入目錄
[email protected]:~$ cd a/b/c/d/e
#顯示當前目錄
[email protected]:~/a/b/c/d/e$ pwd
/home/lkw/a/b/c/d/e
4.移動,重新命名檔案命令mv
mv命令用來為檔案或目錄改名、或將檔案或目錄移入其它位置。
引數說明:
- -i: 若指定目錄已有同名檔案,則先詢問是否覆蓋舊檔案;
- -f: 在mv操作要覆蓋某已有的目標檔案時不給任何指示;
#建立檔案a
[email protected]:~$ touch a
#把檔案a移到test目錄下
[email protected]:~$ mv a test/
[email protected]:~$ ls -l test
總用量 0
-rw-r--r-- 1 lkw lkw 0 10月 17 18:00 a
#建立檔案b c d
[email protected]:~$ touch b c d
#批量移植
[email protected]:~$ mv b c d test/
[email protected]:~$ ls -l test
總用量 0
-rw-r--r-- 1 lkw lkw 0 10月 17 18:00 a
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 b
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 c
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 d
#重新命名檔案或目錄
[email protected]:~$ mv test test1
[email protected]:~$ ls
1 bf2 Desktop FF.c phi rw.c sy333.c sy4.c wf
3 bf2.c Documents FF.cpp phi.c screen shot sy33.c synopsis?:q wf.c
3.c bf.c Downloads gd phiq sy2 sy3.c task wfz.c
aa bff.c eclipse-workspace gd.c phiq.c sy2.c sy4 Templates 新建文字.txt
ab cc ed lla Pictures sy33 sy44 test1
bf Code FF Music rw sy333 sy44.c Videos
5.複製檔案命令cp(copy)
cp命令主要用於複製檔案或目錄。
引數說明:
- -a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。
- -d:複製時保留連結。這裡所說的連結相當於Windows系統中的快捷方式。
- -f:覆蓋已經存在的目標檔案而不給出提示。
- -i:與-f選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答"y"時目標檔案將被覆蓋。
- -p:除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。
- -r:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。
- -l:不復制檔案,只是生成連結檔案。
#建立目錄
[email protected]:~$ mkdir file
[email protected]:~$ mkdir test
#複製目錄。使用R遞迴複製目錄及目錄中的檔案
[email protected]:~$ cp -R test file/
#用p複製時保留許可權
[email protected]:~$ cp -p a b
[email protected]:~$ ls -l a b
-rw-r--r-- 1 lkw lkw 0 10月 17 20:36 a
-rw-r--r-- 1 lkw lkw 0 10月 17 20:36 b
6.刪除檔案命令rm
7.刪除空目錄命令rmdir
#建立b資料夾
[email protected]:~$ mkdir b
[email protected]:~$ ls -l
總用量 28
-rw-r--r-- 1 lkw lkw 0 10月 17 21:02 a
drwxr-xr-x 2 lkw lkw 4096 10月 17 21:03 b
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Desktop
drwxr-xr-x 3 lkw lkw 4096 10月 17 20:55 Documents
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Downloads
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Music
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Pictures
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Videos
#刪除空資料夾b
[email protected]:~$ rmdir b
[email protected]:~$ ls -l
總用量 24
-rw-r--r-- 1 lkw lkw 0 10月 17 21:02 a
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Desktop
drwxr-xr-x 3 lkw lkw 4096 10月 17 20:55 Documents
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Downloads
#p建立一個路徑上的目錄
[email protected]:~$ mkdir -p b/c/d
[email protected]:~$ ls -l b
總用量 4
drwxr-xr-x 3 lkw lkw 4096 10月 17 21:04 c
#-p刪除一個路徑上的目錄
[email protected]:~$ rmdir -p b/c/d
[email protected]:~$ ls -l b
ls: 無法訪問'b': 沒有那個檔案或目錄