1. 程式人生 > >檔案系統及檔案許可權

檔案系統及檔案許可權

檔案系統及檔案許可權

命令幫助

–help和-h選項

顯示用法總結和引數列表
使用的大多數,但並非所有的
示例:

date–help
Usage:date[OPTION]…[+FORMAT]or: date[-u|–utc|–universal][MMDDhhmm[[CC]YY][.ss]]
[]表示可選項
CAPS或<>表示變化的資料
…表示一個列表
x |y| z的意思是“x或y或z“
-abc的意思是-a -b –c
{ } 表示分組

man命令

man命令的操作方法:

使用less命令實現  
space, ^v, ^f, ^F: 向檔案尾翻屏  
b, ^b: 向檔案首部翻屏  
d, ^d: 向檔案尾部翻半屏  
u, ^u: 向檔案首部翻半屏  
RETURN, ^N, e, ^E or j or ^J: 向檔案尾部翻一行  
y or ^Y or ^P or k or ^K:向檔案首部翻一行  
q: 退出  
#:跳轉至第#行  
1G: 回到檔案首部  
G:翻至檔案尾部  

man搜尋

/KEYWORD:
以KEYWORD指定的字串為關鍵字,從當前位置向檔案尾部搜尋;
不區分字元大小寫;
n: 下一個
N:上一個
KEYWORD:
以KEYWORD指定的字串為關鍵字,從當前位置向檔案首部搜尋;不區分字元大小寫;
n: 跟搜尋命令同方向,下一個
N:跟搜尋命令反方向,上一個

info

man常用於命令參考,GNU工具info適合通用文件參考
沒有引數,列出所有的頁面
info 頁面的結構就像一個網站
每一頁分為“節點”
連結節點之前*
info [命令]
方向鍵,PgUp,PgDn導航
Tab鍵移動到下一個連結
d 顯示主題目錄
Home 顯示主題首部
Enter進入選定連結
n/p/u/l進入下/前/上一層/最後一個連結
s文字文字搜尋
q退出info


檔案系統

檔名規則

boot 資料夾裝的是引導檔案
etc資料夾裝的是各種設定,配置檔案等,等價於登錄檔
home資料夾存放使用者資料
bin(binary)二進位制,裝的是普通使用者可執行的二進位制程式
sbin是系統管理員常用的工具,tem資料夾裝的是臨時資料
var資料夾裝的是可變內容,系統日誌(/var/log內)等
proc(process)程序,正在記憶體中執行的程式,該資料夾不在硬碟上
mount /dev/硬碟號/ 掛載硬碟

檔案命名

Linux系統對大小寫不敏感,常用的Linux檔案系統(xfs;ext4)對大小寫敏感
而Linux系統識別fat檔案格式時對大小寫不敏感
檔名最長255個位元組
包括路徑在內檔名稱最長4095個位元組
藍色–>目錄綠色–>可執行檔案紅色–>壓縮檔案淺藍色–>連結檔案灰色–>其他檔案
除了斜槓和NUL,所有字元都有效.但使用特殊字元的目錄名和檔案不推薦使用,有些字元需要用引號來引用它們
標準Linux檔案系統(如ext4),檔名稱大小寫敏感
例如:MAIL,Mail,mail, mAiL

檔案系統結構

/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:
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相關的安全策略等資訊的儲存位置

本節筆記


ls -R 列出當前資料夾的目錄及子目錄(所以檔案和目錄)
ls -r 反轉順序
檔案有三個時間屬性,
修改時間mtime(modify time)
讀取時間atime(access time)ll --time=atime 查詢檔案讀取的時間
元資料的更改時間 ctime (change time)
stat +檔名 查詢檔案的三個時間

絕對和相對路徑 (重點)


絕對路徑:
以正斜槓開始
完整的檔案的位置路徑
可用於任何想指定一個檔名的時候
相對路徑名
不以斜線開始
指定相對於當前工作目錄或某目錄的位置
可以作為一個簡短的形式指定一個檔名
基名:basename +檔案可以取檔案的基名
目錄名:dirname +檔案可以取檔案的目錄名


列出目錄內容

列出當前目錄的內容或指定目錄
用法:ls [options] [files_or_dirs]
示例:

ls -a包含隱藏檔案  
ls -l顯示額外的資訊  
ls -R目錄遞迴通過  
ls -ld目錄和符號連結資訊  
ls -1 檔案分行顯示  
ls –S 按從大到小排序  
ls –t 按mtime排序  
ls –u 配合-t選項,顯示並按atime從新到舊排序  
ls –U 按目錄存放順序顯示  
ls –X 按檔案字尾排序  
ls /var l{0...9}  
ls /etc rc{0...6}*  

.>boot/111 快速清空檔案111
touch +檔名建立空檔案,若該檔案已存在,就重新整理檔案的時間
. >> +檔名 建立空檔案,若存在,不重新整理檔案時間,追加,重定向
rename +conf conf.bak *.conf 可以批量修改多個字尾為conf的檔名字
或者-開頭的檔案,要建立或者刪除是隻需在或者-前加./就可以了

date 0921221392018直接改時間                              (重點)  
data +%w -d '-2 day'顯示兩天前是星期幾  
data +%F 顯示年月日  
data +'%F %T' 顯示年月日和時間  
data +%Y 顯示年  
data +%Y%M%D 顯示年月日  
whatis +命令  查詢該命令作用=man -f  
mandb 生成whatis資料庫 centos6  
makewhatis 生成whatis資料庫  centos7  

安裝命令工具 (重點)

df查詢sr0掛載光碟,若無掛載光碟則建立掛載點

df -h    #檢視光碟是否已掛載
mkdir /data/cdrom     #新建掛載目錄
mount /dev/sr0/data/cdrom               #掛載光碟到目錄,然後執行下一步  
df                                #查詢sr0掛載路徑
rpm -ivh +掛載光碟目錄(右鍵複製media),再輸入工具首字母補全,回車安裝  

file

file content 檔案內容
file metadata 檔案元資料

inode number 檔案節點

ls -i 查詢檔案節點編號 

節點編號存放在/boot,節點編號用完後無法存放檔案 (面試)

ls -di +資料夾  查詢掛載節點位置  
ls -di /data /boot /  centos6 這三個節點為2 centos7上著三個節點為64  

移動複製的區別(重點)原理層面

cp /dir1/f1 /dir2/f2  
mv /dir1/f1 /dir2/f2  

相對路徑(重點) 硬連結和軟連結的區別?
通俗來說:
硬連結:對一個檔案,起多個檔名
軟連線:原始檔案一般路徑用相對路勁,


相對路徑一定相對於軟連線檔案的路徑 ********************** (重點 看錄屏)

1.是否是同一個檔案 硬連結是同一個檔案,軟連結不上是同一個
2.是否跨分割槽
3.連結數增長?
4.inode number 是否相同?
5.原始檔案刪除,連結檔案可否訪問?
6.大小?
7.支援目錄?
8.相對路徑
節點表


例子:

ln -s ../../dev/zero  d1/d2/zero-link  

0輸入
1輸出
2錯誤
命令+ &> /dev/null 將輸出結果直接扔進null(垃圾箱),不在螢幕顯示


檔案萬用字元 (重點)

*匹配零個或多個字元
?匹配任何單個字元
~ 當前使用者家目錄
~mage 使用者mage家目錄
~+ 當前工作目錄
~-前一個工作目錄
[0-9]匹配數字範圍
[a-z]:字母
[A-Z]:字母
[wang]匹配列表中的任何的一個字元
[^wang]匹配列表中的所有字元以外的字元
預定義的字元類:man 7 glob
[:digit:]:任意數字,相當於0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:blank:]:水平空白字元
[:space:]:水平或垂直空白字元
[:punct:]:標點符號
[:print:]:可列印字元
[:cntrl:]:控制(非列印)字元
[:graph:]:圖形字元
[:xdigit:]:十六進位制字元
建立空檔案和重新整理時間

touch命令: (重點)

touch [OPTION]… FILE…

-a                                     #僅改變atime和ctime  
-m                                     #僅改變mtime和ctime  
-t [[CC]YY]MMDDhhmm[.ss]               #指定atime和mtime的時間戳  
-c                                     #如果檔案不存在,則不予建立  

例子:

複製檔案和目錄cp (重點)
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必須存在,且為目錄,其它情形均會出錯
cpSRC DEST
SRC是目錄:此時使用選項:-r
如果DEST不存在:則建立指定目錄,複製SRC目錄中所有檔案至DEST中
如果DEST存在:
如果DEST是檔案:報錯
如果DEST是目錄:

cp常用選項

cp
-i:覆蓋前提示–n:不覆蓋,注意兩者順序  
-r, -R: 遞迴複製目錄及內部的所有內容  
-a: 歸檔,相當於-dR--preserv=all  
-d:--no-dereference --preserv=links 不復制原檔案,只複製連結名  
--preserv[=ATTR_LIST]  

mode: 許可權
ownership: 屬主屬組
timestamp:
links
xattr
context
all
-p: 等同–preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:–update 只複製源比目標更新檔案或目標不存在的檔案
-b:目標存在,覆蓋前先備份
–backup=numbered 目標存在,覆蓋前先備份加數字字尾

本節筆記

快捷鍵

cp +檔案路徑/a檔名 檔案路徑/a新檔名  #將a檔案複製到另一資料夾並改名  
cp +r +a目錄  +b目錄  將a目錄複製到b目錄,成為b目錄的子目錄  
cp -a 常用來備份,保留複製檔案的所有屬性  
cp file1 file1.bak  將file1檔案備份為file1.bak  
等同於cp file1{,.bak}  
mv +a檔案 +b檔案  將檔案a改名為檔案b  
mv +a檔案 +資料夾  移動a檔案到資料夾  
mv -t +資料夾+多個檔案  把多個檔案移動到目標資料夾  
移動和重新命名檔案  
mv [OPTION]... [-T] SOURCE DEST  
mv [OPTION]... SOURCE... DIRECTORY  
mv [OPTION]... -t DIRECTORY SOURCE...  

常用選項:

mv
-i: 互動式  
-f: 強制  
-b: 目標存在,覆蓋前先備份  

刪除

rm[OPTION]... FILE...  
常用選項:  
-i互動式  
-f強制刪除  
-r遞迴  
--no-preserve-root 刪除/  
示例:  
rm-rf/ 慎用   
目錄操作  
tree 顯示目錄樹  
-d: 只顯示目錄  
-L level:指定顯示的層級數目  
-P pattern: 只顯示由指定pattern匹配到的路徑  

mkdir建立目錄 練習

mkdir
-p: 存在於不報錯,且可自動建立所需的各目錄
-v: 顯示詳細資訊
-m MODE: 建立目錄時直接指定許可權
rmdir刪除空目錄
-p: 遞迴刪除父空目錄
-v: 顯示詳細資訊
rm-r遞迴刪除目錄樹
標準輸入和輸出
程式:指令+資料
讀入資料:Input
輸出資料:Output
開啟的檔案都有一個fd: file descriptor (檔案描述符)
Linux給程式提供三種I/O裝置
標準輸入(STDIN)-0預設接受來自鍵盤的輸入
標準輸出(STDOUT)-1預設輸出到終端視窗
標準錯誤(STDERR)-2預設輸出到終端視窗

I/O重定向:改變預設位置

把輸出和錯誤重新定向到檔案 (重點)

STDOUT和STDERR可以被重定向到檔案
命令操作符號檔名
支援的操作符號包括:
_> 把STDOUT重定向到檔案
2>把STDERR重定向到檔案
&>把所有輸出重定向到檔案
_> 檔案內容會被覆蓋
set –C 禁止將內容覆蓋已有檔案,但可追加
_>| file 強制覆蓋
set +C 允許覆蓋
_>> 原有內容基礎上,追加內容
2>覆蓋重定向錯誤輸出資料流
2>> 追加重定向錯誤輸出資料流
標準輸出和錯誤輸出各自定向至不同位置
COMMAND > /path/to/file.out2> /path/to/error.out
合併標準輸出和錯誤輸出為同一個資料流進行重定向
&>覆蓋重定向
&>> 追加重定向
COMMAND > /path/to/file.out2>&1 (順序很重要)
COMMAND >> /path/to/file.out2>&1
():合併多個程式的STDOUT
(cal2007;cal2008)> all.txt

本節筆記

重定向

.> 覆蓋
.>>追加不覆蓋原檔案內容
2>將錯誤資訊重定向到檔案中
1+到100 echo {1…100} | tr ’ ’ + |bc
命令(mail) << EOF 寫一封信,直到輸入EOF結束

檔案許可權

rwx
r–4 讀取許可權
w–2 寫入許可權
x–1 執行許可權
-rwxrwxrwx -為檔案型別 777
-rw-rw-rw- 只有讀寫許可權,沒有執行許可權666
$ chgrp +組+使用者 將此使用者改為此組
cat與tac相反

abcd  dcba  
head  +命令 預設顯示該檔案的前十行  
head -n +數字  顯示檔案的前幾行  
tail +f跟蹤檔案號,檔案被刪除就失效  
tail +F跟蹤檔名,檔案被刪除後再新建的同名檔案繼續跟蹤  

tr命令 (重點)

tr轉換和刪除字元
tr[OPTION]… SET1 [SET2]
選項:

tr
-c–C --complement:取字符集的補集  
-d--delete:刪除所有屬於第一字符集的字元  
-s--squeeze-repeats:把連續重複的字元以單獨一個字元表示  
-t--truncate-set1:將第一個字符集對應字元轉化為第二字符集對應的字元  
[:alnum:]:字母和數字  
[:alpha:]:字母  
[:cntrl:]:控制(非列印)字元  
[:digit:]:數字  
[:graph:]:圖形字元  
[:lower:]:小寫字母  
[:print:]:可列印字元  
[:punct:]:標點符號  
[:space:]:空白字元  
[:upper:]:大寫字母  
[:xdigit:]:十六進位制字元  

從檔案中匯入STDIN …(重點)(重點)

使用<來重定向標準輸入
某些命令能夠接受從檔案中匯入的STDIN
tr‘a-z’‘A-Z’</etc/issue
該命令會把/etc/issue中的小寫字元都轉換成寫寫字元
tr–d abc< /etc/fstab刪除fstab檔案中的所有abc中任意字元
cat > file
mage
wangxiaochun
按ctrl+d離開,可以使用檔案來代替鍵盤的輸入
Cat > filea< fileb


把多行傳送給STDIN … (重點)(重點)練習
使用“<<終止詞”命令從鍵盤把多行重導向給STDIN
直到終止詞位置的所有文字都發送給STDIN
有時被稱為就地文字(heretext)
例如:

'mail-s'PleaseCall'[email protected]<<END  
>HiWang,  
>  
>Pleasegivemeacallwhenyougetin.Wemayneed  
>todosomemaintenanceonserver1.  
>  
>Detailswhenyou'reon-site  
>Zhang  
>END  

例子:

cat >f1 回車  
aa  
bb  
cc  
                              #回車一次輸出aa,再回車,輸出bb,再回車,輸出cc,此為單行重定向  
cat >f1 <<b                           #回車,以b結尾,(常用EOF結尾)  
>aa  
>bb  
>cc  
>b  
以b結尾,輸出:  
aa  
bb  
cc             #此為多行重定向  

管道 … (重點)練習

管道(使用符號“|”表示)用來連線命令
命令1 | 命令2 | 命令3 | …
將命令1的STDOUT傳送給命令2的STDIN,命令2的STDOUT傳送到命令3的STDIN
STDERR預設不能通過管道轉發,可利用2>&1 或|& 實現
最後一個命令會在當前shell程序的子shell程序中執行用來
組合多種工具的功能

ls| tr‘a-z' ‘A-Z'  

less :一頁一頁地檢視輸入

ls-l/etc|less  

mail:通過電子郵件傳送輸入

echo'testemail'|mail-s 'test'[email protected]  

lpr:把輸入傳送給印表機
echo’testprint’|lpr-Pprinter_name
示例:
將/home 裡面的檔案打包,但打包的資料不是記錄到檔案,而是傳送到stdout,
經過管道後,將tar -cvf-/home 傳送給後面的tar -xvf-,
後面的這個-則是取前一個命令的stdout,因此,就不需要使用臨時file了
tar -cvf-/home | tar -xvf-