1. 程式人生 > >Linux目錄結構,基本命令及檔案操作命令

Linux目錄結構,基本命令及檔案操作命令

一.Linux系統中的目錄結構

1.根目錄 (/)

根目錄與開機/還原/系統修復等動作有關。目錄不要放在非常大的分割槽, 因為越大的分割槽內你會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。

因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。 說白了,就是根目錄和Windows的C盤一個樣。

一下介紹根目錄下的子目錄

2.bin目錄(二進位制)

/bin主要用於存放普通使用者可以使用的命令。

該目錄為命令檔案目錄,也稱為二進位制目錄。包含了供系統管理員及普通使用者使用的重要的linux命令和二進位制(可執行)檔案

,包含shell直譯器等。

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': 沒有那個檔案或目錄

8.檢視檔案型別命令file