關(guān)于shell腳本的正確入門姿態(tài)

.這兩天工作無(wú)事,搗鼓齊了linux系統(tǒng),對(duì)于簡(jiǎn)單的操作那個(gè)ok的,但從未接觸過(guò)shell腳本,這篇文章便是記錄一個(gè)如何入門shell,又在簡(jiǎn)歷上又多了一項(xiàng)技能啦 ~

1.什么是shell?

????說(shuō)到命令行,我們真正指的是 shell。shell 就是一個(gè)程序,它接受從鍵盤輸入的命令, 然后把命令傳遞給操作系統(tǒng)去執(zhí)行。幾乎所有的 Linux 發(fā)行版都提供一個(gè)名為 bash 的 來(lái)自 GNU 項(xiàng)目的 shell 程序。
“bash” 是 “Bourne Again SHell” 的首字母縮寫, 所指的是這樣一個(gè)事實(shí),bash 是最初 Unix 上由 Steve Bourne 寫成 shell 程序 sh 的增強(qiáng)版。

這是一篇關(guān)于在計(jì)算機(jī)領(lǐng)域里,shells 概念的文章 : http://en.wikipedia.org/wiki/Shell_(computing)

2.推薦一下常用的工具

1.xshell ---ssh服務(wù)器客戶端 配合XFTP使用 用于部署服務(wù)器。 需要對(duì)linux命令要有一定了解。新手推薦寶塔面板方便快捷。

3.開始編寫一個(gè)簡(jiǎn)單的shell

什么是shell腳本:最簡(jiǎn)單的解釋,一個(gè) shell 腳本就是一個(gè)包含一系列命令的文件。shell 讀取這個(gè)文件,然后執(zhí)行 文件中的所有命令,就好像這些命令已經(jīng)直接被輸入到了命令行中一樣。
Shell 有些獨(dú)特,因?yàn)樗粌H是一個(gè)功能強(qiáng)大的命令行接口,也是一個(gè)腳本語(yǔ)言解釋器。我們將會(huì)看到, 大多數(shù)能夠在命令行中完成的任務(wù)也能夠用腳本來(lái)實(shí)現(xiàn),同樣地,大多數(shù)能用腳本實(shí)現(xiàn)的操作也能夠 在命令行中完成。

1.編寫一個(gè)腳本。 Shell 腳本就是普通的文本文件。所以我們需要一個(gè)文本編輯器來(lái)書寫它們。最好的文本 編輯器都會(huì)支持語(yǔ)法高亮,這樣我們就能夠看到一個(gè)腳本關(guān)鍵字的彩色編碼視圖。語(yǔ)法高亮?xí)椭覀儾榭茨撤N常見(jiàn) 錯(cuò)誤。為了編寫腳本文件,vim,gedit,kate,和許多其它編輯器都是不錯(cuò)的候選者。

2.使腳本文件可執(zhí)行。 系統(tǒng)會(huì)相當(dāng)挑剔不允許任何舊的文本文件被看作是一個(gè)程序,并且有充分的理由! 所以我們需要設(shè)置腳本文件的權(quán)限來(lái)允許其可執(zhí)行。

3.把腳本放置到 shell 能夠找到的地方。 當(dāng)沒(méi)有指定可執(zhí)行文件明確的路徑名時(shí),shell 會(huì)自動(dòng)地搜索某些目錄, 來(lái)查找此可執(zhí)行文件。為了最大程度的方便,我們會(huì)把腳本放到這些目錄當(dāng)中。

#vim 打開文件編輯器
#腳本文件格式 書寫一個(gè)hello world 
#!/bin/bash
# This is our first script.
echo 'Hello World!'
image.png
1.步驟如下
ls //查看目錄文件信息
touch hello_world  //創(chuàng)建腳本文件
vim hellow_world //打來(lái)腳本文件 
i 可編輯 Esc 只讀模式 shift+:    q退出  wq保存并退出  wq!強(qiáng)制保存   / 輸入 Enter 全文搜索 
//輸入
------
#!/bin/bash
# This is our first script.
echo 'Hello World!'

------
wq!保存退出
ls -l hello_world //查看目錄權(quán)限
chomd 755 hello_world //賦予可讀權(quán)限
echo $PATH  //查看系統(tǒng)命令執(zhí)行目錄 PATH 變量
mv hello_world bin //移動(dòng)文件到目錄并創(chuàng)建目錄
hello_world //執(zhí)行腳本

4.創(chuàng)建并啟動(dòng)一個(gè)項(xiàng)目

我們將建設(shè)一個(gè)項(xiàng)目。這個(gè)項(xiàng)目的目的是為了了解怎樣使用各種各樣的 shell 功能來(lái) 創(chuàng)建程序,更重要的是,創(chuàng)建好程序。

1.首先我們需要知道的事是一個(gè)規(guī)則的 HTML 文檔的格式。它看起來(lái)像這樣:

<HTML>
      <HEAD>
            <TITLE>Page Title</TITLE>
      </HEAD>
      <BODY>
            Page body.
      </BODY>
</HTML>

2.如果我們將這些內(nèi)容輸入到文本編輯器中,并把文件保存為 foo.html,然后我們就能在 Firefox 中 使用下面的 URL 來(lái)查看文件內(nèi)容:

[root@~]$ file:///home/username/foo.html

3.程序的第一個(gè)階段將這個(gè) HTML 文件輸出到標(biāo)準(zhǔn)輸出。我們可以編寫一個(gè)程序,相當(dāng)容易地完成這個(gè)任務(wù)。 啟動(dòng)我們的文本編輯器,然后創(chuàng)建一個(gè)名為 ~/bin/sys_info_page 的新文件:

[root@~]$ vim ~/bin/sys_info_page

4.隨后輸入程序:

#!/bin/bash
# Program to output a system information page
echo "<HTML>"
echo "      <HEAD>"
echo "            <TITLE>Page Title</TITLE>"
echo "      </HEAD>"
echo "      <BODY>"
echo "            Page body."
echo "      </BODY>"
echo "</HTML>"

5.我們第一次嘗試解決這個(gè)問(wèn)題,程序包含了一個(gè) shebang,一條注釋(總是一個(gè)好主意)和一系列的 echo 命令,每個(gè)命令負(fù)責(zé)輸出一行文本。保存文件之后,我們將讓它成為可執(zhí)行文件,再嘗試運(yùn)行它:

[root@~]$ chmod 755 ~/bin/sys_info_page
[root@~]$ sys_info_page

5.當(dāng)程序運(yùn)行的時(shí)候,我們應(yīng)該看到 HTML 文本在屏幕上顯示出來(lái),因?yàn)槟_本中的 echo 命令會(huì)將輸出 發(fā)送到標(biāo)準(zhǔn)輸出。我們?cè)俅芜\(yùn)行這個(gè)程序,把程序的輸出重定向到文件 sys_info_page.html 中, 從而我們可以通過(guò)網(wǎng)絡(luò)瀏覽器來(lái)查看輸出結(jié)果:

[root@~]$ sys_info_page > sys_info_page.html
[root@~]$ firefox sys_info_page.html

5.流程控制:if while/until

通過(guò)兩段代碼了解一下

X=5
If X = 5, then:
Say “X equals 5.”
Otherwise:
Say “X is not equal to 5.”
#!/bin/bash
# test-file: Evaluate the status of a file
FILE=~/.bashrc
if [ -e "$FILE" ]; then
    if [ -f "$FILE" ]; then
        echo "$FILE is a regular file."
    fi
    if [ -d "$FILE" ]; then
        echo "$FILE is a directory."
    fi
    if [ -r "$FILE" ]; then
        echo "$FILE is readable."
    fi
    if [ -w "$FILE" ]; then
        echo "$FILE is writable."
    fi
    if [ -x "$FILE" ]; then
        echo "$FILE is executable/searchable."
    fi
else
    echo "$FILE does not exist"
    exit 1
fi
exit

這個(gè)腳本會(huì)計(jì)算賦值給常量 FILE 的文件,并顯示計(jì)算結(jié)果。對(duì)于此腳本有兩點(diǎn)需要注意。第一個(gè), 在表達(dá)式中參數(shù)FILE是怎樣被引用的。引號(hào)并不是必需的,但這是為了防范空參數(shù)。如果FILE的參數(shù)展開 是一個(gè)空值,就會(huì)導(dǎo)致一個(gè)錯(cuò)誤(操作符將會(huì)被解釋為非空的字符串而不是操作符)。用引號(hào)把參數(shù)引起來(lái)就 確保了操作符之后總是跟隨著一個(gè)字符串,即使字符串為空。第二個(gè),注意腳本末尾的 exit 命令。 這個(gè) exit 命令接受一個(gè)單獨(dú)的,可選的參數(shù),其成為腳本的退出狀態(tài)。當(dāng)不傳遞參數(shù)時(shí),退出狀態(tài)默認(rèn)為零。 以這種方式使用 exit 命令,則允許此腳本提示失敗如果 $FILE 展開成一個(gè)不存在的文件名。這個(gè) exit 命令 出現(xiàn)在腳本中的最后一行,是一個(gè)當(dāng)一個(gè)腳本“運(yùn)行到最后”(到達(dá)文件末尾),不管怎樣, 默認(rèn)情況下它以退出狀態(tài)零終止。

#!/bin/bash
# while-count: display a series of numbers
count=1
while [ $count -le 5 ]; do
    echo $count
    count=$((count + 1))
done
echo "Finished."

7.詳情了解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容