2016-07-11 24 views
1

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

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

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

也有助于知道ADA命令行重定向器是否创建新文件,或者我是否必须先自己做这件事。

我需要使用Ada PUT命令吗? Ada.Text_IO?如果是这样,你能指点我的资源来获得如何使用这些命令的语法吗?我以前从未使用过Ada。

有什么想法?谢谢你的帮助。

+2

我不知道'@“命令是什么意思。但是,Ada没有解释shell'<', '<<', '>','>>'重定向的功能,因为Ada程序(与从命令行执行的任何其他程序一样)从不会看到它们!如果你说'words> foo.txt',shell打开'foo.txt'输出,然后执行带有标准输出的'words' - 没有'words'知道它的任何内容 - 到'foo.txt',这是当单词退出时自动关闭。 –

回答

0

程序包Ada.Command_Line用于在Ada程序启动时接收命令行参数。你最感兴趣的是Ada.Text_IOchapter 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); 
1

William Whitaker's Words包括一个in teractive命令行解释器,但它看起来像要使用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"); 

image

+1

另请参阅此相关的[答案](http://stackoverflow.com/a/5735750/230513)。 – trashgod

0

我没想到先检查Github上,但在威廉·惠特克WORDS项目现场一些非常好的信息,包括用户指南在这里:

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

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

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

然后输入“#”改变参数和程序的模式,然后回车。您将按顺序显示每个参数,您可以输入“n”以保持当前参数设置(可以设置为yes或no)或“y”以更改参数设置(yes或no)。
[威廉惠特克的文字改变参数] [2]

当你通过所有的参数后,你会被问到是否要保存参数的变化。下图显示了这一点。 [威廉惠特克的话保存所有新的参数设置] [3]

不要因为认为你可以输入“y”或“n”作为参数设置混淆。您正在输入“y”或“n”来决定是否更改当前参数设置。

一旦你设置的参数Write_Output_To_File为“y”你可以用这样的命令来运行词:

@ InputLatinWordList.txt

的话会生成一个名为WORD.out,你可以文件打开为一个文本文件重命名它。

+0

'我试图发布链接到Github页面......'这应该是对你的答案的评论,而不是答案的一部分。 –