Linux的文件管理(二)

文件系統:

 

文件有兩類數據:元數據和數據

元數據與數據存在相關的關係,但並不存放在一起。

查看詳細的元數據:#stat /etc/issue

wKioL1edRLiRhMX0AAAwvu6KWFI424.png-wh_50

Access:文件訪問時間

Modify:文件修改時間(文件內容數據更新的時間)

Change:文件改動時間(元數據變化的時間)

 

查看數據:#cat /etc/issue

 

wKiom1edRNvSIFI1AAAeiz2IzPM513.png-wh_50

 

文件名規則: 

1、包括路徑在內文件名稱最長4095個字節,用/分隔的路徑不能超過255個字節。

2、藍色-->目錄;綠色-->可執行文件;紅色-->壓縮文件;淺藍色-->鏈接文件;灰色-->其他文件

3、除了斜槓(/)NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,有些字符需要     用引號來引用它們。

4、標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如:MAIL,Mail,mail, mAiL

 

eg:新建一個文件爲“-mm

 

#nano

wKioL1edRQXCxhnsAAADyDt2a44077.png-wh_50

 

如下圖新建:


wKiom1edRUqgQTJIAAArbghFhxI417.png-wh_50

wKioL1edRWHALe50AABBC9C2AHs256.png-wh_50

刪除這種特殊命名的文件,必須使用絕對路徑方可刪除,如下圖:

wKioL1edRYbyvm5EAABEL6CKTjM636.png-wh_50

 

三、文件系統結構:

/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄

 /bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序

 /sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序

 /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:

lib32位使用

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 Linuxselinux相關的安全策略等信息的存儲位置

 

 

四、應用程序的組成部分:

二進制程序:/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

 

五、CentOS7對比CentOS6的變化:

   /bin /usr/bin

   /sbin /usr/sbin

   /lib /usr/lib

   /lib64 /usr/lib64

六、文件類型:

  -:普通文件

  d: 目錄文件

  b: 塊設備

  c: 字符設備

  l: 符號鏈接文件

  p: 管道文件pipe

  s: 套接字文件socket

wKiom1edRhiCZEjLAAA7jSpsBFU890.png-wh_50

塊設備和字符設備,如下圖:

wKiom1edRjSiRheZAAAS3A7y34U378.png-wh_50

塊設備都是隨機訪問的,會有緩存的;字符設備必須是順序訪問的,一般沒有緩存的。

 

 

eg:

0設備讀取內容輸入到指定的文件中,命令:# dd if=/dev/zero of=f1 bs=1k count=2

查看二進制文件的命令#hexdumpfilename (如需顯示全部的二進制內容,可添加-v選項即可)或者xxd filename

如下圖:

wKioL1edRk7SOAGfAABTKqySxN8434.png-wh_50

修改文件二進制數據內容,命令:#hexeditfilename

Linux中將Windows的文本文件轉換成純文件,命令:#dos2unix filename

wKiom1edRmbS0IhpAACXRYDz_JU984.png-wh_50

Linux文本轉換成Windows的文本,命令:#unix2dos filename

wKioL1edRn7gy1a1AABXmM-1arU879.png-wh_50

 

七、顯示當前工作目錄:

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

查看路徑的命令爲:#pwd(顯示當前shellCWD的絕對路徑)

 

八、cd更改目錄

1、到上一級目錄:#cd..

2、回到自己的主目錄:cd

3、回到以前的目錄(即上一條命令操作的目錄):cd –

相關的環境變量:

PWD:保存了當前目錄路徑

OLDPWD:上一次所在目錄路徑

wKiom1edRp3SehQiAAAPuymIr4k257.png-wh_50

顯示軟鏈接的真實路徑:

wKioL1edRriCuKKmAAAW0SRufns476.png-wh_50


切換到軟鏈接的真實路徑:


wKiom1edRtXyRzeEAAAbFMXCxas398.png-wh_50

九、相對路徑和絕對路徑:

 絕對路徑:以正斜槓開始;完整的文件的位置路徑;可用於任何想指定一個文件名的時候

 wKioL1edRvuTp_y8AAAQHlaKIbg786.png-wh_50

 相對路徑名:不以斜線開始;指定相對於當前工作目錄或某目錄的位置;可以作爲一個簡短的形式  指定一個文件名

 當前目錄相對路徑:

 wKioL1edRyjzc1dWAAAOLD4chR4925.png-wh_50 

 wKiom1edRz6jrYTVAAAN_9rC5zc378.png-wh_50 

 

十、羅列目錄的內容:列出當前目錄的內容或指定目錄

使用格式:ls[options] [files_or_dirs]

使用選項:

ls -a包含隱藏文件

ls -l顯示額外的信息

ls -R目錄遞歸通過

ls -ld目錄和符號鏈接信息

ls -1(數字1文件分行顯示

ls -S 按從大到小排序

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

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

 

將文件以大小的數值顯示出來,以便我們閱讀獲取信息,如下圖:

wKiom1edR5DCDW8qAAB2VoHNiCY440.png-wh_50

顯示目錄本身:# ls -ld /etc/

wKioL1edR67DmzlSAAAK8Krb8iM503.png-wh_50


目錄遞歸顯示:# ls -R

wKiom1edR8OzR_HnAAAqiQncUpg534.png-wh_50


文件分行顯示:

wKioL1edR9yjdZUCAAAY7NOeM7A426.png-wh_50

顯示文件從大到小的顯示:ll -S

wKiom1edR_SyDOmwAAA4IWVn2lk799.png-wh_50

顯示文件從小到大的顯示:ll -Sr

wKioL1edSA7jFOxlAAA6dZE90iA222.png-wh_50

按照字母倒敘排序(列排序):ls -r

wKiom1edSCmi9aTuAAAVpzr2-3E194.png-wh_50

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

wKioL1edSGTANdgeAAASMcpTi98070.png-wh_50

顯示並按atime從新到舊排序# ls-utl

wKiom1edSH2iSaA_AAA20fEYQGo831.png-wh_50

 

十一、文件狀態(stat):

    三個時間戳:

access time:訪問時間,atime,讀取文件內容

modify time: 修改時間, mtime,改變文件內容(數據)

change time: 改變時間, ctime,元數據發生改變(更改文件名、屬主或者屬組、增加文件大小等可            以改變元數據)

查看文件狀態時間命令:#ll--time=atime/mtime/ctime filename

mtime查看:

wKiom1edSJyQG9rbAAAGjEo-WJM007.png-wh_50


atimectime查看:

wKioL1edSLSRKldUAAALPbpCcIY695.png-wh_50


鎖死和解鎖:chattr +A  filename chattr –A filename,以達到讓訪問文件後,atime不發生           改變。

 

十二、文件通配符:

  * 匹配零個或多個字符

  ? 匹配任何單個字符

  ~ 當前用戶家目錄

  ~username:用戶家目錄

  ~+ 當前工作目錄

  ~- 前一個工作目錄

  [0-9]匹配一個數字範圍

  [a-z]:大寫和小寫字母

  [A-Z]:大寫字母

  [wxc]  匹配列表中的任何的一個字符

  [^wxc]匹配列表中的所有字符以外的字符

 

預定義的字符類:#man7 globman幫助查看)

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

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

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

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

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

[:space:]:空格

[:punct:]:標點符號

十三、空文件的創建於刷新時間:      

 

touch命令:

用法格式:touch[OPTION]... FILE...

用法選項:-a: 僅改變atime

-m: 僅改變mtime

-tSTAMP:[[CC]YY]MMDDhhmm[.ss]

-c: 如果文件不存在,則不予創建

-d:#touch –d yesterday filename

     

十四、CP:複製文件或目錄:

用法格式: cp[OPTION]...[-T] SOURCE DEST

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

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

1、複製的源是文件,目標也是文件:

如果目標文件不存在:新建目標文件,並將源文件中內容填充至新建的目標文件中

如果目標存在:是文件,將源文件中的內容覆蓋至目標文件中(基於安全,建議爲cp命令使用-i選            項)

如果目標是目錄:在目標目錄下新建與原文件同名的文件,並將源文件中內容填充至新文件中


2、複製的源是多個文件,目標必須存在,且爲目錄,其它情形均會出錯;

 複製的源是目錄:此時使用選項:-r

A、如果目標不存在:則創建指定目錄,複製源目錄中所有文件至新建的目標目錄中;

B、如果目標存在:則直接將源目錄下的文件複製過去填充到目標目錄下;

C、如果目標是文件:直接報錯;



3、如果複製的源是多個目錄:(如果複製的源目錄是一個,而目標目錄不存在,則將源目錄複製過去並以目標目錄的名稱重命名)

如果目標目錄不存在,則直接報錯;

如果目標目錄存在,則將源的多個目錄複製到目標目錄下作爲子目錄


   複製源文件(一個或者多個),到目標文件(或目錄下)的情形,如下圖:

   wKioL1edSXfDHDGNAACyB458V5k567.png-wh_50

     

 CP選項使用:

  -i:交互式

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

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

  -d--no-dereference --preserv=links 不復制原文件,只複製鏈接名[--preserv[=ATTR_LIST]mode: 權限;ownership:屬主屬組;timestamp: linksxattrcontextall)]

  -p: 等同--preserv=mode,ownership,timestamp

  -v: --verbose

  -f: --force(相當於將目標文件刪除後,重新建一個與目標文件名稱一樣的文件)

     

十五、命令別名(alias):

顯示當前shell進程所有可用的命令別名:#alias

wKiom1edSd7gMcvcAAAeFHwby-M611.png-wh_50

定義別名NAME,其相當於執行命令VALUE#alias name=””

   # alias vinet="vi /etc/sysconfig/network-scripts/ifcfg-eno16777736"

   wKioL1edSgKg66sfAAAhHmZLDgs878.png-wh_50

  取消別名:unalias name:

#unalias vinet

wKioL1edShmjNL5yAAAhrEYCpiY815.png-wh_50

  

在命令行中定義的別名,僅對當前shell進程有效

如果想永久有效,要定義在配置文件中:

 僅對當前用戶:~/.bashrc  ;對所有用戶有效:/etc/bashrc


編輯配置給出的新配置不會立即生效,bash進程重新讀取配置文件,執行如下命令:

 #source /path/to/config_file       #. /path/to/config_file

如果別名同原命令同名,如果要執行原命令,可使用“\COMMAND” ’COMMAND’/PATH/COMMAND:外部命令

 

十六、移動和重命名文件(mv):

   用法格式: mv[OPTION]... [-T] SOURCE DEST

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

          mv [OPTION]... -t DIRECTORYSOURCE...

常用選項:-i: 交互式

 -f: 強制

Root用戶和普通用戶使用mv不同:root使用mv會提示是否覆蓋;而普通用戶則強行直接覆蓋(操作需謹慎)。


wKiom1edSnSTysIZAAAFubIM6Zg098.png-wh_50

wKioL1edSouiA7o2AAAMhm8tr48900.png-wh_50

 

十七、刪除(rm):

   用法格式:rm[OPTION]... FILE...

常用選項:-i: 交互式

-f: 強制刪除

-r: 遞歸

--no-preserve-root

  強行刪除一個目錄(不是空目錄),命令使用:#rm –rf /path/file #\rm –r /path/file

 

** 刪除一個比較的大的文件,如果該文件有用戶在使用,使用rm –f /filename刪除,磁盤空間不會馬上釋放出來;使用命令# > /path/filename 直接將文件刪除掉,並把該文件的空間直接從磁盤上釋放出來**

 

例:rm –f /  (該命令操作需要謹慎,但在從CentOS6CentOS7版本開始,該命令不能夠直接執行使用)


如果確實需要刪除 / :則需要添加--no-preserve-root選項,命令:#rm –rf--no-preserve-       root /

 

十八、目錄的操作:

   命令tree :顯示目錄樹

   wKiom1edSx2CMpHqAAAVlppvSso308.png-wh_50


 格式選項:-d : 只顯示目錄

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

 -P pattern: 只顯示由指定pattern匹配到的路徑

 

 命令mkdir:創建目錄

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

   -v: 顯示詳細信息

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

 

 命令rmdir:刪除空目錄

   -p: 遞歸刪除父空目錄

   -v: 顯示詳細信息

        rm -r遞歸刪除目錄樹

 

十九、練習:

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

   ls /var/l*[[:digit:]][[:lower:]]

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

   ls/etc/[[:digit:]*][^[[:digit:]]]

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

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

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

   ls/etc/m*[^[:digit:]]

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

   ls-d /etc/*.d

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

   ls /etc/[mnrp]*.conf

7、使用別名命令,每日將/etc/目錄下所有文件,備份到/testdir/下獨立的新目錄下,並要求新目錄格式爲backupYYYY-mm-dd,備份過程可見

   alias cpb=”cp –rpv /eetc/ /testdir/ backup`date+%`”

8、先創建/testdir/rootdir目錄,再複製/root所有下文件到該目錄內,並要求保留原有權限

   cp –rp /root/ /testdir/rootdir

9 如何創建/testdir/dir1/x,/testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b,      /testdir/dir1/y/a,/testdir/dir1/y/b

   mkdir–pv /testdir/dir1/{x/{a,b},y/{a,b}}

10如何創建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

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

11如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir3,

  /testdir/dir5/dir4

    mkdir –pv /testdir/dir{3,4,5/dir{3,4}}



二十、作業:

1、  只顯示指定目錄隱藏文件

ls –d /etc/.*

2、  只顯示指定目錄下的子目錄(不看文件)

ls -d /etc/*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章