【问题标题】:What is the Ada command line redirector that is analogous to ">"?什么是类似于“>”的 Ada 命令行重定向器?
【发布时间】:2016-07-11 03:35:18
【问题描述】:

Ada noob 在这里(一般来说命令行也不那么热)。我正在寻找类似于 DOS 中的“>”的 Ada 命令行重定向器。

我正在命令行 shell 中运行 Ada 应用程序。 (威廉惠特克的话,如果有帮助的话)。我使用“@”命令让 WORDS 应用程序从文本文件中读取术语列表。

我希望将输出写入文件,而不仅仅是出现在命令 shell 中。我确实查看了http://www.ada-auth.org/standards/12rm/html/RM-A-15.html,但没有看到任何重定向*。

了解 ADA 命令行重定向器是否创建新文件或者我是否必须先自己创建也很有帮助。

我需要使用 Ada PUT 命令吗? Ada.Text_IO?如果是这样,您能否为我指出如何使用这些命令的语法资源?我以前从未使用过 Ada。

有什么想法吗?感谢您的帮助。

【问题讨论】:

  • 我不知道你所说的“@”命令是什么意思。但是,Ada 中没有解释 shell ''、'>>' 重定向的功能,因为 Ada 程序(与从命令行执行的任何其他程序一样)永远不会看到它们!如果你说words > foo.txt,shell 会打开foo.txt 进行输出,然后执行words 并发送标准输出——words 对此一无所知——到foo.txt,当words 退出时它会自动关闭。

标签: shell output ada io-redirection


【解决方案1】:

William Whitaker's Words 包含一个交互式命令行解释器,但看起来您想使用command-line 模式从另一个程序控制它。确切的细节取决于您选择的环境。作为使用bash 的具体示例,而不是从始终写入WORD.OUT@<file> 读取,而是执行words,后跟标准输入上的单词列表;结果出现在标准输出中:

$ ./words amo amas
am.o                 V      1 1 PRES ACTIVE  IND 1 S    
amo, amare, amavi, amatus  V (1st)   [XXXAO]  
love, like; fall in love with; be fond of; have a tendency to;

am.as                N      1 1 ACC P F                 
ama, amae  N (1st) F   [XXXDO]    lesser
bucket; water bucket; (esp. fireman's bucket);
am.as                V      1 1 PRES ACTIVE  IND 2 S    
amo, amare, amavi, amatus  V (1st)   [XXXAO]  
love, like; fall in love with; be fond of; have a tendency to;

从标准输出,你也可以redirect将结果输出到一个文件中;来自python,您可以使用commandssubprocess;在 Java 中,您可以使用 exec()ProcessBuilder,作为 example

ProcessBuilder pb = new ProcessBuilder("./words", "amo", "amas", "amat");

【讨论】:

【解决方案2】:

我没想过要先查看 Github,但 William Whitaker WORDS 项目网站上有一些非常好的信息,包括此处的用户指南:

http://mk270.github.io/whitakers-words/operational.html.

我了解到我必须做的是: 在 Windows 命令行中运行 Words 时,输入“#”更改参数。

所以从这里开始: William Whitaker's WORDS beginning interface

然后输入“#”改变程序的参数和模式,回车。您将按顺序看到每个参数,您可以输入“n”以保留当前参数设置(可以设置为是或否)或“y”以更改参数设置(为是或否)。 [William Whitaker 改变参数的话][2]

检查完所有参数后,系统会询问您是否要保存参数更改。下图显示了这一点。 [William Whitaker 的 WORDS 保存所有新的参数设置][3]

不要误以为可以输入“y”或“n”作为参数设置。您正在输入“y”或“n”关于是否更改当前参数设置。

将 Write_Output_To_File 参数设置为“y”后,您可以使用如下命令运行 Words:

@InputLatinWordList.txt

WORDS 将生成一个名为 WORD.out 的文件,您可以将其作为文本文件打开以重命名。

【讨论】:

    【解决方案3】:

    Ada.Command_Line 包用于在 Ada 程序启动时接收命令行参数。你感兴趣的很可能是Ada.Text_IO (chapter A.10 in the RM)。

    更具体地说,您需要声明一个变量来表示您要将标准输出重定向到的文件:

    Redirection : Ada.Text_IO.File_Type;
    

    然后创建并打开它:

    Ada.Text_IO.Create (File => Redirection,
                        Name => "latin.words",
                        Mode => Ada.Text_IO.Out_File);
    

    终于可以重定向标准输出了:

    Ada.Text_IO.Set_Output (File => Redirection);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 2021-01-13
      • 2011-04-08
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多