学习控制台命令的重要性

我正在教一个入门课,为全新的计算机工程专业的学生开设课程 本周我将教授基本的Windows控制台(命令提示符)命令和batch file(以及数周后的unix)。 去年有学生抱怨说“这不再是必要的”。 由于我坚持教学,所以我有一些理由。 但是我想听听你们的意见。 在我开始之前,我可以用什么理由说服他们呢?

谢谢。

好吧,现在我有几个答案,我想列举我的理由,教基本的控制台命令和基本的batch file的使用情况。

  • 首先,它有助于了解幕后发生的事情。 这对未来的许多课程将会很有用,比如操作系统和networking。
  • 学习Linux之前一个好的开始。 那么,为什么不首先Linux? 因为他们大多数从来没有使用过除Windows以外的其他任何东西。 (几个星期后我会教Linux和虚拟盒子)
  • 不要低估batch file。 这也是UNIX shell脚本的一个很好的介绍。
  • 他们也在Windows上学习C编程。 所以他们可以用system()来使用一些命令; function在他们的代码。
  • 在他们的余生中,他们将不得不执行许多任务而不使用GUI。

编辑:在MS-DOS的原始问题,我想说的是一般的Windows命令提示符和命令行

正如上面所说的:“现代Windows中不存在MS-DOS”。 Win2K / WinXP / Win2003中的命令提示符与原始MS-DOS不同。 我认为MS-DOS几乎(如果不是绝对的话)过时并且不值得学习,除非有人想了解微软操作系统的演进路径。

但是,对于Windows用户, cmd仍然应该学习。 以下是我认为的原因:

  1. 命令提示符是Windows上的基本CLI shell。 许多实用工具(例如,用于SQLserver的ipconfig / ping / netstat / sqlcmd等)只能在命令行中使用。
  2. 批处理(.bat)或CMD(.cmd)脚本对于大量简单的自动作业非常有用 – 尽管其功能和语法都不尽相同。
  3. 一些额外的工具包可以用来增强CMD的能力,如Cygwin,Sysinternals,Windows资源工具包工具等,他们需要在CMD的知识。

在着名的“实用程序员”一书中,第15部分(技巧21)解释了为什么要学习命令行。

在Windows 7上, PowerShell似乎是比cmd更好的选择。

这将是他们将使用的东西吗? 如果不是,他们可能会忘记它,或不知道为什么,也许恨它,而你不想要。

我想他们最终会使用powershell(如果不是* nix shell),那为什么不教这个?

学习使用命令行是有很好的理由的 – 它比任何如此多的任务都快得多 – 但是DOS确实有一个明显过时的空气。 这并不是说它已经过时了,但是由于很好的原因, cmd仍然在每一个Windows上运行,但是学生需要感觉他们正在学习一些新的东西,很酷。

我将专注于Linux教学命令行 – 没有人可以说这在2010年是不相关的! – 处理DOS shell及其(更有限的)可能性和差异作为其中的一部分。

首先,MS DOS在现代Windows中不存在 – 它没有从Win2k / WinXP的意思在Windows命令行。 这有很多用处,但是您可能会发现教他们创建.cmd脚本并从“运行”对话框运行它们会更容易。

我在Windows中使用命令行的原因如下:

  • ipconfig / flushdns

除此之外,我很少在Windows中使用命令行。 如果我需要在批处理过程中做任何事情,我将SSH入我的Linux服务器,并做到这一点。

Powershell可能会更好,但我不使用(正如我所说,我有Linux可用),所以我不能评论这一点。

在Windows中,你也可以教他们Powershell …

永远不要低估批处理文件的有用性。 大约一年前,我曾经使用它们来完成一些小任务,比如通过网络自动复制备份文件。 他们可以是非常有用的。

  • 考虑到越来越多的计算机(包括数据中心中的移动电话和服务器)基于Unix或Linux,
  • 考虑到你的课程的核心是Unix和Linux,
  • 考虑到Cygwin可以访问Windows上的Unix命令行,

  • 但是考虑到MS-DOS有时可能有所帮助,

我会教另一种方式:Unix作为一个起动器和一个主要课程,然后MS-DOS作为一个便笺。

也许有一天你的窗户会粉碎,所以如果你知道MS-DOC的基本知识,你可以在格式化磁盘之前从电脑上保存一些文件。 或者,也许你可以修复你的硬盘驱动器。 如果您是开发人员,则可以使用MS-DOC命令生成一些文件…在某些情况下非常有用。

学习任何东西都是有用的,但是我不会对它们强制执行,还有很多很棒的命令行工具仍然可以使用,有时更简单的编写一个简单的批处理文件来完成一些繁琐的任务。 DOS不是一件很难学的东西,所以我不会花太多的时间在上面,只是简单地教一些DOS命令,然后给他们一些参考资料,如果他们想进一步学习,那么他们就可以。

这里有一些原因,为什么你应该放弃在这个时代教DOS( cmd.exe )的想法。

  • 缺乏数据结构,如数组/字典/散列。
  • 缺乏字符串/文本操作功能。
  • 缺乏日期算术功能
  • 缺乏数学能力。 只能做整数的数学。
  • 缺乏像while循环等其他编程结构
  • 由于缺少这些功能,通常需要创建解决方法,以至于批处理代码变得杂乱无章,效率低下。
  • 等等

一些更好的选择,

  1. Linux shell。
  2. VBScript中
  3. 电源外壳
  4. C
  5. 蟒蛇。

其他想法:

  1. 对于计算机科学专业的学生来说,在Linux / FreeBSD上学习编程要比在Windows上进行编程好得多。 首先,开源操作系统很便宜; 其次,这些类似UNIX的操作系统组织良好,开放,使初学者可以获得更多的知识和技术。 在这个关于命令行的主题中,我们可以看到* NIX shell比Windows cmd更强大更美观。

  2. 对于在Windows平台上工作的程序员或系统管理员,cmd(或PowerShell)是必要的技能。 我们可以编写cmd脚本来做一些简单的自动作业。 对于复杂的任务,我们可以选择VBScript / Python / Perl / AutoHotKey并将它们与cmd连接在一起。

来自hrzafer的报价:

“他们也在Windows上学习C编程,所以他们可以使用system()函数,在他们的代码中使用函数。”


我同意这一点。 不仅是“system()”,还有“int argc,char * argv []”,“return / exit”等

开始使用CLI学习编程更好。 使用文本编辑器和编译器/ debuger / profiler的命令工具包而不是IDE,学生可以了解编译过程,源代码和可执行文件的实质,以及程序和操作系统shell之间的交互。

我会立即开始使用Linux / Unix。 虽然你说他们以前从来没有使用过Linux,习惯于Windows,但是我怀疑他们曾经使用过DOS /命令行。 如果你正在谈论真正的MS-DOS 8.3文件名,config.sys / autoexec.bat,内存限制和驱动程序的麻烦,你只是要浪费自己的时间在一些不会有什么好处,除非绝大多数的学生将为传统系统开发。 当他们开始使用DOS时,情况会变得更糟,然后不得不跳到Linux,与DOS相比,它会看起来像是一个外星人。

Windows命令行可能是很好的学习,但最终他们应该学习编程基础知识,然后他们可以将它应用于BATCH,BASH,Powershell等许多脚本语言。