shell 學(xué)習(xí)筆記

一、文件安全與權(quán)限

1龟糕、文件有讀r 寫(xiě)w 可執(zhí)行x 三個(gè)權(quán)限 對(duì)應(yīng)數(shù)字 4 2 1

使用ls -l 出來(lái)的最前面的就是文件的權(quán)限位

-rwxr-x-r-- 最前面-表示普通文件,剩下的三位三位讀,分別表示文件的權(quán)限拆檬,文件所在組用戶的權(quán)限赏迟,其他用戶權(quán)限

drwxr-xr-- 最前面d表示目錄屡贺。

2、改變權(quán)限锌杀,chmod [who] operator [permission] filename

who 指的是 哪個(gè)用戶甩栈,u :指的是當(dāng)前文件屬主,g :同組用戶 糕再,o :其他組用戶 a : 所有用戶

operator 指的是 + 增加權(quán)限; - 取消權(quán)限 ; = 設(shè)定權(quán)限

permission 指的是賦予什么樣的權(quán)限量没,有 r? w? x? ,此外還有s : 文件屬主和組set-ID ;t 粘性位* ; l : 給文件加鎖突想,使其他用戶無(wú)法訪問(wèn);

如果本來(lái)是 r--r--r-- 想加可執(zhí)行權(quán)限殴蹄,則可以 chmod u + x? file 或者chmod 544 file

3究抓、umask值 :用戶設(shè)定創(chuàng)建文件或者文件夾時(shí)候的初始權(quán)限; 對(duì)于文件來(lái)說(shuō),系統(tǒng)不允許在創(chuàng)建文件時(shí)候就有可執(zhí)行權(quán)限饶套,所以一個(gè)文件的權(quán)限是666(6=4+2+0)

而文件夾是777(7=4+2+1); 如果umask值為022漩蟆,那么創(chuàng)建的新的文件 權(quán)限應(yīng)該是644; 文件夾的權(quán)限則是755 (記住:umask是從文件中拿走位的妓蛮,比如022就是拿走 0怠李,拿走2 ,拿走2 )

4蛤克、符號(hào)鏈接 ln [-s] source_path? target_path (路徑可以是目錄也可以是文件) 捺癞,多個(gè)文件可以指向一個(gè)源文件,想改變只要改一個(gè)源文件构挤,而不必每個(gè)客戶端用戶文件都改動(dòng)一遍

二髓介、find和xagrs

1、find命令

find pathname -options [-print -exec -ok] pathname表示所要查找的目錄 .表示當(dāng)前目錄筋现。/表示系統(tǒng)根目錄

-print 命令將結(jié)果打印出來(lái) 唐础。 -exec 和 -ok都是用來(lái)對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令 (-ok每次要確認(rèn),更加安全),相應(yīng)的命令形式為:'command' {} \

例: find . -type f -exec ls -al {} \;

2矾飞、-options 就是要操作的動(dòng)作? 例:find . -name "[A-Z]*" -print? ? 在當(dāng)前目錄下找到? 名字為A到Z開(kāi)頭的 所有文件(-name是按照文件名查找)

3一膨、-perm 按照文件權(quán)限找 find . -perm -755 -print

4、忽略某個(gè)目錄 比如在/apps下找文件 但是忽略/apps/bin下面的內(nèi)容 find /apps -name "/apps/bin" -prune -o -print

5洒沦、查找比某個(gè)文件新或舊的文件 find . -newer newfile ! -newer oldfile

查找比某個(gè)文件新的? find . -newer file -print (延伸:查找兩個(gè)小時(shí)前到現(xiàn)在的文件豹绪,新建一個(gè)文件file1? 9月6號(hào)14點(diǎn)(touch -t09061400 file1),時(shí)間改成兩小時(shí)前申眼,用此命令查即可)

6瞒津、使用xargs命令 :使用-exec命令每處理一個(gè)匹配到的文件都會(huì)啟一個(gè)相應(yīng)的進(jìn)程,而使用xargs 則只啟動(dòng)一個(gè)進(jìn)程

find . -type f -print |xargs file

三括尸、crontab

1巷蚪、可以通過(guò)cron.deny 和cron.allow 來(lái)禁止和允許用戶擁有自己的crontab

命令格式:分<>時(shí)<>日<>月<>星期<>要運(yùn)行的命令

第一列分:1-59 第二列小時(shí):1-23 (0為子夜) 第三列日:1-31 第四列月:1-12 第五列星期:0-6 (0表示周日) 第六列:要運(yùn)行的命令

例:30 21 * * * /apps/bin/cleanup.sh 表示每天晚上21.30 執(zhí)行cleanup.sh腳本

0 23 * * 6,0 /apps/bin/cleanup.sh 表示每周六周日的23點(diǎn) 執(zhí)行cleanup.sh腳本

0 23 1-4 * * /apps/bin/cleanup.sh 表示每個(gè)月的1-4號(hào)的23點(diǎn) 執(zhí)行cleanup.sh腳本

crontab 每隔5分鐘同步時(shí)間到服務(wù)器211.138.22.34 */5

*/5 * * * *? /usr/sbin/ntpdate 211.138.22.34 >> /data/ntpdate.log

crontab -e 編輯 -l 列出內(nèi)容不編輯 -u 用戶名 -r 刪除 如果用當(dāng)前用戶登錄crontab 則不需要-u命令

crontab -l -u alddms (顯示alddms 用戶下的ctontab 內(nèi)容)

四、文件名置換(用戶查找匹配文件名)

1濒翻、* 用于匹配文件名中任意字符串屁柏,包括空。

ls app* 列出app開(kāi)頭的所有文件 ls *.txt 列出以.txt為后綴的所有文件

2肴焊、? 用于匹配文件名中任何單個(gè)字符串

ls a?p* 列出ap中間有任意一個(gè)字符前联,p后面為任意字符的所有文件 如axpxx

3、[...] 用于匹配[]中包含的任意字符

ls log.[0-9] 列出以log.開(kāi)頭娶眷,后面是一個(gè)數(shù)字的 所有文件? 如 log.3

4似嗤、[!...]用于匹配[]中!后的任意字符

ls log.[!0-9]* 列出以log.開(kāi)頭届宠,.后面非數(shù)字開(kāi)頭的所有文件 如log.axxx

五烁落、輸入輸出

1乘粒、echo read cat 管道(|) tee cat test.log |tee -a t1.log 把test.log中內(nèi)容顯示在桌面并且輸入到t1.log中(-a表示追加輸入)

六、命令執(zhí)行順序

1伤塌、命令執(zhí)行控制

&& : 命令1 && 命令2 只有命令1成功后命令2才執(zhí)行

|| : 命令1 || 命令2 只有命令1失敗了才執(zhí)行命令2

2灯萍、命令組合

() : (命令1;命令2;命令3;...) 當(dāng)前命令在同一個(gè)shell中執(zhí)行

{} : {命令1;命令2;命令3;...} 當(dāng)前命令被放到一個(gè)子shell中執(zhí)行

七、正則表達(dá)式(RE)

1每聪、匹配行首和行尾

^ : 匹配行首

$ : 匹配行尾

匹配空行 ^$

匹配一個(gè)字符的 ^.$

* :一個(gè)單字符后緊跟*旦棉,匹配0個(gè)或者多個(gè)此單字符 如 123.txt中有 12345 12358? 123 12223 12456

使用命令 cat 123.txt|grep '1234*' 結(jié)果為12345 12358 123

[] : 匹配[]中字符,可以是單個(gè)字符药薯,也可以是字符序列绑洛,可以使用-表示序列范圍,如[1-5]替代[12345]

匹配任意字母數(shù)字 [a-zA-Z0-9]

[^a-zA-Z] 匹配任意非字母型字符

[^0-9] 匹配任意非數(shù)字型字符

\ : 用來(lái)屏蔽一個(gè)元字符的特殊含義

. : 匹配任意單字符

pattern\{n\} : 用來(lái)匹配前面pattern 出現(xiàn)的次數(shù)n

A\{2\}B 結(jié)果為AAB

pattern\{n,m\} : 用來(lái)匹配前面pattern出現(xiàn)的次數(shù)童本, 次數(shù)在n和m之間

A\{2,4\}B 結(jié)果為AAB,AAAB,AAAAB

pattern\{n,\}m : 用來(lái)匹配前面pattern出現(xiàn)的次數(shù)真屯,次數(shù)最少為n

A\{2,\}B 結(jié)果為AAB,AAAB,AAA...AB,...

2、特殊經(jīng)常用到的匹配

IP地址格式 nnn.nnn.nnn.nnn [0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 解釋:[0-9]\{3\} 就是pattern\{n\} 表示由三位數(shù)0-9組成

日期格式 dd-mm-yyyy [0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}

匹配任意字符 [^.*$]

3穷娱、fork炸彈的概念:進(jìn)程遞歸式派生(fork绑蔫,亦即自我復(fù)制),以使系統(tǒng)拒絕服務(wù)甚至崩潰

:(){ :|:& };:

注釋如下:

:() # 定義函數(shù),函數(shù)名為":",即每當(dāng)輸入":"時(shí)就會(huì)自動(dòng)調(diào)用{}內(nèi)代碼

{ # ":"函數(shù)開(kāi)始標(biāo)識(shí)

: # 用遞歸方式調(diào)用":"函數(shù)本身

| # 并用管道(pipe)將其輸出引至...

: # 另一次遞歸調(diào)用的":"函數(shù)

# 綜上,":|:"表示的即是每次調(diào)用函數(shù)":"的時(shí)候就會(huì)生成兩份拷貝

& # 調(diào)用間脫鉤,以使最初的":"函數(shù)被殺死后為其所調(diào)用的兩個(gè)":"函數(shù)還能繼續(xù)執(zhí)行

} # ":"函數(shù)結(jié)束標(biāo)識(shí)

; # ":"函數(shù)定義結(jié)束后將要進(jìn)行的操作...

: # 調(diào)用":"函數(shù),"引爆"fork炸彈

其中函數(shù)名“:”只是簡(jiǎn)化的一例泵额,實(shí)際實(shí)現(xiàn)時(shí)可以隨意設(shè)定配深,一個(gè)較易理解(將函數(shù)名替換為“forkbomb”)的版本如下:

forkbomb(){ forkbomb|forkbomb &} ; forkbomb

八、grep和正則表達(dá)式

1梯刚、grep 用法: grep [選項(xiàng)] 基本正則表達(dá)式[文件]

-c 只輸出匹配行的計(jì)數(shù)

-i 不區(qū)分大小寫(xiě)

-h 查詢多文件時(shí)不顯示文件名

-l 查詢多文件時(shí)只輸出包含匹配字符的文件名

-n 顯示匹配行及行號(hào)

-s 不顯示不存在或無(wú)匹配的錯(cuò)誤信息

-v 顯示不包含匹配文本的所有行

2凉馆、 查詢多個(gè)文件

如果在所有的doc文件中查詢sort薪寓,則應(yīng)該這么寫(xiě):grep "sort" *.doc

匹配行:在test.txt中查詢包含48的有多少行

grep -c "48" test.txt 該結(jié)果只顯示多少行

顯示查詢的結(jié)果: grep -c "48" test.txt

顯示滿足所有匹配結(jié)果的行號(hào)及內(nèi)容

grep -n "48" test.txt ? 顯示樣式 23:48xx .....

顯示非匹配行 grep -v "48"? test.txt

精確匹配 grep "48\v"? test.txt

行首不是48 grep '^[^48]' test.txt

第九章亡资、AWK

1、三種方式調(diào)用awk 第一:awk [-F 域分隔符] 'command' inputfile 這里的command是真正的awk命令向叉,[]里是可選的锥腻,不填默認(rèn)是空格分隔

例如以:分隔 awk -F: 'command' inputfile

第二:將所有awk命令寫(xiě)到一個(gè)文件中,并使awk命令可行母谎,然后用awk命令解釋器作為腳本的首行瘦黑,通過(guò)鍵入腳本名來(lái)執(zhí)行

第三:將所有awk命令插入一個(gè)文件,然后調(diào)用: awk -f awk-script-file inputfile

2奇唤、域和記錄:瀏覽域標(biāo)記為$1,$2,$3,$4,$5 這種發(fā)發(fā)稱為域標(biāo)識(shí) $0表示全部域 awk '{print $0}' test.txt |tee log.txt

awk '{print $1,$4}' test.txt

awk 'BEGIN {print "Begin \n"} {print $1} END {"end!"}'

3幸斥、NF 打印最后一列 ll | awk '{print $NF}' 打印第一列 ll | awk '{print $1}'

不打印最后一列 ll | awk 'NF--'? ? 不打印第一列? ll |awk '{$1="";print $0}'

4、NR 用于快速查域記錄個(gè)數(shù) awk '{if (NR >0 && $4~/Brown/) print $0}' grade.txt 如果域記錄大于0咬扇,且第四列匹配Brown,就打印那一行的信息

5甲葬、利用awk打印第一行: ll | awk 'NR==1' 打印最后一行:ll | awk 'END{print}' 不打印第一行和最后一行 awk 'NR>2{print p}{p=$0}' test.txt

6、

第十章懈贺、SED

1经窖、打印第N行 sed -n '2p' test.txt 打印test.txt中的第二行 最后一行 sed -n '$p' test.txt

2坡垫、打印3-5行 sed -n '3,5p' test.txt

3、匹配god這個(gè)詞并打印該行 sed -n '/god/'p test.txt

4画侣、在第四行匹配god冰悠,有該詞就打印 sed -n '4,/god/'p test.txt

5、匹配元字符$ sed -n '/\$/'p test.txt

6配乱、打印1到最后一行 sed -n '1,$p' test.txt

7溉卓、將abc替換成def sed? 's/abc/def/g' test.txt 替換并修改test.txt文本 則 sed -i 's/abc/def/g' test.txt

8、刪除最后一行搬泥、刪除1-3行 sed '$d' test.txt sed '1,3d' test.txt

windows上寫(xiě)的腳本到shell上面會(huì)有莫名其妙的問(wèn)題的诵,按照如下操作

? vi xxxx.sh?

? ? 輸入:

set ff? ? 可以查看文件是dos還是unix 如果是dos 就執(zhí)行下面的

:set ff=unix(或者:set fileformat=unix)?

? ? :wq?

或者dos2unix file -- 不一定都有dos2unix 命令

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市佑钾,隨后出現(xiàn)的幾起案子西疤,更是在濱河造成了極大的恐慌,老刑警劉巖休溶,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件代赁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兽掰,警方通過(guò)查閱死者的電腦和手機(jī)芭碍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孽尽,“玉大人窖壕,你說(shuō)我怎么就攤上這事∩寂” “怎么了瞻讽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)熏挎。 經(jīng)常有香客問(wèn)我速勇,道長(zhǎng),這世上最難降的妖魔是什么坎拐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任烦磁,我火速辦了婚禮,結(jié)果婚禮上哼勇,老公的妹妹穿的比我還像新娘都伪。我一直安慰自己,他們只是感情好积担,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布陨晶。 她就那樣靜靜地躺著,像睡著了一般磅轻。 火紅的嫁衣襯著肌膚如雪珍逸。 梳的紋絲不亂的頭發(fā)上逐虚,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音谆膳,去河邊找鬼叭爱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛漱病,可吹牛的內(nèi)容都是我干的买雾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杨帽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漓穿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起注盈,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晃危,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后老客,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體僚饭,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胧砰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳍鸵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尉间,死狀恐怖偿乖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哲嘲,我是刑警寧澤贪薪,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站撤蚊,受9級(jí)特大地震影響古掏,放射性物質(zhì)發(fā)生泄漏损话。R本人自食惡果不足惜侦啸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丧枪。 院中可真熱鬧光涂,春花似錦、人聲如沸拧烦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恋博。三九已至齐佳,卻和暖如春私恬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炼吴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工本鸣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硅蹦。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓荣德,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親童芹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涮瞻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,088評(píng)論 0 0
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本,現(xiàn)在我們來(lái)進(jìn)一...
    LiWei_9e4b閱讀 1,560評(píng)論 0 0
  • 最近在做一個(gè)作業(yè)假褪,需要篩選文檔里面的內(nèi)容署咽。在網(wǎng)上谷歌到這個(gè)函數(shù)之后發(fā)現(xiàn)簡(jiǎn)直不要太好用!介紹一下 首先生音,awk好像不...
    王宇涵_e5f1閱讀 242評(píng)論 0 0
  • 什么是運(yùn)維 術(shù)語(yǔ)名詞 IDC--(Internet Data Center)互聯(lián)網(wǎng)數(shù)據(jù)中心久锥,主要服務(wù)包括整機(jī)租用家淤、...
    lyh165閱讀 2,684評(píng)論 0 19
  • 查找目錄下的所有文件中是否含有某個(gè)字符串,并且只打印出文件名find . -name "*.type" | xar...
    水平閱讀 1,477評(píng)論 0 0