肯定有人已经为 Windows 编写了一个不错的 shell。
我在找
a)或多或少类似于普通的 linux shell(即历史记录、完成等)
b) 安装简单(比 Cygwin 更容易,但当我尝试使用 Cygwin 时,它似乎不太好。)
如果符合以下情况可获得加分:
c) 自由(如言论)
d) 允许在路径中使用正斜杠代替反斜杠
答案1
Powershell 比其他任何命令 shell 都具有显著的优势。它是面向对象的。
在 cmd、bash 等中,dir/ls 等命令的输出实际上是一个字符串数组。如果将其通过管道传输到另一个命令,则必须处理字符串。在 Powershell 中,dir cmdlet 实际上提供了一个文件对象数组,您可以将其通过管道传输到另一个命令并通过属性对这些对象进行操作。Powershell 实际上是一个交互式 .Net shell。每个 cmdlet 实际上都是一组 .Net 对象的包装器。
微软的所有下一代管理界面实际上都是在 Powershell 中实现的,并且 GUI 界面是 Powershell 命令的包装器,类似于执行 GUI 管理工具的“Unix 方式”。
以下是从 Active Directory 角度来看的示例...您可以使用 cmd.exe shell 和 dsquery.exe 之类的实用程序对对象执行 LDAP 查询。但您会得到一个可分辨名称列表。然后您可以将这些 DN 处理为字符串等。在 Powershell v1 或 v2 中,您可以安装并使用任务管理单元为您提供类似的工具获取QAD用户. 当您使用以下方式查询 AD 时获取QAD用户返回值是 User 对象的集合。因此,类似这样的命令:
$users = get-QADUser svc_*
将返回一个您可以按属性处理的集合,例如按 HomeDirectory 对其进行排序,您可以使用:
$HmDirs = get-QADUser svc_* | sort-object HomeDirectory
目前没有其他 shell 具有适用于 Windows 的此功能。Powershell 绝对是最佳选择。
更新:PowerShell v2 现已发布,作为Windows 管理框架,但是如果您想获取 Microsoft AD cmdlet,您必须运行服务器 2008 R2 或 Windows 7,否则它仍然是 Quest cmdlet。
答案2
Poweshell。Nuf 说。:)
答案3
我很确定 cmd 允许正斜杠。
您看过 Powershell 吗?人们似乎对此深信不疑。
答案4
我必须加入 powershell 合唱团。与 unix 样式的 shell 不同,cmdlet 都使用从一个 cmdlet 流向另一个 cmdlet 的对象管道。这意味着您不必担心如何让一个 cmdlet 与另一个 cmdlet 一起工作。在 unix 世界中,大多数 shell 命令和脚本都花费大量代码来删除下一个命令无法处理的“额外文本”。这也意味着你对它的了解越多,你就能越多地使用它。与典型的 shell 不同,在典型的 shell 中,你必须了解每个命令的工作原理,以便弄清楚如何转换管道文本,而 powershell cmdlet 的工作方式与输入无关。例如,如果我将目录列表发送到 select-object(选择要使用的特定属性),如果我向 select-object 发送活动目录用户对象、SCOM 管理类或交换邮箱,它的工作方式完全相同。