檔案系統及檔案許可權
檔案系統及檔案許可權
命令幫助
–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-