你可以利用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因为这是根用户使用的标准shell你可以在绝大部分系统中使用/bing/bash
重要的是了解每个shell之间的脚本差别一些壳比如bash比标准shell支持更多的命令对于绝大部分Linux版本sh事实上是bash
从一个脚本运行命令非常简单就好象在Windows系统中运行DOS比如你可以这样复制文件
#!/bin/sh
cp file file
mv file file
echo "complete" > completetxt
能够不需要交互就完成一个命令对于自动运行的任务来说非常有用但是对于用户来说却不是那么有帮助了 shell 还为向一个运行中的脚本输入数据提供了途径这就允许脚本从用户那里获得数据输入然后在程序运行中运用这些数据命令行中的argument指的是$到$如果你曾经在DOS中创建过批处理文件你就可能对于使用类似的%%处理同样的事情下面是一个使用命令行argument的例子
#!/bin/sh
cp $ $
上面的脚本采用了两个命令行argument并把其中一个作为拷贝的来源而第二个作为拷贝的目的地在运行上面这个脚本的时候你需要输入诸如/myscript file file这里的myscript指的是上面脚本的名称命令行选项也可以通过这种方法传递比如
#!/bin/sh
cp $ $ $
为了递归地把$目录下所有的文件拷贝到$你可以使用上面的脚本/copy sourcedir destdir选项$加上r能够告诉系统进行递归式的文件拷贝
带条件的Shell scripting
简单的Shell scripting对于处理直截了当没有变数的任务非常合适而对于那些需要一定程度决策的工作来说if/then条件假设就成为必须的了Shell scripting支持很多选项从比较符操作到检索文件的存在基本的if条件判断选项包括
eq 检查某两个值是否相等(例如if [ eq ])
ne 检查两个值是否不相等
lt 检查值是否小于值
le 检查值是否小于等于值
gt 检查值是否大于值
ge 检查值是否大于等于值
f 检查某一个文件是否存在(例如[f "文件名"])
d 检查某一个目录是否存在
几乎所有主要的程序都可以使用比较操作最经常使用的是f我们用它在使用某一个文件之前先行检查它的存在
创建简单脚本模拟Windows命令
现在你了解了基础你可以创建脚本命令这样Windows用户就可以在Linux系统内使用同样的命令为你常用的DOS命令创建模拟映射是非常简单的事情例如把Linux cp命令映射为Windows copy命令就是这样进行的
#!/bin/sh
if [ f "/usr/bin/mcopy" ]
then
mcopy $ $
else
cp $ $
fi
该脚本利用了mcopy(如果它存在)因为该命令接受Windows路径比如a:\filetxt这个命令在绝大部分主流Linux版本的mtool包中一旦一个脚本被成功创建记得要使用chmod +x YourScriptName命令使它成为可执行文件
有很多方法可以调试你的脚本但是最简单的办法是在你的脚本中插入一个简单的echo语句下面是一个例子
#!/bin/sh
echo "marker "
if [ f "/usr/bin/mcopy" ]
then
echo "marker "
mcopy $ $
else
echo "marker "
cp $ $
fi
echo "marker "
使用简单的陈述帮助你了解这个脚本并