You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#程序运行rxvt命令实现Cygwin终端命令自动化输出?

解决Cygwin rxvt命令自动化执行无输出问题

问题原因

你用rxvt -ls -e sh -c ls >> output.txt测试时无输出,是因为Windows cmd的重定向符号>>被提前解析了——cmd会把rxvt程序本身的输出重定向到文件,但rxvt是终端窗口程序,它的标准输出并不是你要执行的ls命令的结果,所以不会生成目标文件。

修复方案

1. 修正命令格式

把输出重定向逻辑放到sh -c的引号内部,让Cygwin的shell来处理结果输出:

rxvt -ls -e sh -c "ls >> output.txt"

如果目标命令包含参数或空格,要把完整命令和重定向都放进引号,比如:

rxvt -ls -e sh -c "your-target-command --param1 test >> ./data/collect_$(date +%Y%m%d).txt"

2. C#程序中执行的正确写法

用Process.Start直接调用rxvt,避免cmd中转解析参数,示例代码:

using System.Diagnostics;

// 替换为你的rxvt实际路径,比如C:\cygwin\bin\rxvt.exe
var rxvtPath = @"C:\cygwin64\bin\rxvt.exe";
// 替换为你的目标命令和输出路径
var arguments = @"-ls -e sh -c ""your-target-command >> output.txt""";

var startInfo = new ProcessStartInfo
{
    FileName = rxvtPath,
    Arguments = arguments,
    UseShellExecute = false,
    CreateNoWindow = true // 不需要显示终端窗口时启用
};

using var process = Process.Start(startInfo);
process.WaitForExit(); // 等待命令执行完成再继续

3. 调试排查技巧

  • 先在cmd里手动执行修正后的命令,确认能生成输出文件后再放到C#代码中
  • 如果命令执行失败,添加错误输出重定向,把错误信息写入文件排查:
    rxvt -ls -e sh -c "ls >> output.txt 2>&1"
    

内容的提问来源于stack exchange,提问作者Ryan Schreck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:22:33