利用shell編程實現DOS風格的Linux命令列

來源:互聯網
上載者:User

如果你是習慣於Windows命令提示字元的IT人,當你第一次使用Linux命令列時,一定會感到無所適從。你所熟悉的DOS命令再Linux中基本不存在。擺在你面前的是一大堆要記背的命令。

一種替代方案是利用強大的Linux外殼命令編寫shell指令碼,讓你在Linux下也能用DOS命令。下面告訴你怎麼做。

shell指令碼編寫基礎
從定時備份到執行簡單命令,Linux的shell指令碼可以執行各種功能。幾乎所有的程式都可以用shell指令碼來運行。在指令碼中甚至可以包含一些簡單的條件選擇。shell指令碼的基本格式如下:

#!/bin/sh

...

Your commands here

...

注意檔案以#!/bin/sh開始。這條語句告訴作業系統用來解釋指令碼的程式位置。大多數系統會有/bin/sh目錄,因為該目錄包含root使用者的標準shell程式。在大部分系統中你也可以指定/bin/bash目錄。

每種shell的指令碼都有所不同。一些shell,比如bash,支援比標準shell更多的命令。在大多數Linux版本中sh實際上就是bash。

從指令碼運行命令十分簡單,很像在Windows DOS提示符下運行命令。舉個例子,通過下面這段語句可以拷貝檔案:

#!/bin/sh

cp file1 file2

mv file2 file3

echo "complete" > complete.txt

自動執行命令對那些不需人工幹預的任務很有用,但對一般使用者來說並不那麼有用。為此,shell指令碼在執行過程中允許使用者輸入命令列參數,然後利用輸入的參數運行命令。指令碼中輸入參數用$1到$9表示。如果你曾寫過DOS批次檔,你會發現批次檔中也有類似功能,只是它用的是%1、%2等來代表輸入參數。下面舉例來說怎樣使用命令列參數:

#!/bin/sh

cp $1 $2

上段指令碼接受2個命令列參數,第一個是要拷貝的原檔案,第二個是拷貝的目標檔案。運行指令碼的命令格式是:./myscript file1 file2,myscript代表指令檔名。命令列選項也可以通過這種方式傳遞,如:

#!/bin/sh

cp $1 $2 $3

鍵入./copy –r sourcedir destdir形式的命令執行上段指令碼,即可遞迴拷貝$2目錄下所有檔案到$3目錄下。選項$1為-r時能讓cp命令遞迴拷貝所有檔案。

含條件選擇的shell指令碼
對於不含變數的任務簡單shell指令碼一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell指令碼編程支援此類運算,包括比較運算、判斷檔案是否存在等。基本的if條件命令選項有:

-eq —比較兩個參數是否相等(例如,if [ 2 –eq 5 ])
-ne —比較兩個參數是否不相等
-lt —參數1是否小於參數2
-le —參數1是否小於等於參數2
-gt —參數1是否大於參數2
-ge —參數1是否大於等於參數2
-f — 檢查某檔案是否存在(例如,if [ -f "filename" ])
-d — 檢查目錄是否存在
幾乎所有的判斷都可以用這些比較子實現。指令碼中常用-f命令選項在執行某一檔案之前檢查它是否存在。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.