一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SHELL編程入門簡(jiǎn)介

 丹楓無(wú)跡 2022-11-20 發(fā)布于北京

一、SHELL軟件概念和應(yīng)用場(chǎng)景


 1) 學(xué)習(xí)Linux技術(shù),不是為了學(xué)習(xí)系統(tǒng)安裝、命令操作、用戶權(quán)限、配置IP、網(wǎng)絡(luò)管理,學(xué)習(xí)Linux技術(shù)重點(diǎn):基于Linux系統(tǒng)部署和維護(hù)各種應(yīng)用軟件、程序(Apache、MYSQL、Redis、PHP、Nginx、Tomcat等);

2) 學(xué)習(xí)Linux技術(shù),如果不懂SHELL編程,可以說(shuō)不懂Linux,要想實(shí)現(xiàn)月薪過萬(wàn),SHELL編程技能是運(yùn)維人員必備的,那么SHELL編程到底是什么呢?

3) 通過Xshell和CRT遠(yuǎn)程連接Linux操作系統(tǒng),默認(rèn)會(huì)登陸到命令行終端,命令行終端提示符#、$,為什么要登陸命令行呢?其實(shí)可以直接登陸圖形界面,最終用戶是為了什么?為了能夠控制和管理操作系統(tǒng)。

4) 而Linux操作系統(tǒng)核心是Linux內(nèi)核(數(shù)以萬(wàn)計(jì)的代碼組成的),默認(rèn)用戶是不能直接操作Linux內(nèi)核的,借助第三方的工具:命令行、圖形界面UI,默認(rèn)登陸到Linux命令行終端,也稱為SHELL命令行終端;

5) 用戶基于SHELL命令行終端,可以輸入各種Linux指令,當(dāng)我們?cè)赟HELL命令行終端輸入df –h命令按下Enter鍵時(shí),Linux指令傳遞給SHELL(軟件程序),經(jīng)過SHELL解析,并且將解析之后內(nèi)容傳遞給Linux內(nèi)核,Linux內(nèi)核接收以后會(huì)處理,處理完畢之后會(huì)將數(shù)據(jù)內(nèi)容返回給SHELL,由SHELL經(jīng)過解析最

終返回給用戶終端;

6) 通常將SHELL稱為L(zhǎng)inux內(nèi)核的外殼,用于連接用戶和Linux內(nèi)核之間橋梁,將SHELL稱為中間件,SHELL外殼程序有很多種類和版本,查看Linux操作系統(tǒng)SHELL類型和SHELL版本:

#查看Linux默認(rèn)的SHELL種類;

echo $SHELL

#查看默認(rèn)的SHELL種類版本;

/bin/bash --version

7) SHELL和SHELL編程概念有什么區(qū)別呢?

  • SHELL和SHELL編程是兩個(gè)不同的概念,SHELL是用戶和Linux內(nèi)核之間溝通橋梁,而SHELL編程主要是基于SHELL解釋器去編寫各種指令或者代碼;
  • SHELL編程一定要有SHELL(SHELL解釋器),SHELL解釋器是SHELL編程的基石,沒有SHELL就沒有SHELL編程;

8) SHELL編程的核心思想?

SHELL編程是將Linux單個(gè)指令或者多個(gè)指令按照一定的邏輯關(guān)系和順序堆積在文本文件(腳本文件)中,文本文件中的指令會(huì)通過SHELL解釋器去解析,最終實(shí)現(xiàn)某個(gè)具體的功能和需求;

9) SHELL編程的產(chǎn)物是SHELL腳本文件(以.sh結(jié)尾命名的),而SHELL腳本文件是由單個(gè)命令或者多個(gè)命令堆積而成的,SHELL腳本中命令會(huì)通過SHELL解釋器去解析和執(zhí)行;

10) SHELL編程的意義和用途?

  • 可以將手工重復(fù)的操作寫入腳本文件,下次操作變得簡(jiǎn)單、快捷;
  • 可以將繁雜的工作任務(wù)變成簡(jiǎn)單化、自動(dòng)化的操作流程;
  • 可以減輕運(yùn)維人的工作量,提高運(yùn)維人員的工作效率;
  • 可以加快企業(yè)自動(dòng)化運(yùn)維的進(jìn)程和腳步;
11)Linux Shell種類非常多,常見的SHELL如下:
  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
 
shell和shell編程的區(qū)別
  • 不同的Shell語(yǔ)言的語(yǔ)法有所不同,一般不能交換使用,最常用的shell是Bash,也就是Bourne Again Shell。Bash由于易用和免費(fèi),在日常工作中被廣泛使用,也是大多數(shù)Linux操作系統(tǒng)默認(rèn)的Shell環(huán)境。
  • Shell、Shell編程、Shell腳本、Shell命令之前都有什么區(qū)別呢?簡(jiǎn)單來(lái)說(shuō)Shell是一個(gè)整體的概念,Shell編程與Shell腳本統(tǒng)稱為Shell編程,Shell命令是Shell編程底層具體的語(yǔ)句和實(shí)現(xiàn)方法。

 


二、SHELL腳本及Hello World


要熟練掌握Shell編程語(yǔ)言,需要大量的練習(xí),初學(xué)者可以用Shell打印“Hello World”字符,寓意著開始新的啟程!

Shell腳本編程需要如下幾個(gè)事項(xiàng):
  • Shell腳本名稱命名一般為英文、大寫、小寫;
  • 不能使用特殊符號(hào)、空格來(lái)命名;
  • Shell腳本后綴以.sh結(jié)尾;
  • 不建議Shell命名為純數(shù)字,一般以腳本功能命名。
  • Shell腳本內(nèi)容首行需以#!/bin/bash開頭;
  • Shell腳本中變量名稱盡量使用大寫字母,字母間不能使用“-”,可以使用“_”;
  • Shell腳本變量名稱不能以數(shù)字、特殊符號(hào)開頭。
如下為第一個(gè)Shell編程腳本,腳本名稱為:first_shell.sh,代碼內(nèi)容如下:
#!/bin/bash
#This is my First shell
#By author jfedu.net 2017
echo  “ Hello  World ”
First_shell.sh腳本內(nèi)容詳解如下:

#!/bin/bash                   # 固定格式,定義該腳本所使用的Shell類型;
#This is my First shell       #號(hào)表示注釋,沒有任何的意義,SHELL不會(huì)解析它;
#By author jfedu.net 2017     #表示腳本創(chuàng)建人,#號(hào)表示注解;
echo  “Hello  World !”      #Shell腳本主命令,執(zhí)行該腳本呈現(xiàn)的內(nèi)容。
1、Shell腳本編寫完畢,如果運(yùn)行該腳本,運(yùn)行用戶需要有執(zhí)行權(quán)限,可以使用chmod o+x first_shell.sh賦予可執(zhí)行權(quán)限。
2、然后./first_shell.sh執(zhí)行即可,還可以直接使用命令執(zhí)行: /bin/sh first_shell.sh直接運(yùn)行腳本,不需要執(zhí)行權(quán)限,最終腳本執(zhí)行顯示效果一樣。
3、初學(xué)者學(xué)習(xí)Shell編程,可以將在Shell終端運(yùn)行的各種命令依次寫入到腳本內(nèi)容中,可以把Shell腳本當(dāng)成是Shell命令的堆積。

 


 三、Shell編程之變量詳解


   Shell編程是非類型的解釋型語(yǔ)言,不像C++、JAVA語(yǔ)言編程時(shí)需要事先聲明變量,Shell給一個(gè)變量賦值,實(shí)際上就是定義了變量,在Linux支持的所有shell中,都可以用賦值符號(hào)(=)為變量賦值,Shell變量為弱類型,定義變量不需要聲明類型,但在使用時(shí)需要明確變量的類型,可以使用Declare指定類型,Declare常見參數(shù)有:

+/-  "-"可用來(lái)指定變量的屬性,"+"為取消變量所設(shè)的屬性;
-f  僅顯示函數(shù);
r  將變量設(shè)置為只讀;
x  指定的變量會(huì)成為環(huán)境變量,可供shell以外的程序來(lái)使用;
i  指定類型為數(shù)值,字符串或運(yùn)算式。

  Shell編程中變量分為三種,分別是系統(tǒng)變量、環(huán)境變量和用戶變量,其中系統(tǒng)變量在對(duì)參數(shù)判斷和命令返回值判斷時(shí)使用,而環(huán)境變量則主要是在程序運(yùn)行時(shí)需要設(shè)置,用戶變量又稱為局部變量,多使用在Shell腳本內(nèi)部或者臨時(shí)局部使用。

  Shell變量名在定義時(shí),首個(gè)字符必須為字母(a-z,A-Z),不能以數(shù)字開頭,中間不能有空格,可以使用下劃線(_),不能使用(-),也不能使用標(biāo)點(diǎn)符號(hào)等。
  例如定義變量A=jfedu.net,定義這樣一個(gè)變量,A為變量名,jfedu.net是變量的值,變量名有格式規(guī)范,變量的值可以隨意指定。變量定義完成,如需要引用變量,可以使用$A。
  如下腳本var.sh腳本內(nèi)容如下:
#!/bin/bash
#By author jfedu.net 2017
A=123
echo  “Printf variables is $A.”
執(zhí)行該Shell腳本,結(jié)果將會(huì)顯示:Printf variables is jfedu.net。Shell常見的系統(tǒng)變量、環(huán)境變量、用戶變量詳解如下:
1)SHELL編程常見系統(tǒng)變量
$0                                當(dāng)前腳本的名稱;
$n                                當(dāng)前腳本的第n個(gè)參數(shù),n=1,2,…9;
$*                                當(dāng)前腳本的所有參數(shù)(不包括程序本身);
$#                                當(dāng)前腳本的參數(shù)個(gè)數(shù)(不包括程序本身);
$?                                命令或程序執(zhí)行完后的狀態(tài),返回0表示執(zhí)行成功;
$$                                程序本身的PID號(hào)。

2)SHELL編程常見環(huán)境變量
PATH                              命令所示路徑,以冒號(hào)為分割;
HOME                              打印用戶家目錄;
SHELL                             顯示當(dāng)前Shell類型;
USER                              打印當(dāng)前用戶名;
ID                                打印當(dāng)前用戶id信息;
PWD                               顯示當(dāng)前所在路徑;
TERM                              打印當(dāng)前終端類型;
HOSTNAME                          顯示當(dāng)前主機(jī)名。

3)SHELL編程用戶變量
A=jfedu.net                       自定義變量A;
N_SOFT=nginx-1.12.0.tar.gz         自定義變量N_SOFT;
BACK_DIR=/data/backup/              自定義變量BACK_DIR;
IP1=192.168.1.11                  自定義變量IP1;
IP2=192.168.1.12                  自定義變量IP2。

創(chuàng)建Echo打印菜單Shell腳本,腳本代碼如下:
#!/bin/bash
#auto install httpd 
#By author jfedu.net 2017
echo -e '\033[32m-----------------------------\033[0m'
FILE=httpd-2.2.31.tar.bz2
URL=http://mirrors.cnnic.cn/apache/httpd/
PREFIX=/usr/local/apache2/
echo -e "\033[36mPlease Select Install Menu:\033[0m"
echo
echo "1)官方下載Httpd文件包."
echo "2)解壓apache源碼包."
echo "3)編譯安裝Httpd服務(wù)器."
echo "4)啟動(dòng)HTTPD服務(wù)器."
echo -e '\033[32m-----------------------------\033[0m'
sleep 20
  運(yùn)行腳本,執(zhí)行結(jié)果如圖17-2所示:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本乱论一区二区三区| 精品一区二区三区乱码中文| 日本欧美三级中文字幕| 人妻内射在线二区一区| 日本女优一色一伦一区二区三区 | 亚洲欧美日本国产不卡| 最新午夜福利视频偷拍| 国产又粗又黄又爽又硬的| 色好吊视频这里只有精| 中文字幕亚洲精品乱码加勒比| 成人区人妻精品一区二区三区| 日本av在线不卡一区| 91日韩欧美中文字幕| 国产精品不卡一区二区三区四区| 欧美成人欧美一级乱黄| 国产91色综合久久高清| 五月激情婷婷丁香六月网| 亚洲国产日韩欧美三级| 国产91色综合久久高清| 美女被后入福利在线观看| 国产免费操美女逼视频| 久久亚洲午夜精品毛片| 色播五月激情五月婷婷| 欧美一级片日韩一级片| 91亚洲国产—区=区a| 午夜精品黄片在线播放| 日韩不卡一区二区在线| 欧美久久一区二区精品| 老司机精品一区二区三区| 国产不卡最新在线视频| 日韩在线视频精品中文字幕| 欧美一区日韩二区亚洲三区| 五月婷婷六月丁香狠狠| 亚洲精品小视频在线观看| 日本一区二区三区久久娇喘| 青青操成人免费在线视频| 欧美精品一区久久精品| 99久只有精品免费视频播放| 国产乱人伦精品一区二区三区四区| 亚洲一区二区三区中文久久| 大香蕉网国产在线观看av|