如何在Linux環境類比DOS命令
來源:互聯網
上載者:User
關鍵字
腳本
可以
檢查
是否
運行
你可以利用Linux固有的command shell的靈活性,創建指令碼語言,説明你在Linux環境中類比DOS命令。 具體做法如下。
如果你是一位IT支援專家,你對於Windows的命令操作非常喜歡,在你第一次使用Linux的命令列的時候,你可能很快就會發現自己被搞糊塗了。 長期以來你所熟悉的DOS命令在Linux中不存在了。 所以你會發現,自己面臨著一項可怕的任務:重新學習並熟悉一整套新的命令。
作為另一個選擇,你可以利用Linux command shell固有的靈活性,創建腳本,説明你在Linux環境中類比DOS命令。 具體做法如下。
shell scripting的基礎
Linux的shell scripting 是一種自動完成多種類型任務的方法,從夜間備份到簡單的命令列應用。 幾乎任何程式都可以通過shell script完成。 你甚至可以在腳本內部完成簡單的條件檢查。 shell script的基本格式如下:
#!/bin/sh
...
這裡是你的命令
...
注意檔是以#!/bin/sh開始的。 這把作業系統指向解釋腳本的程式。 絕大部分系統有/bing/sh,因為這是根HTTP://www.aliyun.com/zixun/aggregation/6579.html">使用者使用的標準shell。 你可以在絕大部分系統中使用/bing/bash。
重要的是瞭解每個shell之間的腳本差別。 一些殼,比如bash,比標準shell支援更多的命令。 對於絕大部分Linux版本,sh事實上是bash。
從一個腳本運行命令非常簡單。 就好象在Windows系統中運行DOS。 比如,你可以這樣複製檔:
#!/bin/sh
cp file1 file2
mv file2 file3
echo "complete" > complete.txt
能夠不需要交互就完成一個命令對於自動運行的任務來說非常有用,但是對於使用者來說卻不是那麼有説明了。 shell 還為向一個運行中的腳本輸入資料提供了途徑。 這就允許腳本從使用者那裡獲得資料輸入,然後在程式運行中運用這些資料。 命令列中的argument指的是$1到$9。 如果你曾經在DOS中創建過批次檔,你就可能對於使用類似的%1、%2處理同樣的事情。 下面是一個使用命令列argument的例子:
#!/bin/sh
cp $1 $2
上面的腳本採用了兩個命令列argument,並把其中一個作為拷貝的來源,而第二個作為拷貝的目的地。 在運行上面這個腳本的時候,你需要輸入諸如./myscript file1 file2,這裡的myscript指的是上面腳本的名稱。 命令列選項也可以通過這種方法傳遞,比如:
#!/bin/sh
cp $1 $2 $3
為了遞迴地把$2目錄下所有的檔拷貝到$3,你可以使用上面的腳本:/copy sourcedir destdir。 選項$1加上-r能夠告訴系統進行遞迴式的檔拷貝。
帶條件的Shell scripting
簡單的Shell scripting對於處理直截了當、沒有變數的任務非常合適。 而對於那些需要一定程度決策的工作來說,if/then條件假設就成為必須的了。 Shell scripting支援很多選項,從比較符操作到檢索檔的存在。 基本的if條件判斷選項包括:
-eq 檢查某兩個值是否相等(例如,if [2 eq 5])
-ne 檢查兩個值是否不相等
-lt 檢查值1是否小於值2
-le 檢查值1是否小於等於值2
-gt 檢查值1是否大於值2
-ge 檢查值1是否大於等於值2
-f 檢查某一個檔是否存在(例如,[-f "檔案名"])
-d 檢查某一個目錄是否存在
幾乎所有主要的程式都可以使用比較操作。 最經常使用的是-f,我們用它在使用某一個檔之前,先行檢查它的存在。
創建簡單腳本類比Windows命令
現在,你瞭解了基礎,你可以創建指令碼命令,這樣Windows使用者就可以在Linux系統內使用同樣的命令。 為你常用的DOS命令創建類比映射是非常簡單的事情。 例如,把Linux cp命令映射為Windows copy命令就是這樣進行的:
#!/bin/sh
if [ -f "/usr/bin/mcopy" ]
then
mcopy $1 $2
else
cp $1 $2
fi
該腳本利用了mcopy(如果它存在),因為該命令接受Windows路徑,比如:a:\file.txt。 這個命令在絕大部分主流Linux版本的mtool包中。 一旦一個腳本被成功創建,記得要使用chmod +x YourScriptName命令使它成為可執行檔。
有很多方法可以調試你的腳本,但是最簡單的辦法是在你的腳本中插入一個簡單的echo語句。 下面是一個例子:
#!/bin/sh
echo "marker 1"
if [ -f "/usr/bin/mcopy" ]
then
echo "marker 2"
mcopy $1 $2
else
echo "marker 3"
cp $1 $2
fi
echo "marker 4"
使用簡單的陳述説明你瞭解這個腳本,並説明你跟蹤它是在那裡出問題的。
獲得腳本
有了這些基本的腳本知識,你就能夠很容易地把絕大部分常用的Windows命令列轉化成Linux可用的腳本。 如果有某一個特定的命令列選項是你想進行映射的,查看Linux man pages,這能説明你找到合適的方法。