选择显示字体大小

如何在linux环境模拟dos命令

你可以利用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 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,这能帮助你找到合适的方法。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons