文件系統結構元素:
1.cent6.8和cent7兩個版本的根目錄不一樣,實際上是同一個文件。
/bin 和/usr/bin
/sbin 和/usr/sbin
/lib 和/usr/lib
/lib64 和/usr/lib64
2.普通用戶用bin root用戶用sbin 普通用戶即使能夠查到sbin目錄也無權限操作。
3.boot爲Linux內核,本身不大,進入boot目錄後,可輸入du –sh來查看目錄大小。 du –sh /boot
4.dev主要放各種硬件設備,也有可能是邏輯設備,ll/dev/Sda爲硬盤 ll /dev/zero爲0設備
b=block 塊設備,物理設備,隨機訪問,有緩存
c=character 字符設備,邏輯上設備,順序訪問,無緩存
/dev/null和/dev/zero 都是空設備
dd if=/dev/zero of=f1 bs=1 count=1 可以讀0並寫到文件裏,bs爲塊大小,1個字節
查看文件十六進制 hexdum f1 ;查看文件二進制 xxd f1
0a是換行的意思
選項:
-n length 只格式化輸入文件的前length個字節
-C 輸出規範的十六進制和ASCII碼
-b 單字節八進制顯示
-c 單字節字符顯示
-d 雙字節十進制顯示
-o 雙字節八進制顯示
-x 雙字節十六進制顯示
-s 從偏移量開始輸出
-e 指定格式字符串,格式字符串包含在一對單引號中,格式字符串形如:'a/b "format1" "format2
5./etc爲配置文件,./etc/issue:預登錄消息標識文件,開機時啓動。
6.lib是庫,函數庫,也是內核的各種模塊。
lib下的modules下有好多驅動,輸入cd /lib/modules/後,輸入ls會看到內核版本,再輸入uname –r 。進入內核版本cd,然後ls就會看到驅動文件,聲卡顯卡等等,驅動應該都是.ko打頭的,比如說cd kernel/ ,然後ls,再進入一個文件夾就會看見.ko文件,我們經常訪問的ext4就是個驅動。
7.media:cent6.8的掛載點,cent7掛載點在/run/meida下,對應的mnt爲手動掛載,比如一定硬盤
8.opt掛載第三方軟件,現在用得少。/etc/opt
9.srv各種服務可能會用到的數據,tmp臨時文件,權限寬鬆,
10.usr:根是第一層,usr第二層。
/usr/include/ 防止第三方語言C語言庫的頭文件.h,模塊調用
/usr/local/是放置第三方軟件,外部服務,源代碼等。
/usr/share/dict/words放置Linux語言字典,查看某個單詞輸入:grep zhang words
11.var 可變數據,日誌,文件,搭建外部服務都是放在var裏,有一個特別重要的log文件,專門放日誌,再比如last文件,爲用戶成功登錄的信息列表,但是這些日誌信息是存在wtmp文件裏的,wtmp就在/var/log文件下。如果文件被移走last就顯示不出信息了
12.proc 進程,內核信息都在這個文件裏,proc裏好多進程編號,在proc可以查看分區,cat partitions ,大小爲0個字節,因爲proc不是硬盤文件,是內存數據。查看CPU信息,輸入 cd /proc/ . 查看內存信息,輸入cat meminfo
13.sys,主要放硬件信息,比如塊設備,例如:新增加硬盤.vmdk,怎麼查看新增加的硬盤呢?最笨的方法就是退出重啓,最簡單的方法就是刷新,echo”- --”> /sys/class/scsi_host/host2/scan,然後查看ls /dev/sd*,就會看見新增加的硬盤。
14./misc:只有cent6.8有,可以掛光盤,神奇自動掛載光盤, 只要訪問後/misc/cd就會df掛載。
15./net:直接訪問ip網絡服務.
16.文件系統: 文件和目錄被組織成一個單根倒置樹結構
文件系統從根目錄下開始,用“/”表示
根文件系統(rootfs):root filesystem
名稱是大小寫敏感
以.開頭的文件爲隱藏文件
路徑分隔的/
文件有兩類數據:元數據:metadata(數據的屬性) ,
數據:data,存放數據的數據內容的地方叫數據塊block。
元數據和數據內容存放的位置是不一致的。
查看分區塊的大小:tune2fs –l /dev/sda2
文件系統分層結構:LSB Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
17.文件名規則:
包括路徑在內文件名稱最長4095個字節,用/分隔的路徑不能超過255個字節。
藍色-->目錄 綠色-->可執行文件 紅色-->壓縮文件 淺藍色-->鏈接文件 灰色-->其他文件 粉色-->套接字文件 淺黃色-->管道
套接字文件的作用:(socket)
/dev/log s開頭的文件是套接字文件
進程間通信(源IP地址和目的IP地址以及源端口號和目的端口號的組合稱爲套接字。其用於標識客戶端請求的服務器和服務)
除了斜槓和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用{比如-},有些字符需要用引號來引用它們。
標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如:MAIL,Mail,mail, mAiL
18.文件系統結構:
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
/bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
/lib64:專用於x86_64系統上的輔助共享庫文件存放位置
/etc:配置文件目錄
/home/USERNAME:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動設備掛載點,cent6.8和cent7掛載點不一樣。
/mnt:臨時文件系統掛載點,
/dev:設備文件及特殊文件存儲位置
b: block device,隨機訪問
c: character device,線性訪問
/opt:第三方應用程序的安裝位置
/srv:系統上運行的服務用到的數據
/tmp:臨時文件存儲位置
19. /usr: universalshared, read-only data
bin: 保證系統擁有完整功能而提供的應用程序
sbin:
lib:32位使用
lib64:只存在64位系統
include: C程序的頭文件(header files)
share:結構化獨立的數據,例如doc, man等
local:第三方應用程序的安裝位置
bin, sbin, lib, lib64, etc, share
20./var: variable datafiles
cache: 應用程序緩存數據目錄
lib: 應用程序狀態信息數據
local:專用於爲/usr/local下的應用程序存儲可變數據;
lock: 鎖文件
log: 日誌目錄及文件
opt: 專用於爲/opt下的應用程序存儲可變數據;
run: 運行中的進程相關數據;通常用於存儲進程pid文件
spool: 應用程序數據池
tmp: 保存系統兩次重啓之間產生的臨時數據
/proc: 用於輸出內核與進程信息相關的虛擬文件系統
/sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置
21.Linux上的應用程序的組成部分:
二進制程序:/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
22.linux下的文件類型:
-:普通文件
d: 目錄文件
b: 塊設備
c: 字符設備
l:符號鏈接文件
p: 管道文件pipe
s: 套接字文件socket
23.顯示當前工作目錄:
每個shell和系統進程都有一個當前的工作目錄
CWD: currentwork directory
顯示當前shell CWD的絕對路徑#pwd: printing working directory
只能回到上一級目錄:cd –
pwd實際上顯示的就是$PWD的內容
pwd –L 目錄連接鏈接時,輸出連接路徑
pwd –p 顯示絕對(物理)路徑,而非使用連接(link)路徑
實例:/bin/pwd
命令:/bin/pwd [選項]
輸出:[root@localhost init.d]# /bin/pwd
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd --help
[root@localhost init.d]# /bin/pwd -P
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd -L
/etc/init.d
24.絕對路徑:
以正斜槓開始
完整的文件的位置路徑
可用於任何想指定一個文件名的時候
相對路徑:
不以斜線開始
指定相對於當前工作目錄或某目錄的位置
可以作爲一個簡短的形式指定一個文件名
例如:dir目錄下有三個文件夾ABC,三個文件夾下分別有f1 f2 f3文件,當我想在f1文件下調用b裏的f2時,絕對路徑/dir/b/f2.sh,相對路徑../b/f2.sh。當把dir文件移動別的文件夾時,絕對路徑就會出現錯誤。編腳本的時候尤其要注意這個路徑問題。
25.更改目錄:cd 改變目錄
爲絕對或相對路徑:
cd/home/joshua/work
cdproject/docs
cd 進入用戶主目錄;
cd ~ 進入用戶主目錄;cd ~wang 就進到了王的目錄,王目錄進不到root目錄下。
cd - 返回進入此目錄之前所在的目錄;
cd .. 返回上級目錄(若當前目錄爲“/“,則執行完後還在“/";".."爲上級目錄的意思);
cd ../.. 返回上兩級目錄;
cd !$ 把上個命令的參數作爲cd參數使用。
相關的環境變量:
PWD:保存了當前目錄路徑
OLDPWD:上一次所在目錄路徑
Cd命令用法:cd –P:加上-P的選項顯示的是物理的路徑
cd –P /bin –e 如果-p選項指定,當前目錄不能確定成功還是失敗,退出後看狀態,輸入echo $? 結果值爲0表示成功,非0表示失敗.
ln是linux中又一個非常重要命令,它的功能是爲某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數是-s,具體用法是: ln –s 源文件目標文件。
當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在其它的目錄下用ln命令鏈接(link)它就可以,不必重複的佔用磁盤空間。例如:ln –s /bin/less
26.ls命令是linux下最常用的命令。ls命令就是list的縮寫缺省下ls用來打印出當前目錄的清單如果ls指定其他目錄那麼就會顯示指定目錄裏的文件及文件夾清單。 通過ls 命令不僅可以查看linux文件夾包含的文件而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。ls 命令在日常的linux操作中用的很多!
1. 命令格式:
ls [選項] [目錄名]
2. 命令功能:
列出目標目錄中所有的子目錄和文件。
3. 常用參數:
-a, –all 列出目錄下的所有文件,包括以 . 開頭的隱含文件
-A 同-a,但不列出“.”(表示當前目錄)和“..”(表示當前目錄的父目錄)。
-c 配合 -lt:根據 ctime 排序及顯示 ctime (文件狀態最後更改的時間)
配合 -l:顯示 ctime 但根據名稱排序否則:根據 ctime 排序
-C 每欄由上至下列出項目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 將目錄象文件一樣顯示,而不是顯示其下的文件。
-D, –dired 產生適合 Emacs 的 dired 模式使用的結果
-f 對輸出的文件不進行排序,-aU 選項生效,-lst 選項失效
-g 類似 -l,但不列出所有者
-G, –no-group 不列出任何有關組的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 類似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符號鏈接指示的真正目的地
–indicator-style=方式 指定在每個項目名稱後加上指示符號<方式>:none (默認),classify (-F),file-type (-p)
-i, –inode 印出每個文件的 inode 號
-I, –ignore=樣式 不印出任何符合 shell 萬用字符<樣式>的項目
-k 即 –block-size=1K,以 k 字節的形式表示文件的大小。
-l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來。
-L, –dereference 當顯示符號鏈接的文件信息時,顯示符號鏈接所指示的對象而並非符號鏈接本身的信息
-m 所有項目以逗號分隔,並填滿整行行寬
-o 類似 -l,顯示文件的除組信息外的詳細信息。
-r, –reverse 依相反次序排列,-Sr就是按照相反的順序排序
-ld目錄和符號鏈接信息
-R, –recursive 同時列出所有子目錄層,遞歸
--block-size=M就是以M爲單位顯示。
-s, –size 以塊大小爲單位列出所有文件的大小,
-S 根據文件大小排序
--time =WORD,與-l一起用,WORD 以下是可選用的 WORD 和它們代表的相應選項代替Mtime顯示
--sort =:WORD以下是可選用的 WORD 和它們代表的相應選項
extension –X status –c none -U time –t size –S atime –u access -u
version –v use –u
例如: ls –cl–sort=time 按照ctime順序排序, 等於 ls -clt
-t 以文件修改時間排序
-u 配合 -t:顯示訪問時間atime而且依訪問時間排序
配合 -l:顯示訪問時間但根據名稱排序
否則:根據訪問時間排序
-U 不進行排序;依文件系統原有的次序列出項目
-v 根據版本進行排序
-w, –width=COLS 自行指定屏幕寬度而不使用目前的數值
-x 逐行列出項目而不是逐欄列出
-X 根據擴展名排序
-1 每行只列出一個文件,分行顯示
–help 顯示此幫助信息並離開
–version 顯示版本信息並離開
27.查看文件狀態
vstat:查看詳細的元數據
v文件:metadata, data
v三個時間戳:
accesstime:訪問時間,atime,讀取文件內容
modifytime: 修改時間,mtime,改變文件內容(數據)
changetime: 改變時間,ctime,元數據發生改變
如果atime的時間是一天以上就會變
如果atime比ctime時間舊,就會改變(正常情況下atime的時間比ctime的新)
避免頻繁更改,提高性能
atime可以安全不讓修改, 輸入chattr +A f1就可以使atime不變了(f1爲文件名)。
chattr強行鎖定atime,不讓修改
echo xx >>aa 將xx寫入aa文件裏,Mtime和ctime就會發生改變。
28.文件通配符
v *匹配零個或多個字符
v ?匹配任何單個字符,
v ~當前用戶家目錄
v ~username用戶家目錄
v ~+當前工作目錄,pwd或$PWD或$OLDPWD或 .
v ~- 前一個工作目錄
v [0-9]匹配一個數字範圍
或的關係,匹配任意字符f[1a3]=f1 fa f3
v[a-z]:大寫和小寫字母
是按照aAbBcC……zZ匹配 f[a-c] 就是aAbBc
v[A-Z]:大寫字母
f[A-C] AbBcC
v[wxc]匹配列表中的任何的一個字符
v[^wxc]匹配列表中的所有字符以外的字符
v預定義的字符類:#man 7 glob
[[:digit:]]:任意數字,相當於0-9
[[:lower:]]:任意小寫字母
[[:upper:]]:任意大寫字母
[[:alpha:]]:任意大小寫字母
[[:alnum:]]:任意數字或字母
[[:space:]]:空格
[[:punct:]]:標點符號