自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux Bashs Shell撰寫程序?qū)嶋H應(yīng)用介紹

運維 系統(tǒng)運維
如同在 Linux 中其他的 shell,Bourne Again SHell 不只是一個優(yōu)秀的指令行式的 shell,同時也提供 scripting 語言。Shell scripting 允許你完全利用 shell 的功能,將需要許多指令執(zhí)行的多項工作自動化。本文對Linux BASH SHELL 程式設(shè)計進行簡單介紹

如同在 Linux 中其他的 shell,Bourne Again SHell 不只是一個優(yōu)秀的指令行式的 shell,同時也提供 scripting 語言。Shell scripting 允許你完全利用 shell 的功能,將需要許多指令執(zhí)行的多項工作自動化。在你的 Linux 機器上有許多程序是 shell 程序。如果你對學(xué)習(xí)他們?nèi)绾芜\作,或修改他們感興趣,基本要素是你必須了解 bash 的語法和語意。除此之外,了解 bash 語言,你能夠撰寫你個人專屬的程序,來完成你要做的事情。

PROGRAMMING OR SCRIPTING?
對于剛開始接觸程序設(shè)計的新手,常會對于 programming 和 scripting 語言間的差異感到困惑。Programming 語言通常比 Scripting 語言功能更強大,也更快速。例如:C, C++, 和 Java 都是 Programming 語言。 Programming 語言通常是從源代碼 (一個包含最終程序如何執(zhí)行的指令集合文字檔) 開始,經(jīng)過編譯 (建立) 成為一個可執(zhí)行檔。這個可執(zhí)行檔不容易移植到不同的操作系統(tǒng)中。舉例來說,如果你曾在 Linux 上寫過 C 的程序,你將不能夠在視窗 98 系統(tǒng)上執(zhí)行這個 C 的程序。要這樣做,你必須在視窗 98 系統(tǒng)之下,重新編譯原始的程序碼。Scripting 語言也是從源代碼開始,但不需編譯成可執(zhí)行檔。而是由一個直譯器讀入源代碼檔案里的那些指令,再執(zhí)行每個指令。不幸地,直譯的程序通常比編譯的程序慢,因為直譯器必須讀入每個指令。主要的優(yōu)點是,你能輕松地轉(zhuǎn)換源代碼檔案到任何的操作系統(tǒng),并且立刻以直譯的方式執(zhí)行。bash 是一種 scripting 語言。它對撰寫小程序而言是不錯的,但如果你打算開發(fā)大型的應(yīng)用程序, programming 語言可能對你比較有益。其他的 scripting 語言有 Perl, Lisp 和 Tcl 等等。

WHAT DO YOU NEED TO KNOW? / 那些是你需要知道的?
撰寫你自己的 shell 程序,需要知道最基本的 Linux 指令。舉例來說,你應(yīng)該知道要如何拷貝,移動,產(chǎn)生新檔案等等。還有一件事你必須知道,該如何使用文書編輯程序。在 Linux 里有三個主要的文字檔編輯程序 - vi, emacs 和 pico。如果對 vi 或 emacs 并不熟悉,可用 pico 或一些其他容易使用文字檔編輯程序。

WARNING!!! / 警告!??!
別以 root 的身份來練習(xí)!任何情況都可能發(fā)生!若你在撰寫程序時發(fā)生意外的錯誤,導(dǎo)致系統(tǒng)當(dāng)?shù)?,我并不負?zé)。你已被警告過了!一定要使用沒有 root 權(quán)限的一般使用者帳戶。你甚至可以產(chǎn)生一個新的使用者,專門來練習(xí) shell 程序設(shè)計。這樣,最糟的情況只是這個使用者的目錄不見了。

YOUR FIRST BASH PROGRAM / ***個 BASH 程序
我們的***個程序會是典型的 "Hello World" 程序。不要懷疑,若你已有程序設(shè)計的經(jīng)驗,你現(xiàn)在又必須頭疼了。然而,這是傳統(tǒng),我何德何能改變傳統(tǒng)呢?"Hello World" 程序只是將 "Hello World" 這字眼列印到螢?zāi)簧?。所以趕快打開你的文字檔編輯程序,鍵入下列的內(nèi)容:

#!/bin/bash
echo "Hello World"

***行是告訴 Linux 用 bash 直譯器來執(zhí)行這個程序。在這個范例,bash 是位在 /bin 目錄下。如果在你的系統(tǒng)上, bash 是在不同的目錄,請對這行做適當(dāng)?shù)母?。另外,要特別說明的是,這個直譯器是非常重要,所以請確定目錄正確否,它告訴 Linux 哪一個直譯器用來執(zhí)行程序中的那些指令。下一步是把將程序存檔。稱它做 hello.sh 好了。完成后,你需要讓此程序可以執(zhí)行:

xconsole$ chmod 700 ./hello.sh

如果你不知道該如何更改檔案的權(quán)限,就參考 chmod 的手冊(manual page)。一旦更改完成后,你僅需輸入程序的名字,就能執(zhí)行了:

xconsole$ ./hello.sh
Hello World

就是這個光!就是這個光!你的***個程序完成了!真的就是這樣無聊,沒用,然而每個人都是這樣開始的。只需記得這個程序。撰寫程序碼,存成檔案,再用 chmod 讓它可執(zhí)行。

COMMANDS, COMMANDS, COMMANDS / 指令,指令,指令
你的***個程序要做什么呢?列印 "Hello World" 這兩個字到螢?zāi)簧?。但要怎樣做呢?使用指令。在程序中寫?**一行程序碼是 echo "Hello World"。好吧,那一個是指令? echo。echo 程序帶有一個參數(shù),并將此參數(shù)列印到螢?zāi)弧?br />
所謂參數(shù)是指在你所鍵入的程序名稱之后的任何東西。在這個案例中,"Hello World" 是參數(shù),它傳進 echo 指令中。若你輸入這樣的指令 ls /home/root ,那么對 ls 而言, /home/root 是參數(shù)。就竟這代表什么呢?代表如果你有一支程序,可將參數(shù)列印到螢?zāi)簧希憔筒恍枋褂?echo 程序。我們假定有支稱為 foo 的程序,能傳入一個參數(shù),一個字串,并且將其列印到螢?zāi)簧?。我們能同樣地重寫我們的程序?

#!/bin/bash
foo "Hello World"

把它存檔及更改存取模式(chmod),然后執(zhí)行:

xconsole$ ./hello
Hello World

結(jié)果完全一樣。究竟有***的程序碼嗎?沒有。你真的能寫任何程序?除非你是 echo 程序的作者。你所做的,是將 echo 程序放在你的 shell 程序內(nèi),并給一個參數(shù)。在現(xiàn)實的世界中,例子中 echo 指令的另一選擇是 printf 指令。printf 提供比較多的控制,如果你熟悉 C 語言的程序設(shè)計就會明了。事實上,要得到完全相同的結(jié)果不必寫一個 shell 程序:

xconsole$ echo "Hello World"
Hello World

bash shell 程序設(shè)計提供了多樣的控制方式,而且容易學(xué)習(xí)。就如你剛看到一樣,你用 Linux 指令來寫你的 shell 程序了。你的 shell 程序是將其他的程序聚集在一起,來執(zhí)行特定的任務(wù)。

A MORE USEFUL PROGRAM / 更有用的程序
我們將撰寫一個程序,功能是移動所有的檔案到一個目錄內(nèi),然后刪除此目錄及其內(nèi)容,然后再產(chǎn)生此目錄。這可由下列的指令來完成:

xconsole$ mkdir trash
xconsole$ mv * trash
xconsole$ rm -rf trash
xconsole$ mkdir trash

不需在交談式的 shell 上敲進所有指令,改用撰寫個 shell 程序:

#!/bin/bash
mkdir trash
mv * trash
rm -rf trash
mkdir trash
echo "Deleted all files!"

把它以 clean.sh 存檔,現(xiàn)在你所要做的是執(zhí)行 clean.sh,它會移動所有的檔案到一個目錄,刪除他們,再產(chǎn)生目錄,而且列印一個訊息告訴你,它已成功地刪除所有的檔案。所以記得,如果你發(fā)現(xiàn)要做的某些事,要一而再,再而做三地做下去,考慮用個 shell 程序來自動執(zhí)行。

COMMENTS / 注解
注解可讓你的程序更容易明了,這樣并不影響程序的輸出結(jié)果。目的就是來特別幫你明了程序。所有在 bash 里的注解,***個字元都是用井字符號 (hash symbol):"#",除了***個行 (#!/bin/bash) 外。 ***行并不是注解。在***行之后,其馀以 "#" 開始的任何一行都是注解??聪铝械某绦蚱危?

#!/bin/bash
# 這個程序從 1 記錄到 10:
for i in 1 2 3 4 5 6 7 8 9 10; do
echo $i
done

即使你不知道 bash 的程序設(shè)計,因為注解的關(guān)系,也能立刻知道上述的程序在做什么事。使用注解是很好的習(xí)慣。你將發(fā)現(xiàn)若未來需要維護你的程序,有注解會比較容易。

【編輯推薦】

  1. Linux Bash命令關(guān)于程序調(diào)試詳解 
  2. Linux Bash命令關(guān)于快捷鍵應(yīng)用
  3. Linux Bash Shell系統(tǒng)的應(yīng)用詳解
  4. Linux Bash具體安裝步驟及使用介紹
  5. Linux Bash命令查詢相關(guān)事件詳解
責(zé)任編輯:chenqingxiang 來源: linux寶庫
相關(guān)推薦

2009-12-18 10:58:17

Linux應(yīng)用程序

2010-04-09 16:26:53

Oracle join

2010-06-23 17:16:33

Linux Bash

2009-12-14 18:09:32

路由選擇協(xié)議

2010-04-27 09:28:55

綁定變量

2010-04-21 12:35:01

Oracle導(dǎo)入

2010-05-24 09:24:15

MySQL 備份

2010-06-24 14:08:25

Linux Cat命令

2010-06-23 16:31:10

Linux Bash

2023-07-27 17:41:02

BashZshFish

2010-01-07 18:17:00

VB.NET連接SAP

2010-03-29 11:31:45

2010-03-19 14:59:00

python Stri

2010-06-23 16:05:36

Linux Bash

2010-04-15 09:36:42

2010-04-23 11:15:43

Oracle創(chuàng)建

2010-03-17 15:58:08

Python環(huán)境

2010-06-23 15:55:36

Linux Bash

2010-03-23 15:52:41

Linux shell

2023-10-31 16:17:42

點贊
收藏

51CTO技術(shù)棧公眾號