天天看點

linux目錄結構,檔案管理

檔案和目錄被組織成一個單根倒置樹結構

檔案系統從根目錄下開始,用“/”表示

根檔案系統(rootfs):root filesystem

對于特定的檔案系統,名稱大小寫敏感

以.開頭的檔案為隐藏檔案

路徑分隔符/

檔案有兩類資料:中繼資料(metadata)資料(data)

檔案系統分層結構:LSB Linux Standard Base

FHS: (Filesystem Hierarchy Standard)

包括路徑在内檔案名稱最長4095個位元組,用/分隔的路徑不能超過255個位元組。

除了斜杠和NUL,所有字元都有效.但使用特殊字元的目錄名和檔案不推薦使用,有些字元需要用引号來引用它們。

标準Linux檔案系統(如ext4),檔案名稱大小寫敏感。例如:MAIL,Mail,mail, mAiL

/boot:引導檔案存放目錄,核心檔案(vmlinuz)、引導加載器(bootloader, grub)都存放于此目錄

/bin:供所有使用者使用的基本指令;不能關聯至獨立分區,系統啟動即會用到的程式

/sbin:管理類的基本指令;不能關聯至獨立分區,系統啟動即會用到的程式

/lib:啟動時程式依賴的基本共享庫檔案以及核心子產品檔案(/lib/modules)

/lib64:專用于x86_64系統上的輔助共享庫檔案存放位置

/etc:配置檔案目錄

/home/USERNAME:普通使用者家目錄

/root:管理者的家目錄

/media:便攜式移動裝置挂載點

/mnt:臨時檔案系統挂載點

/dev:裝置檔案及特殊檔案存儲位置

    b: block device,随機通路

    c: character device,線性通路

/opt:第三方應用程式的安裝位置

/srv:系統上運作的服務用到的資料

/tmp:臨時檔案存儲位置

/usr: universal shared, read-only data

    bin: 保證系統擁有完整功能而提供的應用程式

    sbin:

    lib:32位使用

    lib64:隻存在64位系統

    include: C程式的頭檔案(header files)

    share:結構化獨立的資料,例如doc, man等

    local:第三方應用程式的安裝位置

           bin, sbin, lib, lib64, etc, share

/var: variable data files

    cache: 應用程式緩存資料目錄

    lib: 應用程式狀态資訊資料

    local:專用于為/usr/local下的應用程式存儲可變資料;

    lock: 鎖檔案

    log: 日志目錄及檔案

    opt: 專用于為/opt下的應用程式存儲可變資料;

    run: 運作中的程序相關資料;通常用于存儲程序pid檔案

    spool: 應用程式資料池

    tmp: 儲存系統兩次重新開機之間産生的臨時資料

/proc: 用于輸出核心與程序資訊相關的虛拟檔案系統

/sys:用于輸出目前系統上硬體裝置相關資訊虛拟檔案系統

/selinux: security enhanced Linux,selinux相關的安全政策等資訊的存儲位置

CentOS-7的新特性

/bin-->/usr/bin

/sbin-->/usr/sbin

/lib-->/usr/lib

/lib64-->/usr/lib64

二進制程式:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

庫檔案:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置檔案:/etc, /etc/DIRECTORY, /usr/local/etc

幫助檔案:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

linux目錄結構,檔案管理

檔案類型

-:普通檔案(二進制檔案、文本檔案、資料格式檔案)

d: 目錄檔案

b: 塊裝置(随機通路的實體裝置,有緩存)

c: 字元裝置(線性通路的邏輯裝置,無緩存)

l: 符号連結檔案(軟連接配接檔案)

p: 管道檔案pipe

s: 套接字檔案socket(IP+PORT)

每個shell和系統程序都有一個目前的工作目錄

CWD:current work directory

顯示目前shell CWD的絕對路徑

pwd: printing working directory

相關的環境變量:

PWD:儲存了目前目錄路徑

OLDPWD:上一次所在目錄路徑

linux目錄結構,檔案管理

絕對路徑

以正斜線開始

完整的檔案的位置路徑

可用于任何想指定一個檔案名的時候

相對路徑

不以斜線開始

指定相對于目前工作目錄或某目錄的位置

可以作為一個簡短的形式指定一個檔案名

cd 改變目錄

到上一級目錄:

cd ..

回到使用者家目錄:

cd 或cd ~

到某個使用者的家目錄:

cd ~username

到以前的工作目錄:

cd -

linux目錄結構,檔案管理

ls (list)列出目前目錄的内容或指定目錄

ls [options] [files_or_dirs]

options:

-a顯示所有檔案(包括隐藏檔案)

-A顯示除.和..之外的所有檔案

-l顯示額外的資訊(權限、屬主屬組、檔案大小、修改時間等)

-R目錄遞歸顯示

-d顯示目錄自身的資訊而不是目錄下的檔案

-1檔案分行顯示,

-i顯示inode号碼

–S按從大到小排序

–u配合-t選項,顯示并按atime從新到舊排序

–U不排序按目錄存放順序顯示

--color=auto

藍色-->目錄

綠色-->可執行檔案

紅色-->壓縮檔案

紅色閃爍-->連結檔案已損壞

淺藍色-->連結檔案

灰色-->其他檔案

glob bash通配符

* 比對零個或多個字元

? 比對任何單個字元

~ 目前使用者家目錄

~username 使用者家目錄

~+ 目前工作目錄

~- 前一個工作目錄

[0-9]:比對一個數字範圍

[a-z]:a-z之間的字母

[A-Z]:A-Z之間的字母

[wxc]:比對清單中的任何的一個字元

[^wxc]:比對清單中的所有字元以外的字元

字母的排列順序 a A b B c C ……x X y Y z Z

預定義的字元類:#man 7 glob

[:digit:]:任意數字,相當于0-9

[:lower:]:任意小寫字母

[:upper:]: 任意大寫字母

[:alpha:]: 任意大小寫字母

[:alnum:]:任意數字或字母

[:space:]:空格

[:punct:]:标點符号

1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的檔案或目錄

ls -d /var/l *[0-9]*[[:lower:]]

2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的檔案或目錄

ls -d /etc/[0-9]*[^0-9]

3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字元的檔案或目錄

ls -d /etc/[^[:alpha:]][[:alpha:]]*

4、顯示/etc目錄下所有以m開頭以非數字結尾的檔案或目錄

ls /etc/m*[^0-9]

5、顯示/etc目錄下,所有以.d結尾的檔案或目錄

ls -d /etc/*.d

6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的檔案或目錄

ls -d /etc/[mnrp]*.conf

touch指令:

touch [OPTION]... FILE...

-a: 僅改變atime

-m: 僅改變mtime

-t:指定時間修改時間戳 [[CC]YY]MMDDhhmm[.ss]

-c: 如果檔案不存在,則不予建立

-d:以描述時間修改時間戳 touch -d '-3 day' FILE

stat 檢視檔案的中繼資料

三個時間戳:

access time:通路時間,讀取檔案内容

modify time: 修改時間, 修改檔案内容

change time: 改變時間, 中繼資料發生改變

(通路一個距atime的記錄時間超過24小時,或atime早于mtime的檔案時atime才會重新整理)

linux目錄結構,檔案管理

cp[OPTION]... [-T] SOURCE DEST

cp[OPTION]... SOURCE... DIRECTORY

cp[OPTION]... -t DIRECTORY SOURCE...

cpSRC DEST

SRC是檔案:

如果目标不存在:建立DEST,并将SRC中内容填充至DEST中

如果目标存在:

如果DEST是檔案:将SRC中的内容覆寫至DEST中

基于安全,建議為cp指令使用-i選項;

如果DEST是目錄:在DEST下建立與原檔案同名的檔案,并将SRC中内容填充至新檔案中

cpSRC... DEST。

SRC...:多個檔案

DEST必須存在,且為目錄,其它情形均會出錯;

SRC是目錄:此時使用選項:-r

如果DEST不存在:則建立指定目錄,複制SRC目錄中所有檔案至DEST中;

如果DEST存在:

如果DEST是檔案:報錯;

如果DEST是目錄:将SRC及其内部檔案複制至DEST中。

-i:互動式

-r, -R: 遞歸複制目錄及内部的所有内容;

-a: 歸檔,相當于-dR--preserv=all

-d:僅複制軟連接配接檔案,不複制軟連接配接所指向的檔案

   mode: 權限

   ownership: 屬主屬組

   timestamp:時間戳

   links:連接配接

   xattr:隐藏屬性

   context:安全上下文

   all

-p: 保持原有檔案的屬性資訊

-v: --verbose

-f: --force當檔案存在且沒有權限編輯是,将其删除再重新複制

練習

1、使用别名指令,将/etc/目錄下所有檔案,備份到/testdir/下獨立的新目錄下,并要求新目錄格式為backupYYYY-mm-dd,備份過程可見

cp -Rv /etc/ /testdir/backup`date +%F`

linux目錄結構,檔案管理

2、先建立/testdir/rootdir目錄,再複制/root所有下檔案到該目錄内,并要求保留原有權限

cp -Rp /root/ /testdir/rootdir

linux目錄結構,檔案管理

顯示目前shell程序所有可用的指令别名

alias

定義别名NAME,其相當于執行指令VALUE;

alias NAME='VALUE'

當别名中沒有空格時,可以不用加引号。單雙引号均可,預設使用單引号。

在指令行中定義的别名,僅對目前shell程序有效

如果想永久有效,要定義在配置檔案中

僅對目前使用者:~/.bashrc

對所有使用者有效:/etc/bashrc

編輯配置給出的新配置不會立即生效;

bash程序重新讀取配置檔案:

source /path/to/config_file或. /path/to/config_file

撤消别名:unalias

unalias [name ...]

-a 撤銷所有别名

如果别名同原指令同名,如果要執行原指令,可使用

“\COMMAND”

’COMMAND’

/PATH/COMMAND:外部指令

linux目錄結構,檔案管理

mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE...

常用選項:

-i: 互動式

-f: 強制

rm [OPTION]... FILE...

-f: 強制删除

-r: 遞歸

--no-preserve-root

例:#rm- rf /

tree 顯示目錄樹

-d: 隻顯示目錄

-L level:指定顯示的層級數目

-P pattern: 隻顯示由指定pattern比對到的路徑

mkdir建立目錄

-p: 存在于不報錯,且可自動建立所需的各目錄;

-v: 顯示詳細資訊

-m MODE: 建立目錄時直接指定權限;

rmdir删除空目錄

-p: 遞歸删除父空目錄

-r: 遞歸删除目錄樹

(1) 如何建立/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b

mkdir -p /testdir/dir1/{x,y}/{a,b}

linux目錄結構,檔案管理

(2) 如何建立/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

mkdir -p /testdir/dir2/{x/{a,b},y}

linux目錄結構,檔案管理

(3) 如何建立/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir3, /testdir/dir5/dir4

mkdir -p /testdir/dir{3,4,5/dir{3,4}}

linux目錄結構,檔案管理

隻顯示指定目錄下的隐藏檔案

ls -d /path/.* 或 ls -d /path/.[^.]*

隻顯示指定目錄下的目錄(不看其子目錄下的檔案)

ls -d /path/*/  (當指定目錄下沒有目錄時會出現提示資訊)

繼續閱讀