1. 程式人生 > >linux 文件目錄管理 目錄管理

linux 文件目錄管理 目錄管理

原創轉載自海牛部落-青牛,http://hainiubl.com/topics/169

1 linux 目錄結構

file

bin: 存放二進位制可執行檔案(ls,cat,mkdir等)
boot: 存放用於系統引導時使用的各種檔案
dev: 用於存放裝置檔案
etc:存放系統配置檔案
home: 存放所有使用者檔案的根目錄
lib:存放跟檔案系統中的程式執行所需要的共享庫及核心模組
mnt:系統管理員安裝臨時檔案系統的安裝點
opt:額外安裝的可選應用程式包所放置的位置
proc:虛擬檔案系統,存放當前記憶體的對映
root:超級使用者目錄
sbin:存放二進位制可執行檔案,只有root才能訪問
tmp:用於存放各種臨時檔案
usr:用於存放系統應用程式,比較重要的目錄/usr/local 本地管理員軟體安裝目錄
var:用於存放執行時需要改變資料的檔案

2 建立檔案和目錄#

2.1 建立目錄:mkdir
linux mkdir 命令用來建立指定的名稱的目錄,要求建立目錄的使用者在當前目錄中具有寫許可權,並且指定的目錄名不能是當前目錄中已有的目錄。

命令格式:

file

命令功能:
通過 mkdir 命令可以實現在指定位置建立以 DirName(指定的檔名)命名的資料夾或目錄。要建立資料夾或目錄的使用者必須對所建立的資料夾的父資料夾具有寫許可權。並且,同一目錄下所建立的資料夾(目錄)不能相同(區分大小寫)。
引數:
-m:--mode=模式,設定許可權<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask
-p:--parents 可以是個路徑名, 系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;

示例:

1)建立一個空目錄:rtest2

file

file

file

file

file

3 移動、複製和刪除文件#

3.1 移動和重新命名:mv
mv命令是move的縮寫,可以用來移動檔案或者將檔案改名(move (rename) files),是Linux系統下常用的命令,經常用來移動檔案或者目錄。

file

命令功能:
視mv命令中第二個引數型別的不同(是目標檔案還是目標目錄),mv命令將檔案重新命名或將其移至一個新的目錄中。
當第二個引數型別是檔案時,mv命令完成檔案重新命名,此時,原始檔只能有一個(也可以是源目錄名),它將所給的原始檔或目錄重新命名為給定的目標檔名。
當第二個引數是已存在的目錄名稱時,原始檔或目錄引數可以有多個,mv命令將各引數指定的原始檔均移至目標目錄中。
引數:
-b :若需覆蓋檔案,則覆蓋前先行備份。
-i :若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋!

如果目標檔案已經存在,如果當前使用者是root 使用者,不寫 -i 也會提示,而新建的使用者,則不會提示。原因在於使用者家目錄下的.bashrc 檔案中配置了別名

file

而新建的使用者家目錄下的.bashrc 檔案沒有配置別名。
如果想新建的使用者也提示,則在.bashrc 檔案中配置,然後用下面命令使修改生效

file

file

file

file

file

file

file

file

file

file

file

3.2 複製:cp
cp命令用來複制檔案或者目錄,是Linux系統中最常用的命令之一。一般情下,shell會設定一個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用-i 引數。但是如果是在shell 指令碼中執行cp 時,沒有-i引數時不會詢問是否覆蓋。這說明命令列和shell指令碼的執行方式有些不同。

命令格式:

file

命令功能:
將原始檔複製至目標檔案,或將多個原始檔複製至目標目錄。
引數:
-a: –archive 等於-dR –preserve=all
-i: –interactive 覆蓋前詢問

file

file

file

file

file

3.3 刪除:rm
rm是常用的命令,該命令的功能為刪除一個目錄中的一個或多個檔案或目錄,它也可以將某個目錄及其下的所有檔案及子目錄均刪除。對於連結檔案,只是刪除了連結,原有檔案均保持不變。

rm是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在/(根目錄)下執行rm * -rf)。所以,我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什麼東西,操作時保持高度清醒的頭腦。

命令格式:

file

命令功能:
刪除一個目錄中的一個或多個檔案或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除檔案,通常仍可以將該檔案恢復原狀。
引數:
-f: --force 忽略不存在的檔案,從不給出提示。
-i:--interactive 進行互動式刪除
-r, -R: --recursive 指示rm將引數中列出的全部目錄和子目錄均遞迴地刪除。

file

4 改變文件所有權:chown 和 chgrp#

4.1 改變文件的所有權:chown(change own)
chown 將指定檔案的擁有者改為指定的使用者或組,使用者可以是使用者名稱或者使用者ID;組可以是組名或者組ID;檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。系統管理員經常使用chown命令,在將檔案拷貝到另一個使用者的名錄下之後,讓使用者擁有使用該檔案的許可權。

命令格式:
chown [選項]... [所有者][:[組]] 檔案或目錄...

file

命令功能:
通過chown改變檔案的擁有者和群組。在更改檔案的所有者或所屬群組時,可以使用使用者名稱稱和使用者識別碼設定。
普通使用者不能將自己的檔案改變成其他的擁有者。其操作許可權一般為管理員。
引數:
-c 顯示更改的部分的資訊  
-f 忽略錯誤資訊
-h 修復符號連結    
-R 處理指定目錄以及其子目錄下的所有檔案    
-v 顯示詳細的處理資訊

file

file

file

file

file

file

file

4.2 改變檔案的所屬組:chgrp
在Linux系統裡,檔案或目錄的許可權的掌控以擁有者及所屬群組來管理。可以使用chgrp 指令取變更檔案與目錄所屬群組,這種方式採用群組名稱或群組識別碼都可以。
Chgrp命令就是change group的縮寫!要被改變的組名必須要在/etc/group檔案記憶體在才行。
命令格式:

file

命令功能:
chgrp命令可採用群組名稱或群組識別碼的方式改變檔案或目錄的所屬群組。使用許可權是超級使用者。
引數:
-c 當發生改變時輸出除錯資訊
-f 不顯示錯誤資訊
-R 處理指定目錄以及其子目錄下的所有檔案
-v 執行時顯示詳細的處理資訊

file

file

4.3 改變檔案許可權:chmod
chmod命令用於改變linux系統檔案或目錄的訪問許可權。用它控制檔案或目錄的訪問許可權。該命令有兩種用法。一種是包含字母和操作符表示式的文字設定法;另一種是包含數字的數字設定法。

4.3.1 符號型別改變檔案許可權
命令格式:

file

引數:
許可權範圍
u :目錄或者檔案的當前的使用者
g :目錄或者檔案的當前的群組
o :除了目錄或者檔案的當前使用者或群組之外的使用者或者群組
a :所有的使用者及群組

file

file

4.3.2 數字型別改變檔案許可權
命令格式:

file

引數:
數字與字元對應關係如下:
r=4,w=2,x=1
若要rwx屬性則4+2+1=7
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。

file

file

file

file

5 建立連結:ln ln 是linux中又一個非常重要命令,它的功能是為某一個檔案在另外一個位置建立一個同步的連結。當我們需要在不同的#

目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在某個固定的目錄,放
上該檔案,然後在 其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁碟空間。

5.1 硬連結
硬連結的意思是一個檔案可以有多個名稱,存在同一個檔案系統中。

以檔案副本的形式存在。但不佔用實際空間。
不允許給目錄建立硬連結。
硬連結只有在同一個檔案系統中才能建立。

file

原理:
執行上面這條命令以後,原始檔與目標檔案的inode號碼相同,都指向同一個inode。inode資訊中有一項叫做"連結數",
記錄指向該inode的檔名總數,這時就會增加1。反過來,刪除一個檔名,就會使得inode節點中的"連結數"減1。當這個
值減到0,表明沒有檔名指向這個inode,系統就會回收這個inode號碼,以及其所對應block區域。

file

5.2 軟連結
檔案A和檔案B的inode號碼雖然不一樣,但是檔案A的內容是檔案B的路徑。讀取檔案A時,系統會自動將訪問者導向
檔案B。因此,無論開啟哪一個檔案,最終讀取的都是檔案B。這時,檔案A就稱為檔案B的"軟連結"。
這意味著,檔案A依賴於檔案B而存在,如果刪除了檔案B,開啟檔案A就會報錯:"No such file or directory"。
這是軟連結與硬連結最大的不同:檔案A指向檔案B的檔名,而不是檔案B的inode號碼,檔案B的inode"連結數"不會
因此發生變化。
而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置,可以跨越不同的檔案系統。

軟連結,以路徑的形式存在。類似於Windows作業系統中的快捷方式
軟連結可以 跨檔案系統 ,硬連結不可以
軟連結可以對一個不存在的檔名進行連結
軟連結可以對目錄進行連結

file

file

file

一個命令執行了:
先有一個輸入:輸入可以從鍵盤,也可以從檔案得到。
命令執行完成:成功了,會把成功結果輸出到螢幕:standard output預設是螢幕
命令執行有錯誤:會把錯誤也輸出到螢幕上面:standard error預設也是指的螢幕三種輸入輸出的程式碼分別是: 1)標準輸入(stdin);程式碼為 0 ;
2)標準輸出(stdout):程式碼為 1 ;
3)錯誤輸出(stderr):程式碼為 2 ;

標準重定向符號

          輸出重定向到一個檔案或裝置 覆蓋原來的檔案

! 輸出重定向到一個檔案或裝置 強制覆蓋原來的檔案

        輸出重定向到一個檔案或裝置 追加原來的檔案

< 輸入重定向到一個程式

標準錯誤重定向符號
2> 將一個標準錯誤輸出重定向到一個檔案或裝置 覆蓋原來的檔案 b-shell
2>> 將一個標準錯誤輸出重定向到一個檔案或裝置 追加到原來的檔案
2>&1 將一個標準錯誤輸出重定向到標準輸出 註釋:1 可能就是代表 標準輸出

& 將一個標準錯誤輸出重定向到一個檔案或裝置 覆蓋原來的檔案 c-shell
|& 將一個標準錯誤 管道 輸送 到另一個命令作為輸入

6.1 輸出重定向 將標準輸出到螢幕的資訊重定向輸出到指定檔案內。為何要使用命令輸出重導向
• 當螢幕輸出的資訊很重要,而且我們需要將他存下來的時候;
• 背景執行中的程式,不希望他干擾螢幕正常的輸出結果時;
• 一些系統的例行命令(例如寫在 /etc/crontab 中的檔案)的執行結果,希望他可以存下來時;
• 一些執行命令,我們已經知道他可能的錯誤訊息,所以想以『 2> /dev/null 』將他丟掉時;
• 錯誤訊息與正確訊息需要分別輸出時。

常用輸出重定向
cmd > file 把 stdout 重定向到 file 檔案中;cmd >> file 把 stdout 重定向到 file 檔案中(追加);cmd 1> file 把 stdout 重定向到 file 檔案中;cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中;cmd 2> file 把 stderr 重定向到 file 檔案中;cmd 2>> file 把 stderr 重定向到 file 檔案中(追加);cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中(追加);

file

file

file

file

file

file

6.2 輸入重定向:cat 將標準從鍵盤輸入改為從檔案輸入。 cat命令的用途是連線檔案或標準輸入並列印。這個命令常用來顯示檔案內容,或者將幾個檔案連線起來顯示,或者從
標準輸入讀取內容並顯示,它常與重定向符號配合使用。

下面簡單說明幾種使用方式和作用
1)cat << EOF,以EOF輸入字元為標準輸入結束:
2)cat > filename,建立新檔案,並把標準輸入輸出到filename檔案中,以ctrl+d作為輸入結束:
3)cat > filename << EOF,以EOF作為輸入結束,其中EOF可以是任何字串,和ctrl+d的作用一樣:

file

file

6.3 管道符號:| 利用Linux所提供的管道符 “|” 將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續使用管道意味著第一個命令的輸出會作為 第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。

file

command1正確輸出,作為command2的輸入,然後comand2的輸出作為,comand3的輸入,comand3輸出就會直接顯示在螢幕上面了。
通過管道之後:comand1,comand2的正確輸出不顯示在螢幕上面。

注意:
1)管道命令只處理前一個命令正確輸出,不處理錯誤輸出。
2)管道命令右邊命令,必須能夠接收標準輸入流命令才行。

file

file

file

file