利用shell程式設計實現DOS風格的Linux命令列

2022-09-26 17:51:13 字數 1661 閱讀 7031

如果你是習慣於windows命令提示符的it人,當你第一次使用linux命令行時,一定會感到無所適從。你所熟悉的dos命令再linux中基本不存在。擺在你面前的是一大堆要記背的命令。

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

shell指令碼編寫基礎

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

#!/bin/sh

youggfwqoxysdr commands here

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

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

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

#!/bin/ggfwqoxysdsh

cp file1 file2

mv file2 file3

echo "complete" > ggfwqoxysdcomplete.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命令選項在執行某一檔案之前檢查它是否存在。

本文標題: 利用shell程式設計實現dos風格的linux命令列

本文位址:

利用DOS命令實現檔案合併隱藏秘密

比如你有一段私人資訊要隱藏起來,請先錄入並儲存為文字檔案,假設儲存為001.txt。另找乙個非文字檔案,最好為檔案或可執行檔案。以檔案為例,假設它的檔名為002.jpg。如果把它們都放到d盤根目錄下,那麼在windows的ms dos方式下執行以下命令 其中引數 b指定以二進位制格式複製 合併檔案 ...

利用管道實現Shell多程序

shell中有個 表示該程式在後台執行,其實是fork了乙個子程序,跟系統呼叫是一樣的。在實際的操作過程中,有時需要控制後台程式的個數,畢竟啟動太多的後台,會對服務的效能造成影響。所以需要控制後台程式的個數。在shell中,可以利用管道技術來實現,如下是程式的模板及其注釋,有需要人可以拿去。bin ...

shell程式設計例項 實現累加

until的基礎結構是 until 條件 do logic done 我實現的 如下所示 sum 0 n 3 in 0 until n 0 do read in sum expr sum in n expr n 1 done echo sum 使用for迴圈,for迴圈的基礎結構是 for 條件 d...