有没有更好的Windows命令行壳?

33

CMD.EXE给我带来了很多问题。 我安装了Cygwin并经常使用bash,我还安装了mSysGit附带的mingwin bash shell,但有时我确实需要从Windows shell运行东西。

是否有可以替代Windows shell的工具:

  • 具有持久的命令行历史记录,在关闭会话后在下一个会话中可用?(类似于bash HISTFILE)
  • 记住我刚才所在的目录,以便我可以在两个目录之间切换?(类似于bash cd -)

(或者有没有办法在CMD.EXE中启用这些功能?)

我看到有人之前问过更好的Windows shell,但他们是在询问剪切和粘贴,这对我来说优先级较低。 问题不在控制台上,而在命令行解释器上。


2
PowerShell不是我问题的答案。正如我在Seb的回答中指出的评论,PowerShell没有持久的命令行历史记录。我不是要求一般情况下更好的东西,而是要求具有特定要求的东西。删除PowerShell标签,因为这不是一个PowerShell问题。 - skiphoppy
我使用ConEmu,它是一个非常好的命令行替代工具。 - james-see
@jamescampbell 不是控制台,而是Shell。我也使用ConEmu,但它只是一个控制台,不是一个Shell。 - skiphoppy
12个回答

25

微软刚刚发布了 Powershell。(约2年前)

我已经下载了它,虽然没有使用得很多,但似乎是一个不错的工具。


1
这似乎是 Powershell 最接近持久历史记录的方式:http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/add-history.mspx - skiphoppy
“刚发布”?它已经可用超过2年了!! - Lucas
也许他指的是PowerShell 2,CTP 3在12月份发布。我期待V2的到来。 - Bratch
我指的是稳定版本1.0! :) - Seb
很高兴看到缓冲区大小变大了 :) (可以向上滚动更多行)。 - Sebastian Patten
这个回答完全离题,没有提供任何帮助。 - Semanino

12

我一直很喜欢4NT(虽然现在已经有一段时间没用了)。

它是Windows的增强型命令解释器,大多数情况下向后兼容(也就是说,您可以运行普通的Windows批处理文件)。唯一不使用它的原因是它不像默认的command.exe那样随Windows一起提供。

与默认的Windows命令行解释器相比,它具有更好的流程控制机制。所有标准的Windows命令行工具都可用,而且还带有额外的选项和参数。

基本上,它就是应该是CMD.exe的。

更新:看起来它不再叫4NT了,而是TakeCommand:http://jpsoft.com/products.htm


可能来自http://jpsoft.com/products.htm的免费TCC/LE也足够了,它声称具有shell历史记录。 - Peter Kofler

8
我也在使用PowerShell。它是一个伟大的,类似于Linux shell但面向对象、可扩展的框架。不仅适用于系统管理员,对于开发人员也非常有用(构建过程等)。PowerShell比Bash或其他Linux竞争者更加优秀。
主要优点:
- 可以使用.NET语言进行扩展。 - 使用.NET对象(DateTime、File等)。 - 语法简单明了。 - 远程控制。 - 调试功能。 - 可以逐步处理管道。 - ...
更多信息请参考这里:

http://blogs.msdn.com/powershell/default.aspx

http://windowsteamblog.com/blogs/windowsvista/archive/2006/11/14/it-forum-day-one-windows-vista-and-windows-powershell.aspx

http://blogs.msdn.com/powershell/archive/2007/11/06/what-s-new-in-ctp-of-powershell-2-0.aspx


8
另一个出色的解决方案是“Clink”,它增强了CMD.exe的持久历史记录和许多类似BASH的功能。只需安装它,然后像平常一样打开CMD。 请参见:http://code.google.com/p/clink/ 或者,如果您真的想让“cd -”起作用并带您进入以前的目录,请按照Wouter和Peter提到的方法安装免费版本的“TCC/LE”:http://jpsoft.com

Clink似乎是最好的选择... - thoni56

5

4

现在它可用吗?我之前看了一眼,它的漏洞太多了... - Joey
4
不解决我所面临的任何问题。就像我说的,我不是在寻找更好的控制台;我正在寻找更好的 shell。 - skiphoppy
console2只是UI前端。垃圾进,垃圾出!就像命令提示符一样。 - Oliver
我喜欢选项卡,但我仍然不知道如何从中选择和复制文本。如果它实际上具有该功能,他们仍然没有做到让人容易理解。 - Whatever
有关配置Console2的帮助:http://www.hanselman.com/blog/Console2ABetterWindowsCommandPrompt.aspx - Ashley Davis

2
其他人已经提到了 Powershell 和 4NT,它们都比 CMD 更好,因为 CMD 具有神秘的语法、缺乏文档并且常常令人惊讶地无法完成你可能想要使用它做的任何任务 :)
  • 4NT现在是Take Command GUI文件管理套件的一部分,但所有者仅提供了外壳部分,现在称为TCC/LE,并且现在也是免费的!对于大多数人来说,我建议使用它-它的学习曲线最容易,因为它具有与CMD基本兼容的语法,有很多在线资源,并且能够完美地完成80%的文件系统任务。

    TCC/LE下载

  • 对于有更加晦涩需求、进行大量管理或需要更多灵活性的人,请尝试Powershell-它的初始学习曲线陡峭,但内部非常一致,一旦你掌握了基础知识,就可以使用相同的工具和方法访问和操作Windows处理的99.9%的所有内容,甚至在其他计算机上通过网络执行。即使学习基础知识(排序,选择,%和?)也比CMD好...

    Powershell所有者手册

    Powershell示例

  • 如果您更加技术倾向,则应考虑IPython-在其核心,它是一个用于编写和执行Python代码的控制台,但它也非常方便地充当了一个外壳(和任务管理系统)-它具有书签,别名,代码/文件的制表符完成,可以混合代码和shell命令,例如files =!dir * .txt保存dir * .txt的输出,可配置输入和/或输出的日志记录,可以重复过去命令块,导出它们或创建宏,并具有可以自定义它更多的扩展程序。

    IPython作为shell

    绝对不适合胆小的人,但如果您熟悉Python,则是一个非常强大的环境!


2

PowerShell,我会说。这是微软的新官方命令行管理工具。

我自己在开发任务中使用它,并且很喜欢它。它使您能够直接在命令行上与.NET框架类进行交互,这可以非常强大。


1

pushd 和 popd 可用于在目录之间导航。

c:>pushd windows c:\Windows>popd c:\


一直在使用那个,但它无法切换。 - skiphoppy

1

当你用PowerShell的方式处理事情时,它可以很好地工作。例如,当你想要操作.NET应用程序和Windows文件时。它非常适合脚本编写,因为语法比Bash更好...

但是,当你想要使用一些典型的UNIX应用程序时,当PowerShell将所有LF行结束符转换为CRLF时,你很容易遇到麻烦(甚至不要考虑管道二进制文件)。

这只是我的经验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接