婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 學習shell腳本之前的基礎知識[圖文]

學習shell腳本之前的基礎知識[圖文]

熱門標簽:打電話機器人接我是他的秘書 如果做線上地圖標注 揭陽智能電話機器人推薦 河南信譽好的不封卡電話外呼系統(tǒng) 地圖標注員都是年輕人 華鋒e路航港口地圖標注 客服外呼系統(tǒng)怎么樣 江蘇云電銷機器人公司 百度地圖標注錯了有責任嗎

日常的linux系統(tǒng)管理工作中必不可少的就是shell腳本,如果不會寫shell腳本,那么你就不算一個合格的管理員。目前很多單位在招聘linux系統(tǒng)管理員時,shell腳本的編寫是必考的項目。有的單位甚至用shell腳本的編寫能力來衡量這個linux系統(tǒng)管理員的經驗是否豐富。筆者講這些的目的只有一個,那就是讓你認真對待shell腳本,從一開始就要把基礎知識掌握牢固,然后要不斷的練習,只要你shell腳本寫的好,相信你的linux求職路就會輕松的多。筆者在這一章中并不會多么詳細的介紹shell腳本,而只是帶你進入shell腳本的世界,如果你很感興趣那么請到網(wǎng)上下載相關的資料或者到書店購買相關書籍吧。

在學習shell 腳本之前,需要你了解很多關于shell的知識,這些知識是編寫shell腳本的基礎,所以希望你能夠熟練的掌握。

什么是shell】

簡單點理解,就是系統(tǒng)跟計算機硬件交互時使用的中間介質,它只是系統(tǒng)的一個工具。實際上,在shell和計算機硬件之間還有一層東西那就是系統(tǒng)內核了。打個比方,如果把計算機硬件比作一個人的軀體,而系統(tǒng)內核則是人的大腦,至于shell,把它比作人的五官似乎更加貼切些。回到計算機上來,用戶直接面對的不是計算機硬件而是shell,用戶把指令告訴shell,然后shell再傳輸給系統(tǒng)內核,接著內核再去支配計算機硬件去執(zhí)行各種操作。

筆者接觸的linux發(fā)布版本(Redhat/CentOS)系統(tǒng)默認安裝的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增強版本。Bourn Shell 是最早行起來的一個shell,創(chuàng)始人叫Steven Bourne,為了紀念他所以叫做Bourn Shell,檢稱sh。那么這個bash有什么特點呢?

1)記錄命令歷史

我們敲過的命令,linux是會有記錄的,預設可以記錄1000條歷史命令。這些命令保存在用戶的家目錄中的.bash_history文件中。有一點需要你知道的是,只有當用戶正常退出當前shell時,在當前shell中運行的命令才會保存至.bash_history文件中。

與命令歷史有關的有一個有意思的字符那就是”!”了。常用的有這么幾個應用:(1)!! (連續(xù)兩個”!”),表示執(zhí)行上一條指令;(2)!n(這里的n是數(shù)字),表示執(zhí)行命令歷史中第n條指令,例如”!100”表示執(zhí)行命令歷史中第100個命令;(3)!字符串(字符串大于等于1),例如!ta,表示執(zhí)行命令歷史中最近一次以ta為開頭的指令。

2)指令和文件名補全

在本教程最開始筆者就介紹過這個功能了,記得嗎?對了就是按tab鍵,它可以幫你補全一個指令,也可以幫你補全一個路徑或者一個文件名。連續(xù)按兩次tab鍵,系統(tǒng)則會把所有的指令或者文件名都列出來。

3)別名

前面也出現(xiàn)過alias的介紹,這個就是bash所特有的功能之一了。我們可以通過alias把一個常用的并且很長的指令別名一個簡潔易記的指令。如果不想用了,還可以用unalias解除別名功能。直接敲alias會看到目前系統(tǒng)預設的alias :



看到了吧,系統(tǒng)預設的alias指令也就這幾個而已,你也可以自定義你想要的指令別名。alias語法很簡單,alias [命令別名]=['具體的命令']。

4)通配符

在bash下,可以使用*來匹配零個或多個字符,而用?匹配一個字符。

5)輸入輸出從定向

輸入重定向用于改變命令的輸入,輸出重定向用于改變命令的輸出。輸出重定向更為常用,它經常用于將命令的結果輸入到文件中,而不是屏幕上。輸入重定向的命令是,輸出重定向的命令是>,另外還有錯誤重定向2>,以及追加重定向>>,稍后會詳細介紹。

6)管道符

前面已經提過過管道符”|”,就是把前面的命令運行的結果丟給后面的命令。

7)作業(yè)控制。

當運行一個進程時,你可以使它暫停(按Ctrl+z),然后使用fg命令恢復它,利用bg命令使他到后臺運行,你也可以使它終止(按Ctrl+c)。

變量

前面章節(jié)中筆者曾經介紹過環(huán)境變量PATH,這個環(huán)境變量就是shell預設的一個變量,通常shell預設的變量都是大寫的。變量,說簡單點就是使用一個較簡單的字符串來替代某些具有特殊意義的設定以及數(shù)據(jù)。就拿PATH來講,這個PATH就代替了所有常用命令的絕對路徑的設定。因為有了PATH這個變量,所以我們運行某個命令時不再去輸入全局路徑,直接敲命令名即可。你可以使用echo命令顯示變量的值。

除了PATH, HOME, LOGNAME外,系統(tǒng)預設的環(huán)境變量還有哪些呢?



使用env命令即可全部列出系統(tǒng)預設的全部系統(tǒng)變量了。不過登錄的用戶不一樣這些環(huán)境變量的值也不一樣。當前顯示的就是root這個賬戶的環(huán)境變量了。下面筆者簡單介紹一下常見的環(huán)境變量:

PATH決定了shell將到哪些目錄中尋找命令或程序

HOME當前用戶主目錄

HISTSIZE歷史記錄數(shù)

LOGNAME當前用戶的登錄名

HOSTNAME指主機的名稱

SHELL前用戶Shell類型

LANG語言相關的環(huán)境變量,多語言可以修改此環(huán)境變量

MAIL當前用戶的郵件存放目錄

PWD當前目錄

env命令顯示的變量只是環(huán)境變量,系統(tǒng)預設的變量其實還有很多,你可以使用set命令把系統(tǒng)預設的全部變量都顯示出來。

限于篇幅,筆者在上例中并沒有把所有顯示結果都截圖。set不僅可以顯示系統(tǒng)預設的變量,也可以連同用戶自定義的變量顯示出來。用戶自定義變量?是的,用戶自己同樣可以定義變量。

雖然你可以自定義變量,但是該變量只能在當前shell中生效,不信你再登錄一個shell試試?

使用bash命令即可再打開一個shell,此時先前設置的myname變量已經不存在了,退出當前shell回到原來的shell,myname變量還在。那要想設置的變量一直生效怎么辦?有兩種情況:

1) 要想系統(tǒng)內所有用戶登錄后都能使用該變量

需要在/etc/profile文件最末行加入 “export myname=Aming” 然后運行”source /etc/profile”就可以生效了。此時你再運行bash命令或者直接su - test賬戶看看。

2)只想讓當前用戶使用該變量

需要在用戶主目錄下的.bashrc文件最后一行加入“export myname=Aming” 然后運行”source .bashrc”就可以生效了。這時候再登錄test賬戶,myname變量則不會生效了。上面用的source命令的作用是,講目前設定的配置刷新,即不用注銷再登錄也能生效。

筆者在上例中使用”myname=Aming”來設置變量myname,那么在linux下設置自定義變量有哪些規(guī)則呢?

a. 設定變量的格式為”a=b”,其中a為變量名,b為變量的內容,等號兩邊不能有空格;

b. 變量名只能由英、數(shù)字以及下劃線組成,而且不能以數(shù)字開頭;

c. 當變量內容帶有特殊字符(如空格)時,需要加上單引號;

有一種情況,需要你注意,就是變量內容中本身帶有單引號,這就需要用到雙引號了。

d. 如果變量內容中需要用到其他命令運行結果則可以使用反引號;

e. 變量內容可以累加其他變量的內容,需要加雙引號;

在這里如果你不小心把雙引號加錯為單引號,將得不到你想要的結果

通過上面幾個例子也許你能看得出,單引號和雙引號的區(qū)別:用雙引號時不會取消掉里面出現(xiàn)的特殊字符的本身作用(這里的$),而使用單引號則里面的特殊字符全部失去它本身的作用。

在前面的例子中筆者多次使用了bash命令,如果在當前shell中運行bash指令后,則會進入一個新的shell,這個shell就是原來shell的子shell了,不妨你用pstree指令來查看一下。

pstree這個指令會把linux系統(tǒng)中所有進程通過樹形結構打印出來。限于篇幅筆者沒有全部列出,你可以直接輸入pstree查看即可。在父shell中設定一個變量后,進入子shell后該變量是不會生效的,如果想讓這個變量在子shell中生效則要用到export指令,筆者曾經在前面用過。

export其實就是聲明一下這個變量的意思,讓該shell的子shell也知道變量abc的值是123.如果export后面不加任何變量名,則它會聲明所有的變量。

在最后面連同我們自定義的變量都被聲明了。

前面光講如何設置變量,如果想取消某個變量怎么辦?只要輸入”unset 變量名”即可。

用unset abc后,再echo $abc則不再輸出任何內容。

系統(tǒng)環(huán)境變量與個人環(huán)境變量的配置文件

上面講了很多系統(tǒng)的變量,那么在linux系統(tǒng)中,這些變量被存到了哪里呢,為什么用戶一登陸shell就自動有了這些變量呢?

/etc/profile :這個文件預設了幾個重要的變量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。

/etc/bashrc :這個文件主要預設umask以及PS1。這個PS1就是我們在敲命令時,前面那串字符了,例如筆者的linux系統(tǒng)PS1就是 [root@localhost ~]# ,你不妨看一下PS1的值。

\u就是用戶,\h 主機名, \W 則是當前目錄,\$就是那個'#'了,如果是普通用戶則顯示為'$'

除了兩個系統(tǒng)級別的配置文件外,每個用戶的主目錄下還有幾個這樣的隱藏文件:

.bash_profile :定義了用戶的個人化路徑與環(huán)境變量的文件名稱。每個用戶都可使用該文件輸入專用于自己使用的shell信息,當用戶登錄時,該文件僅僅執(zhí)行一次。

.bashrc :該文件包含專用于你的shell的bash信息,當?shù)卿洉r以及每次打開新的shell時,該該文件被讀取。例如你可以將用戶自定義的alias或者自定義變量寫到這個文件中。

.bash_history :記錄命令歷史用的。

.bash_logout :當退出shell時,會執(zhí)行該文件。可以把一些清理的工作放到這個文件中。

 

linux shell中的特殊符號

你在學習linux的過程中,也許你已經接觸過某個特殊符號,例如”*”,它是一個通配符號,代表零個或多個字符或數(shù)字。下面筆者就說一說常用到的特殊字符。

1. * :代表零個或多個字符或數(shù)字。

test后面可以沒有任何字符,也可以有多個字符,總之有或沒有都能匹配出來。

2. ? :只代表一個任意的字符

不管是數(shù)字還是字母,只要是一個都能匹配出來。

3. # :這個符號在linux中表示注釋說明的意思,即”#”后面的內容linux忽略掉。

在命令的開頭或者中間插入”#” ,linux都會忽略掉的。這個符號在shell腳本中用的很多。

4. \ :脫意字符,將后面的特殊符號(例如”*” )還原為普通字符。

5. | :管道符,前面多次說過,它的作用在于將符號前面命令的結果丟給符號后面的命令。這里提到的后面的命令,并不是所有的命令都可以的,一般針對文檔操作的命令比較常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等,其中grep, sed, awk為正則表達式必須掌握的工具,在后續(xù)內容中詳細介紹。

6. $ :除了用于變量前面的標識符外,還有一個妙用,就是和'!'結合起來使用。

‘!$'表示上條命中中最后一個變量(也許稱為變量不合適,總之就是上條命令中最后出現(xiàn)的那個東西)例如上邊命令最后是test.txt那么在當前命令下輸入!$則代表test.txt。

1grep :過濾一個或多個字符,將會在后續(xù)內容中詳細介紹其用法。

2) cut :截取某一個字段

語法:cut -d “分隔字符” [-cf] n 這里的n是數(shù)字

-d :后面跟分隔字符,分隔字符要用雙引號括起來

-c :后面接的是第幾個字符

-f :后面接的是第幾個區(qū)塊

-d 后面跟分隔字符,這里使用冒號作為分割字符,-f 1 就是截取第一段,-f和1之間的空格可有可無。

-c 后面可以是1個數(shù)字n,也可以是一個區(qū)間n1-n2,還可以是多個數(shù)字n1,n2,n3

3) sort :用做排序

語法:sort [-t 分隔符] [-kn1,n2] [-nru] 這里的n1 n2

-t 分隔符 :作用跟cut的-d一個意思

-n :使用純數(shù)字排序

-r :反向排序

-u :去重復

-kn1,n2 :由n1區(qū)間排序到n2區(qū)間,可以只寫-kn1,即對n1字段排序

4) wc :統(tǒng)計文檔的行數(shù)、字符數(shù)、詞數(shù),常用的選項為:

-l :統(tǒng)計行數(shù)

-m :統(tǒng)計字符數(shù)

-w :統(tǒng)計詞數(shù)

5 uniq :去重復的行,筆者常用的選項只有一個:

-c :統(tǒng)計重復的行數(shù),并把行數(shù)寫在前面

有一點需要注意,在進行uniq之前,需要先用sort排序然后才能uniq,否則你將得不到你想要的,筆者上面的試驗當中已經是排序過所以省略掉那步了。

6tee :后跟文件名,類似與重定向”>”,但是比重定向多了一個功能,在把文件寫入后面所跟的文件中的同時,還顯示在屏幕上。

7tr :替換字符,常用來處理文檔中出現(xiàn)的特殊符號,如DOS文檔中出現(xiàn)的^M符號。常用的選項有兩個:

-d :刪除某個字符,-d 后面跟要刪除的字符

-s :把重復的字符去掉

最常用的就是把小寫變大寫: tr ‘[a-z]' ‘[A-Z]'

當然替換一個字符也是完全可以的。

不過替換、刪除以及去重復都是針對一個字符來講的,有一定局限性。如果是針對一個字符串就不再管用了,所以筆者建議只是簡單了解這個tr即可,以后你還會學到更多可以實現(xiàn)針對字符串操作的工具。

8split :切割文檔,常用選項:

-b :依據(jù)大小來分割文檔,單位為byte

格式如上例,后面的passwd為分割后文件名的前綴,分割后的文件名為passwdaa, passwdab, passwdac …

-l :依據(jù)行數(shù)來分割文檔

6. :分號。平時我們都是在一行中敲一個命令,然后回車就運行了,那么想在一行中運行兩個或兩個以上的命令如何呢?則需要在命令之間加一個”;”了。

7. ~ :用戶的家目錄,如果是root則是 /root ,普通用戶則是 /home/username

8. :如果想把一條命令放到后臺執(zhí)行的話,則需要加上這個符號。通常用于命令運行時間非常長的情況。

使用jobs可以查看當前shell中后臺執(zhí)行的任務。用fg可以調到前臺執(zhí)行。這里的sleep命令就是休眠的意思,后面跟數(shù)字,單位為秒,常用語循環(huán)的shell腳本中。

此時你按一下CTRL +z 使之暫停,然后再輸入bg可以再次進入后臺執(zhí)行。

如果是多任務情況下,想要把任務調到前臺執(zhí)行的話,fg后面跟任務號,任務號可以使用jobs命令得到。

9. >, >>, 2>, 2>> :前面講過重定向符號> 以及>> 分別表示取代和追加的意思,然后還有兩個符號就是這里的2> 和 2>> 分別表示錯誤重定向和錯誤追加重定向,當我們運行一個命令報錯時,報錯信息會輸出到當前的屏幕,如果想重定向到一個文本里,則要用2>或者2>>。

10. [ ] :中括號,中間為字符組合,代表中間字符中的任意一個

11. ||

在上面剛剛提到了分號,用于多條命令間的分隔符。另外還有兩個可以用于多條命令中間的特殊符號,那就是 “”和”||”。下面筆者把這幾種情況全列出:

1) command1 ; command2

2) command1 command2

3) command1 || command2

使用”;”時,不管command1是否執(zhí)行成功都會執(zhí)行command2; 使用””時,只有command1執(zhí)行成功后,command2才會執(zhí)行,否則command2不執(zhí)行;使用”||”時,command1執(zhí)行成功后command2 不執(zhí)行,否則去執(zhí)行command2,總之command1和command2總有一條命令會執(zhí)行。

您可能感興趣的文章:
  • linux shell數(shù)組深入學習理解
  • linux Shell學習筆記第一天
  • linux Shell學習筆記第三天
  • shell腳本學習與總結
  • linux Shell學習筆記第四天
  • Shell腳本編程中常用的數(shù)學運算實例
  • shell中case的用法學習筆記
  • linux Shell學習筆記第五天
  • linux Shell學習筆記最后一節(jié),溫故與知新
  • 如何短時間內學好一門語言 shell腳本語言為例

標簽:馬鞍山 許昌 巴彥淖爾 赤峰 邵陽 淘寶邀評 婁底 金昌

巨人網(wǎng)絡通訊聲明:本文標題《學習shell腳本之前的基礎知識[圖文]》,本文關鍵詞  學習,shell,腳本,之前,的,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《學習shell腳本之前的基礎知識[圖文]》相關的同類信息!
  • 本頁收集關于學習shell腳本之前的基礎知識[圖文]的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美视频三区在线播放| 国产91精品露脸国语对白| 国产精品二三区| 久久久久久黄色| 91精品国产品国语在线不卡| 欧美日本一区二区三区四区| 在线视频你懂得一区| 99在线精品视频| 99久精品国产| 91黄色小视频| 色婷婷精品大视频在线蜜桃视频| www.爱久久.com| 色婷婷久久99综合精品jk白丝| 99精品欧美一区二区三区小说 | 91原创在线视频| 91免费观看视频| 日本伦理一区二区| 8x8x8国产精品| 精品毛片乱码1区2区3区| 精品99一区二区| 中文字幕精品三区| 亚洲柠檬福利资源导航| 一区二区三区美女| 午夜久久久久久久久久一区二区| 日韩精品亚洲一区二区三区免费| 捆绑紧缚一区二区三区视频| 精品一区二区影视| 99久久久国产精品免费蜜臀| 在线观看av一区二区| 日韩免费成人网| 国产精品国产a级| 日本中文字幕一区二区有限公司| 国产精品中文欧美| 在线观看三级视频欧美| 91精品国产91热久久久做人人| 精品嫩草影院久久| 国产精品国产三级国产普通话蜜臀| 一区二区三区国产精品| 久久成人18免费观看| 色婷婷亚洲精品| 欧美日韩一级视频| 国产精品久久久久久久久久久免费看| 亚洲精品久久久久久国产精华液| 奇米影视一区二区三区小说| 东方欧美亚洲色图在线| 4438成人网| 亚洲色图制服诱惑| 国产一区二区在线看| 欧美午夜不卡在线观看免费| 国产精品视频一二三区| 国内精品国产成人| 777奇米四色成人影色区| 亚洲免费在线观看| 成人性生交大合| 精品乱码亚洲一区二区不卡| 国产精品短视频| 久久品道一品道久久精品| 精品一二三四在线| 日韩精品一区二区三区三区免费| 精品国产乱码久久久久久牛牛 | 中文字幕一区在线| 日日夜夜精品视频免费| 色综合亚洲欧洲| 国产女人aaa级久久久级| 韩国中文字幕2020精品| 91精品婷婷国产综合久久性色| 亚洲精品成人少妇| 91免费国产视频网站| 国产日产亚洲精品系列| 久久99精品网久久| 在线观看欧美精品| 中文字幕欧美国产| 国产999精品久久久久久绿帽| 亚洲欧美激情一区二区| 国产成人免费视频网站高清观看视频| 欧美一区二区视频在线观看| 亚洲女子a中天字幕| 91丨九色丨尤物| 中文字幕中文字幕一区| 91一区二区三区在线播放| 成人欧美一区二区三区在线播放| 丰满亚洲少妇av| 国产精品久久福利| 色综合久久久网| 亚洲综合色丁香婷婷六月图片| 日本精品一区二区三区四区的功能| 国产精品久久久一区麻豆最新章节| www.亚洲在线| 亚洲综合自拍偷拍| 欧美性色欧美a在线播放| 午夜精品在线视频一区| 在线视频你懂得一区| 亚洲精品成a人| 久久99精品久久只有精品| 久久久久国产一区二区三区四区 | 欧美视频在线一区| 日韩黄色小视频| 日韩一级免费观看| 国产在线一区二区综合免费视频| 日本一区二区免费在线| 91高清视频在线| 日韩av午夜在线观看| 国产欧美日韩激情| 欧美日本乱大交xxxxx| 国产在线精品一区二区夜色 | 精品国产人成亚洲区| 国产在线一区二区| 亚洲一区二区三区免费视频| 日韩精品一区二区三区视频在线观看| 成人手机电影网| 蜜臀a∨国产成人精品| 91在线视频在线| 亚洲精品成人在线| 激情深爱一区二区| 亚洲美女偷拍久久| 2欧美一区二区三区在线观看视频| 成人免费高清视频| 亚洲bt欧美bt精品| 国产精品欧美一区二区三区| 7777精品伊人久久久大香线蕉| 国产一二精品视频| 亚洲国产精品精华液网站| 欧美精品一区二区三区很污很色的 | 韩国一区二区在线观看| 亚洲国产欧美日韩另类综合| 久久久久青草大香线综合精品| 欧美三区在线视频| 成人aa视频在线观看| 久久精品国产秦先生| 亚洲高清三级视频| 亚洲成人一区二区在线观看| 成人视屏免费看| 婷婷综合另类小说色区| 日韩一区在线看| 国产精品青草久久| 国产日本亚洲高清| 2021国产精品久久精品| 欧美一级黄色片| 8x8x8国产精品| 911国产精品| 欧美疯狂性受xxxxx喷水图片| 在线一区二区三区四区五区| 99国产精品久久久久| 91在线精品秘密一区二区| 国产精品自拍一区| 国产精品一二三四五| 国产69精品久久99不卡| 国产aⅴ综合色| 国产成人夜色高潮福利影视| 国产精品香蕉一区二区三区| 国内不卡的二区三区中文字幕| 男女男精品视频| 丝袜美腿高跟呻吟高潮一区| 亚洲国产视频直播| 天堂久久久久va久久久久| 肉肉av福利一精品导航| 青青草91视频| 国产美女主播视频一区| 国产精品538一区二区在线| 国产大陆亚洲精品国产| 成人免费电影视频| 色噜噜狠狠一区二区三区果冻| 欧美亚州韩日在线看免费版国语版| 欧美性大战久久久久久久蜜臀| 欧美日韩国产bt| 精品成人a区在线观看| 久久精品夜夜夜夜久久| 中文字幕中文乱码欧美一区二区| 亚洲最新视频在线观看| 蜜臀av一区二区在线免费观看| 极品少妇一区二区| 不卡av免费在线观看| 欧洲人成人精品| 91精品婷婷国产综合久久竹菊| 欧美精品一区二区久久久| 中文字幕一区二区三区视频| 亚洲高清三级视频| 国产91色综合久久免费分享| 色播五月激情综合网| 日韩免费福利电影在线观看| 国产精品卡一卡二| 日韩国产精品久久久久久亚洲| 国模冰冰炮一区二区| 日本道在线观看一区二区| 91精品国产一区二区三区| 国产精品天美传媒| 日韩国产欧美在线播放| 成人高清视频在线| 欧美一区日韩一区| 1区2区3区欧美| 蜜臀久久99精品久久久画质超高清 | 美国精品在线观看| 成人免费黄色在线| 欧美一区二区二区| 一区二区三区蜜桃网| 国产成人在线视频网址| 91精品国产福利在线观看| 亚洲美女精品一区| 国产成人av福利| 欧美一区二区成人|