挑战:编写一个脚本文件foo.cmd
,可以从原始Windows cmd.exe
提示符(不是PowerShell,不是以管理员模式)中调用该脚本文件,以执行任意Windows特定的代码...
> .\foo.cmd
Hello Windows!
...也可被调用从符合POSIX标准典型(Linux的/ OSX)不变shell提示符(bash
,tcsh
,或zsh
),执行任意特定POSIX的代码:
$ chmod a+x foo.cmd
$ ./foo.cmd
Hello POSIX!
...无需安装或创建第三方解释器/工具。
我知道这是可能的,但是使用了草率(即在Windows上,在“ Hello Windows!”之前,将一到两行垃圾/错误消息打印到stderr或stdout)。
获胜标准是最小化(第一)粗线的数量和(第二)细线字符的数量。
可以将Cruft定义为(任意)有效负载代码未产生的任何控制台输出(stdout或stderr)。空行计入行数。换行符不计入字符数。Cruft分数应在两个平台上求和。让我们忽略这样的机制cls
,这些机制会清除残骸,但同时也会浪费掉先前的终端输出。如果Windows由于@echo off
尚未旋转而回显您的命令,则排除在打印当前目录和提示时花费的字符。
第二个标准是内部解决方案的简单性/优雅性foo.cmd
:如果将“基础结构”定义为任意有效载荷代码中不直接涉及的任何字符,则首先最小化包含基础结构字符的行数,其次将基础结构总数减少字符。
如果文件具有CRLF行尾,即使POSIX部分仍可以工作,请多加赞赏!(不确定最后一部分是否可能。)
我现有的解决方案(将在其他人有机会的情况下在此处发布)使用6行基础结构代码(52个字符,不包括换行符)。它产生5行粗体,其中2条为空白,所有这些都发生在Windows上(30个字符,不包括换行符,也不包括出现在其中两行的当前目录/提示字符串)。