构建更好、更美观,同时功能更强大的Windows 命令行

[原文发表地址] Making a better, somewhat prettier, but definitely more functional Windows Command Line

[原文发表时间] 2013-07-16

Running htop via ssh under ConEmu

2004年,我曾经写过一篇博客,名为Windows正缺乏文本模式。Windows 命令行有很大空间可以做得既美观,功能又强大,如果有人解决了这个问题,他们就将成为英雄。

我喜欢iTerm2 的选项卡、文字处理及其简约大方的风格,我希望同样的风格出现在Windows 上。2011年我发现了Console2,2012年我又转向ConEmu,这是Windows的一个非常棒的带选项卡的终端。即便他们外观不是很好看,我依然喜欢他们,尤其是ConEmu,非常神奇,你可以对其进行各种配置。但是,它是开发人员为开发人员写的。在把主字体设置为Consolas,其它的改为Segoe UI以后,它的外观我才勉强可以接受。是我太注重细节和外表了吗?很显然,华丽且实用的软件(例如Panic)是Mac公司为什么存在的原因,他们的软件既美观而且功能性很好。Windows的员工肯定能做出更受人喜欢的“完美的设计”。

以下是一些命令行工具,它们可以增强和改善(但并不能完全拯救)Windows命令行。

我刚接触Clink的时候,就完全被吸引住了,它能够直接嵌入到cmd.exe窗口! *rimshot*

众所周知,Cygwin可以给Windows带来类似bash的体验,而Clink这个小工具可以将其中的一些高效性能和编辑功能,直接集成到cmd.exe。

  • 类似Bash的编辑界面(来自GNU的Readline库)。关于Readline键盘快捷键的更多信息。
  • 更好的路径自动补全(TAB)。
  • 从剪贴板粘贴 (Ctrl-V)。 太棒了!
  • 支持可执行文件/命令和环境变量的自动补全。
  • 撤消与重做 (Ctrl-_ or Ctrl-X, Ctrl-U)。
  • 改进的命令行历史记录。
  • 跨会话保存。
  • 可搜索(Ctrl-R and Ctrl-S)。
  • 历史扩展 (e.g. !!, !, and !$)。

Clink做的最大改变是Tab 自动补全,就像Bash的“显示所有选项”,而不是DOS的“循环列举所有选项”。如下例,我在输入2013-0后按Tab,Clink列出了所有我可以选择的选项。

using Clink to make cmd.exe better

POWERSHELL ISE

哈,你会惊喜的发现你的Windows电脑上已经安装了Powershell ISE。是的,这也吓了我一跳,只要你愿意,你甚至可以隐藏脚本面板 (Ctrl-R),这样就可以像使用控制台一样使用PowerShell ISE。你能得到自动补全(参考下面的路径智能感知),着色,别名和PowerShell的所有功能。

当然,这不是bash,但这可能是件好事。也许你还没有接触PowerShell,可能碰到的问题也许会把你吓倒,但试着稍微尝试一下。PowerShell添加了常见命令“ls”的别名,就像你想的,它的行为和“dir”一样。到处逛逛,你就会感觉和其他的命令行一样。

如果你正在使用PowerShell,毫无疑问,你已经有了完整的调试程序体验。

The PowerShell ISE

在外观好看这点上,PowerShell并不值得夸赞(我要再一次强调字体、空白符和排版的重要性,好好设计下吧),但它却有很好的功能性,而且你已经拥有了它

 

CONEMU

我以前谈到过ConEmu这里我会引用一些。ConEmu接管了命令提示,ConEmu lets you put your consoles in JumpLists!添加了选项页、状态栏、控制栏,还有拷贝时令人惊讶的任务栏进度条(这很酷),以及对 FarManager (Norton Commander anyone?)的深度支持。

Tabs in ConEmu in Windows

 

 

ConEmu绝对是Windows控制台可用性的一次飞跃,但真正让我震撼功能的还是进度条的集成。如果你熟悉Windows 7,可能你也就熟悉进度条叠加在Windows 7的任务栏按钮的方式。ConEmu检测当前运用程序的运行状态和一些可选操作,并显示进度。太疯狂了!试着运行chkdsk,然后观察进度条。我非常喜欢这些细节。

ConEmu Progress Bar

GIT的WINDOWS版本或 CYGWIN

如果你想在Windows上得到类似Linux的体验(拥有一个不错的shell),Cygwin一直都是一个选择。然而,自从Git 的Windows版本发布,大多数我认识的人都安装并使用Git Bash。借助十分完备的命令行工具集,如果合理使用Cygwin,你可以得到更完整的“假Linux”,但对大多数人,Git Bash应经足够用了

Git Bash gets you close

什么是SSHing呢?对于远程连接Unix机器的用户,SSHing是命令行的基础部分。我呢,有一个在Azure 上运行的Linux farm,经常需要用ssh进入。

顺便提下,我喜欢说'shoosh' 进入计算机,但人们总是觉得我很奇怪,我觉得这是同一件事情。

然而,Windows的SSH客户端很差劲,或许我说的过分了些,但是它们确实很丑陋,可耻地丑陋。 虽然必须承认PuTTY非常厉害而且功能性很强,但每次都像在一个窗口运行Windows 95。下面是一些更好的SSH客户端,包括PUTTY自己的分支。

 

BITVISE SSH客户端 —— 更重要的是,来自命令行的SSH

Bitvise SSH 客户端免费供个人使用,而且功能强大。虽然有一个完整的GUI,但是——上帝保佑——并不好看。然而,还有一个命令行版本,倒绝对是一笔真正的财富。我只需输入SSH,一切便准备就绪。

事实上,我建了个名为“ssh.bat”的批处理文件,然后放在我的PATH里,文件内容仅为:"stermc %1"。也就是说我可以仅仅输入ssh user@hostname:port,一切便准备就绪。对我来说,大部分情况这都比putty要容易太多。Bitcise绝对值得体验。

Find a SSH command line too like Bitvise

KITTY

Kitty是PuTTY 0.62版本的一个分支。我把一个可移植版本放在一个名为Dropbox utils的文件夹里(这个文件夹在我的PATH路径里),这样,它便自动出现在我的每台机器上。Kitty有一些很好的功能,例如发送到Tray、透明、发送会话(这样就不需要Pageant了),和许多小的高级用户功能,例如“卷起”程序如果你在标题栏按Ctrl-Click。

Kitty is a better PuTTY alternative

Kitty也可以集成到你的浏览器解析ssh:// 连接,这是个不错的功能。

我还遗漏了什么改进控制台的应用程序么?在Windows平台,你都在用什么程序呢?欢迎大家参与评论,我将洗耳恭听。