00. 課程介紹部分
- 文件屬性索引信息 inode/block 讀取數(shù)據(jù)原理
- 文件屬性鏈接概念 硬鏈接/軟鏈接
- 系統(tǒng)正則符號(hào)介紹
系統(tǒng)基礎(chǔ)符號(hào)
系統(tǒng)通配符號(hào)
系統(tǒng)正則符號(hào) 基礎(chǔ)正則 擴(kuò)展正則
02.回顧 文件屬性介紹
文件屬性中文件權(quán)限概念: rwx - 權(quán)限賦予用戶(9位) 數(shù)值表示權(quán)限 rwx-w--wx 723
根據(jù)權(quán)限找出相應(yīng)文件數(shù)據(jù):
根據(jù)權(quán)限找出相應(yīng)文件數(shù)據(jù):-perm 權(quán)限參數(shù)
[root@oldboy66 oldboy]# find /oldboy -type f -perm 666
/oldboy/oldboy.txt
[root@oldboy66 oldboy]# find /oldboy -type f -perm 644
/oldboy/1.log
/oldboy/2.log
/oldboy/3.log
/oldboy/oldboy01/a.txt
/oldboy/oldboy01/b.txt
文件屬性中時(shí)間信息概念: 時(shí)間分類(atime訪問 mtime修改 ctime修改屬性) date
根據(jù)時(shí)間信息查找文件數(shù)據(jù):
find /oldboy -type f -mtime +7
+7: 7天以前的數(shù)據(jù)信息
7: 正好距離當(dāng)前第7天的數(shù)據(jù)
-7: 7天以內(nèi)的數(shù)據(jù)信息
[root@oldboy66 oldboy]# find /oldboy -type f -mtime +2
[root@oldboy66 oldboy]# find /oldboy -type f -mtime +1
/oldboy/1.log
/oldboy/2.log
/oldboy/3.log
/oldboy/oldboy01/a.txt
/oldboy/oldboy01/b.txt
/oldboy/oldboy01/c.txt
/oldboy/oldboy02/a.txt
find命令找東西做處理方法:
配合xargs命令使用
[root@oldboy66 oldboy]# find /oldboy -type f -mtime +1|xargs -n2 rm -n2---兩列
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy01
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy02
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy03
drwxr-xr-x. 3 root root 21 Jul 19 14:31 oldboy1
[root@oldboy66 oldboy]# find /oldboy -type f|xargs ls
/oldboy/oldboy1.txt /oldboy/oldboy4.txt
/oldboy/oldboy2.txt /oldboy/oldboy5.txt
/oldboy/oldboy3.txt
配合反引號(hào)使用
[root@oldboy66 oldboy]# rm -f `find /oldboy -type f`
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy01
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy02
drwxr-xr-x. 2 root root 6 Jul 22 09:06 oldboy03
[root@oldboy66 oldboy]# touch oldboy{1..5}.txt
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r--. 1 root root 35 Jul 19 11:01 oldboy01.txt
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 1 root root 0 Jul 22 09:12 oldboy1.txt
-rw-r--r-- 1 root root 0 Jul 22 09:12 oldboy2.txt
-rw-r--r-- 1 root root 0 Jul 22 09:12 oldboy3.txt
-rw-r--r-- 1 root root 0 Jul 22 09:12 oldboy4.txt
-rw-r--r-- 1 root root 0 Jul 22 09:12 oldboy5.txt
配合find 命令參數(shù) -exec使用
root@oldboy66 oldboy]# find ./ -type f -exec rm {} \;
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
[root@oldboy66 oldboy]#
[root@oldboy66 oldboy]# touch oldboy{1..5}.txt
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 1 root root 0 Jul 22 09:17 oldboy1.txt
-rw-r--r-- 1 root root 0 Jul 22 09:17 oldboy2.txt
-rw-r--r-- 1 root root 0 Jul 22 09:17 oldboy3.txt
-rw-r--r-- 1 root root 0 Jul 22 09:17 oldboy4.txt
-rw-r--r-- 1 root root 0 Jul 22 09:17 oldboy5.txt
配合find 命令參數(shù)-delete使用
[root@oldboy66 oldboy]# find ./ -type f -delete
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
03文件屬性--文件索引
inode 用于存儲(chǔ)文件屬性信息/存儲(chǔ)文件指針信息搞疗,1個(gè)文件使用一個(gè)inode
創(chuàng)建文件系統(tǒng)(格式化)
查看:df - i
block 用于存儲(chǔ)文件數(shù)據(jù)信息
1個(gè)文件最多可以有 多個(gè)block 512 字節(jié)
創(chuàng)建文件系統(tǒng)(格式化)
查看:df
1個(gè)block默認(rèn)512字節(jié) 多個(gè)block
block調(diào)節(jié)小一些: 存儲(chǔ)小文件更加有力
存儲(chǔ)大文件. 占用多個(gè)block, 讀一個(gè)blcok和寫一個(gè)block 都會(huì)消耗磁盤I/O
企業(yè): 默認(rèn)block大小 4k
block調(diào)節(jié)大一些: 存儲(chǔ)大文件更加有力
企業(yè): 視頻網(wǎng)站. 調(diào)整磁盤block更大
04文件屬性--硬鏈接數(shù)
硬鏈接:
概念: inode號(hào)碼一致的數(shù)據(jù)互為硬鏈接
相當(dāng)于給數(shù)據(jù)多開個(gè)門
創(chuàng)建: ln oldboy.txt oldboy_hard_link.txt
特點(diǎn):
1.源文件刪除,鏈接文件依然生效
2.硬鏈接創(chuàng)建成功,不會(huì)占用新的inode和block
3.硬鏈接對目錄不能進(jìn)行處理,不能創(chuàng)建硬鏈接目錄
4.默認(rèn)目錄硬鏈接數(shù)為2,默認(rèn)文件硬鏈接數(shù)為1
作用:
硬鏈接文件可以用于數(shù)據(jù)恢復(fù) 防止數(shù)據(jù)誤刪除(無法防止文件誤修改)
完整備份數(shù)據(jù)使用cp進(jìn)行備份
面試題: 在查看一個(gè)目錄時(shí),硬鏈接數(shù)表示什么意思?
[root@oldboy66 oldboy]# ll -id /etc/
16777281 drwxr-xr-x. 83 root root 8192 Jul 22 12:21 /etc/
解:
01. 硬鏈接概念: .默認(rèn)目錄硬鏈接數(shù)為2
02. 解釋此題硬鏈接數(shù)為什么是83
在/etc目錄中有81個(gè)子目錄
補(bǔ)充: 根據(jù)硬鏈接文件inode號(hào)碼恢復(fù)數(shù)據(jù)
find / -type f -inum 3213
軟鏈接:
概念:數(shù)據(jù)信息的快捷方式
創(chuàng)建: ln -s oldboy.txt oldboy/oldboy_soft_link.txt
特點(diǎn):
01. 源文件刪除, 鏈接文件失效
02. 軟鏈接創(chuàng)建成功, 不會(huì)占用新的block, 但會(huì)占用新的inode
03. 軟鏈接對目錄可以進(jìn)行處理, 可以創(chuàng)建軟鏈接目錄
作用:
01. 方便開發(fā)人員調(diào)取系統(tǒng)環(huán)境數(shù)據(jù)
[root@oldboy66 oldboy]# ln oldboy.txt oldboy_hard_link.txt-----創(chuàng)建硬鏈接
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r-- 1 root root 0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 2 root root 79 Jul 22 11:23 oldboy_hard_link.txt
-rw-r--r-- 2 root root 79 Jul 22 11:23 oldboy.txt
[root@oldboy66 oldboy]# ln -s oldboy.txt oldboy_soft_link.txt -----創(chuàng)建軟連接
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r-- 1 root root 0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 2 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx 1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
-rw-r--r-- 2 root root 79 Jul 22 11:23 oldboy.txt
[root@oldboy66 oldboy]# rm -f oldboy.txt
[root@oldboy66 oldboy]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 1 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx 1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
[root@oldboy66 oldboy]#
[root@oldboy66 oldboy]# echo oldgirl63 >oldboy.txt
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r-- 1 root root 0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r-- 1 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx 1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
-rw-r--r-- 1 root root 10 Jul 23 21:48 oldboy.txt
[root@oldboy66 oldboy]# cat oldboy_soft_link.txt
oldgirl63
05系統(tǒng)正則符號(hào)概念:
1)系統(tǒng)基礎(chǔ)符號(hào)
基礎(chǔ)符號(hào):
#: 表示注釋信息 ; 表示登錄用戶信息 root用戶登錄提示符
$ : 普通用戶登錄信息提示符; 表示調(diào)取變量信息$PATH ;表示調(diào)取列信息 awk ‘{print $1}’ /oldboy/oldboy.txt
!:表示強(qiáng)制意思q!;表示取反 ! -path ;用于調(diào)取歷史命令( ! 歷史命令信息開頭字母,較危險(xiǎn)搜索出來直接執(zhí)行)
find /oldboy -type f ! -path /oldboy/oldboy01*----排除01目錄,不進(jìn)行查找
|:管道;將前一個(gè)命令執(zhí)行的結(jié)果交由后面的命令繼續(xù)執(zhí)行
練習(xí):找出/oldboy下面所有.txt結(jié)尾的文件,并進(jìn)行壓縮,將壓縮文件保存到/oldboy目錄中
:調(diào)取變量信息示例:
[root@oldboy66 ~]# oldboy=123
[root@oldboy66 ~]# echo $oldboy
123
[root@oldboy66 ~]# cat /oldboy/oldboy.txt
oldboy01 old boy 01
oldboy02 old boy 02
oldboy03 old boy 03
[root@oldboy66 ~]# awk '{print $1}' /oldboy/oldboy.txt ---用awk調(diào)取第一列
oldboy01
oldboy02
oldboy03
[root@oldboy66 ~]# awk '{print $2}' /oldboy/oldboy.txt ---用awk調(diào)取第二列
old
old
old
find /oldboy -type f |xargs :find 與| 結(jié)合應(yīng)用示例:
[root@oldboy66 ~]# find /oldboy -type f -name "oldboy.txt"|xargs sed 's#oldboy#oldgirl#g'
oldgirl01 old boy 01
oldgirl02 old boy 02
oldgirl03 old boy 03
[root@oldboy66 ~]# cat /oldboy/oldboy.txt |sed 's#oldboy#oldgirl#g'
oldgirl01 old boy 01
oldgirl02 old boy 02
oldgirl03 old boy 03
練習(xí):找出oldboy下面所有.txt結(jié)尾的文件,并進(jìn)行壓縮 將壓縮文件保存到/oldboy目錄中
方法一: 批量壓縮
[root@oldboy66 oldboy]# find /oldboy -type f -name "*.txt"|xargs tar zcvf /oldboy/oldboy.tar.gz
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt
方法二:
[root@oldboy66 oldboy]# tar zcvf /oldboy/oldboy.tar.gz `find /oldboy -type f -name "*.txt"`
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
方法三: +把所有東西找完了,統(tǒng)一放括號(hào)里
[root@oldboy66 oldboy]# find /oldboy -type f -name "*.txt" -exec tar zcvf /oldboy/oldboy.tar.gz {} +;
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt
方法四: exclude 排除
[root@oldboy66 oldboy]# tar zcvf /oldboy/oldboy.tar.gz --exclude=*.jpg /oldboy/
tar: Removing leading `/' from member names
/oldboy/
/oldboy/oldboy.tar.gz
方法五:
[root@oldboy66 oldboy]# ls /oldboy/*.txt|xargs tar zcvf /oldboy/oldboy.tar.gz
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
引號(hào)符號(hào)系列:
‘’:所見即所得
“”:輸入即輸出,會(huì)將部分符號(hào)內(nèi)信息解析處理$ \$()
等價(jià)于$() 將引號(hào)里的命令執(zhí)行結(jié)果交給外面的命令處理
沒引號(hào):和雙引號(hào)功能類似,識(shí)別序列信息
[root@oldboy66 oldboy]# echo oldgirl63>oldboy.txt
[root@oldboy66 oldboy]# cat oldboy.txt
oldgirl63
[root@oldboy66 oldboy]# echo oldboy63>>oldboy.txt
[root@oldboy66 oldboy]# cat oldboy.txt
oldgirl63
oldboy63
[root@oldboy66 oldboy]# grep oldboy oldboy.txt
oldboy63
[root@oldboy66 oldboy]# grep 'oldboy' oldboy.txt
oldboy63
[root@oldboy66 oldboy]# grep "oldboy" oldboy.txt
oldboy63
[root@oldboy66 oldboy]# echo "oldboy $oldboy `pwd`"
oldboy 123 /oldboy
[root@oldboy66 oldboy]# echo "oldboy $oldboy $(pwd)"
oldboy 123 /oldboy
[root@oldboy66 oldboy]#
路徑符號(hào)系列:
~:切換到用戶家目錄 cd~/cd
-:快速切換到上一次所在路徑 cd-/cd$oldboy
.:切換到當(dāng)前所在路徑 cd.
..:切換到上一級所在路徑 cd../ cd../../..
[root@oldboy66 oldboy]# pwd
/oldboy
[root@oldboy66 oldboy]# vim ../etc/hosts
10.0.0.201 www.baidu.com
定向符號(hào)系列:
1>/>:標(biāo)準(zhǔn)輸出重定向
1>>/>>:標(biāo)準(zhǔn)輸出追加重定向
2>:錯(cuò)誤輸出重定向
2>>:錯(cuò)誤輸出追加重定向
[root@oldboy66 oldboy]# eco oldboy >>/oldboy/ok.log 2>&1
[root@oldboy66 oldboy]# cat ok.log
-bash: eco: command not found
echo oldboy &>>/oldboy/ok.log
<:標(biāo)準(zhǔn)輸入重定向
tr ‘a(chǎn)-z’ ‘A-Z’</oldboy/oldboy.txt
xargs -n2 </oldboy/oldboy.txt
<<:標(biāo)準(zhǔn)輸入追加重定向
cat >/oldboy/oldboy.txt<<EOF
邏輯符號(hào)系列:
&&: 表示前一個(gè)命令執(zhí)行成功,再執(zhí)行后面命令
mkdir /oldboy && touch /oldboy/oldboy01.txt
||: 表示前一個(gè)命令執(zhí)行失敗,在執(zhí)行后面命令
rmx /oldboy || touch /oldboy/oldboy02.txt
輸入錯(cuò)誤信息時(shí)提示信息: 錯(cuò)誤輸出重定向
[root@oldboy66 oldboy]# echo oldboy &>/tmp/ok.log && echo ok || echo failed
ok
[root@oldboy66 oldboy]# ech oldboy &>/tmp/ok.log && echo ok || echo failed
failed