从 Squeak 或 Pharo 调用 shell 命令
如何从 Squeak 和 Pharo 调用 shell 命令?这些环境中是否有类似某些 UNIX 语言中的 system() 函数来运行外部 shell 命令或反引号(不能让它们在这里对编辑器执行操作,但是当您按 " 左侧的键时会得到什么? 1”及以上“TAB”)来捕获命令的输出?
How can you invoke shell commands from Squeak and Pharo? Do these environments have anything in them like the system() function in certain unix languages to run external shell commands, or the backticks (can't make them here do to the editor, but what you get when you push the key left of "1" and above "TAB") to capture the output of commands?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为你可以使用 OSProcess 包来做你想做的事。另外,我认为最好在 squeak-dev 或 pharo 邮件列表中询问。
I think you can use the package OSProcess to do what you want. In addition, I think is better to ask in squeak-dev or pharo mailing list.
在 Squeak 中,您可以使用 CommandShell,但我不知道有什么(如果有的话)可用对于此时的法罗来说。
In Squeak you can use CommandShell, but I don't know what (if anything) is available for Pharo at this time.
Squeak/Pharo 中的 Shell 支持非常有限。有计划对此进行改进;请参阅珊瑚 项目。欢迎您的贡献。
Shell support in Squeak/Pharo is pretty limited. There are plans to get this improved; see the Coral project. Your contributions are welcome.
您有两种解决方案:
使用 ProcessWrapper 包。优点:安装快速、简单。缺点:功能有限,仅在 win32 上。
使用 OSProcess/CommandShell 包。优点:非常好的功能(管道、环境变量、类似 shell 的工作空间...)和跨平台。缺点:必须使用 VMMaker 工具来构建外部插件。
You have two solutions:
Use the package ProcessWrapper. Pros: quick and easy install. Cons: limited functionality, only on win32.
Use the package OSProcess/CommandShell. Pros: pretty good functionality (pipes, environment vars, shell-like workspace ...), and cross platform. Cons: must use VMMaker tools to build the external plugin.
在 Windows 上,Win API 上有一个包装器允许您执行此操作:
Windows 可以对其中的进程执行的大部分操作都有很多支持(env,...
) ,在目录中查找 OSWindows。
On Windows, there is a wrapper on the Win API allowing you to do this:
There are a lot of support for most of what Windows can do with processes in there (env, ...)
So, look in the catalog for OSWindows.
我正在使用 Windows 10 和 Pharo 6,发现使用
OSProcess
或OSSubprocess
类不可行(难以安装或 Windows 不支持最新版本)。对我有用的是 LibC。您可以在命令中使用
2>
将 stderr 重定向到文件:可以使用以下命令操作环境变量(尽管它返回值 1 意味着在 Windows 中失败):
但是,我无法更改当前目录:
解决方法是在命令中执行 CD:
I'm using Windows 10 with Pharo 6, and found it unfeasible to use the
OSProcess
orOSSubprocess
classes (hard to install or the latest versions are not supported for Windows).What does work for me is LibC. You can redirect stderr to a file using
2>
inside the command:It's possible to manipulate the environment variables using (although it returns a value of 1 implying failure in Windows):
However, I was unable to change the current directory:
The workaround is to do CD within the command: