naksh 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/AUTHORS +1 -0
  2. data/COPYING +674 -0
  3. data/COPYING-DOCS +15 -0
  4. data/README.md +45 -0
  5. data/Rakefile +129 -0
  6. data/TODO +19 -0
  7. data/bin/naksh +2 -0
  8. data/data/default.mo +0 -0
  9. data/data/default.po +16 -0
  10. data/data/default2.mo +0 -0
  11. data/data/default2.po +27 -0
  12. data/data/starter.pot +29 -0
  13. data/docs/bash_flow.dia +0 -0
  14. data/docs/gtk_manual.txt +13 -0
  15. data/docs/master_plan.dia +0 -0
  16. data/docs/master_plan.png +0 -0
  17. data/docs/master_plan.svg +74 -0
  18. data/docs/master_plan.svgz +0 -0
  19. data/docs/userguide/en/about.xml +42 -0
  20. data/docs/userguide/en/gnu-fdl-1.2.xml +543 -0
  21. data/docs/userguide/en/naksh.xml +881 -0
  22. data/docs/userguide/en/naksh_start_window.png +0 -0
  23. data/docs/userguide/en/old_naksh.xml +180 -0
  24. data/docs/userguide/en/userguide-en.omf +37 -0
  25. data/lib/naksh.rb +165 -0
  26. data/lib/naksh/buffer.rb +153 -0
  27. data/lib/naksh/command_handling.rb +117 -0
  28. data/lib/naksh/commands/bash/README +2 -0
  29. data/lib/naksh/commands/bash/echo.nkc.rb +50 -0
  30. data/lib/naksh/commands/bsd.rb +25 -0
  31. data/lib/naksh/commands/dos.rb +25 -0
  32. data/lib/naksh/commands/fuse.rb +25 -0
  33. data/lib/naksh/commands/gnu.rb +30 -0
  34. data/lib/naksh/commands/gnu/README +2 -0
  35. data/lib/naksh/commands/gnu/cat.nkc.rb +50 -0
  36. data/lib/naksh/commands/gnu/cd.nkc.rb +11 -0
  37. data/lib/naksh/commands/gnu/echo.documentation.json +57 -0
  38. data/lib/naksh/commands/gnu/echo.documentation.rb +60 -0
  39. data/lib/naksh/commands/gnu/echo.nkc.rb +52 -0
  40. data/lib/naksh/commands/gnu/ls.nkc.rb +11 -0
  41. data/lib/naksh/commands/gnu/mv.nkc.rb +15 -0
  42. data/lib/naksh/commands/gnu/pwd.nkc.rb +11 -0
  43. data/lib/naksh/commands/naksh/addpath.nkc.rb +15 -0
  44. data/lib/naksh/commands/naksh/broken.nkc.rb +10 -0
  45. data/lib/naksh/commands/naksh/empty.nkc.rb +4 -0
  46. data/lib/naksh/commands/naksh/exit.nkc.rb +10 -0
  47. data/lib/naksh/commands/naksh/help.nkc.rb +21 -0
  48. data/lib/naksh/commands/naksh/man.nkc.rb +8 -0
  49. data/lib/naksh/commands/ruby.rb +31 -0
  50. data/lib/naksh/commands/unix.rb +131 -0
  51. data/lib/naksh/configuration/gconf.rb +51 -0
  52. data/lib/naksh/configuration/hash.rb +38 -0
  53. data/lib/naksh/defaults.rb +40 -0
  54. data/lib/naksh/history.rb +85 -0
  55. data/lib/naksh/interfaces.rb +59 -0
  56. data/lib/naksh/interfaces/fox.rb +49 -0
  57. data/lib/naksh/interfaces/gtk.rb +103 -0
  58. data/lib/naksh/interfaces/gtk/abtwin.rb +53 -0
  59. data/lib/naksh/interfaces/gtk/gnomeapp.rb +31 -0
  60. data/lib/naksh/interfaces/gtk/helpwin.rb +70 -0
  61. data/lib/naksh/interfaces/gtk/io.rb +94 -0
  62. data/lib/naksh/interfaces/gtk/mainwin.rb +56 -0
  63. data/lib/naksh/interfaces/gtk/mainwin/console.rb +121 -0
  64. data/lib/naksh/interfaces/gtk/mainwin/main_menu.rb +143 -0
  65. data/lib/naksh/interfaces/gtk/optwin.rb +78 -0
  66. data/lib/naksh/interfaces/tab.rb +58 -0
  67. data/lib/naksh/interfaces/wxw.rb +75 -0
  68. data/lib/naksh/interfaces/wxw/abtwin.rb +38 -0
  69. data/lib/naksh/interfaces/wxw/helpwin.rb +40 -0
  70. data/lib/naksh/interfaces/wxw/io.rb +61 -0
  71. data/lib/naksh/interfaces/wxw/mainwin.rb +42 -0
  72. data/lib/naksh/interfaces/wxw/mainwin/main_menu.rb +126 -0
  73. data/lib/naksh/interfaces/wxw/mainwin/sessions.rb +49 -0
  74. data/lib/naksh/interfaces/wxw/optwin.rb +37 -0
  75. data/lib/naksh/path_entry.rb +101 -0
  76. data/lib/naksh/regexp.rb +31 -0
  77. data/lib/naksh/session.rb +72 -0
  78. data/lib/naksh/stdlibext.rb +48 -0
  79. data/lib/naksh/syntax.rb +57 -0
  80. data/lib/naksh/syntax/bash.rb +219 -0
  81. data/lib/naksh/syntax/bash/antlr/bottomup.g +24 -0
  82. data/lib/naksh/syntax/bash/antlr/topdown.g +52 -0
  83. data/lib/naksh/syntax/bash/dhaka/evaluator.rb +353 -0
  84. data/lib/naksh/syntax/bash/dhaka/grammar.rb +71 -0
  85. data/lib/naksh/syntax/bash/dhaka/lexer.rb +52 -0
  86. data/lib/naksh/syntax/bash/treetop/bash.treetop +17 -0
  87. data/lib/old/abbr_call.rb +39 -0
  88. data/lib/old/autocomplete.rb +29 -0
  89. data/lib/old/command.rb +106 -0
  90. data/lib/old/command_holder.rb +75 -0
  91. data/lib/old/commands.rb +24 -0
  92. data/lib/old/old_executor.rb +95 -0
  93. data/lib/old/options.rb +31 -0
  94. data/lib/old/rush.rb +113 -0
  95. data/lib/old/sortissimo.rb +205 -0
  96. data/lib/old/systems.rb +25 -0
  97. data/lib/old/systems/ruby.rb +26 -0
  98. data/lib/old/un.rb +240 -0
  99. data/lib/rust/Rakefile +6 -0
  100. data/lib/rust/commands/builtins.rb +46 -0
  101. data/lib/rust/commands/builtins/cd.rb +17 -0
  102. data/lib/rust/commands/builtins/exit.rb +13 -0
  103. data/lib/rust/commands/builtins/help.rb +14 -0
  104. data/lib/rust/commands/builtins/parser.rb +13 -0
  105. data/lib/rust/commands/builtins/pwd.rb +13 -0
  106. data/lib/rust/commands/builtins/type.rb +13 -0
  107. data/lib/rust/commands/commands/ls.rb +13 -0
  108. data/lib/rust/commands/commands/read.rb +13 -0
  109. data/lib/rust/commands/commands/rm.rb +14 -0
  110. data/lib/rust/commands/commands/test.rb +20 -0
  111. data/lib/rust/helpers/array.rb +10 -0
  112. data/lib/rust/helpers/command_center.rb +78 -0
  113. data/lib/rust/helpers/constants.rb +58 -0
  114. data/lib/rust/helpers/io.rb +132 -0
  115. data/lib/rust/helpers/parser.rb +45 -0
  116. data/lib/rust/helpers/rush_control.rb +40 -0
  117. data/lib/rust/helpers/string.rb +50 -0
  118. data/lib/rust/helpers/trollop.rb +475 -0
  119. data/lib/rust/parsers/bash.rb +220 -0
  120. data/lib/rust/parsers/bash/stdlibext.rb +32 -0
  121. data/lib/rust/parsers/ren.rb +57 -0
  122. data/lib/rust/rust.rb +75 -0
  123. data/lib/rust/syntax/command.rb +23 -0
  124. data/lib/rust/syntax/paths.rb +31 -0
  125. data/lib/rust/syntax/pipes.rb +148 -0
  126. data/naksh.gemspec +55 -0
  127. data/test/naksh/arg_parser.rspec.rb +27 -0
  128. data/test/naksh/commands/bash/echo.rspec.rb +32 -0
  129. data/test/naksh/commands/sortlist +127 -0
  130. data/test/naksh/external_command.rspec.rb +46 -0
  131. data/test/naksh/send_error.rspec.rb +60 -0
  132. data/test/naksh/suggest.rspec.rb +38 -0
  133. data/test/naksh/syntax/bash.rspec.rb +69 -0
  134. data/test/naksh/syntax/bash/execute.rspec.rb +51 -0
  135. data/test/naksh/syntax/rspec.rb +63 -0
  136. data/test/run_rspecs.rb +20 -0
  137. metadata +217 -0
@@ -0,0 +1,117 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+
4
+ # This file is part of Naksh.
5
+ #
6
+ # Naksh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Naksh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Naksh. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+
20
+ class NotExpectedFiletypeError<TypeError
21
+ end
22
+ class CompatibilityError<ArgumentError
23
+ end
24
+ class NoCommandError<StandardError
25
+ include Naksh::NonCriticalError
26
+ end
27
+ class NkcLoadError<LoadError
28
+ include Naksh::NonCriticalError
29
+ end
30
+ #looking through this file, you're going to ask,
31
+ #sooner or later, what is nkc?
32
+ #NKC could be an acronym for Naksh Command,
33
+ #but that's not really important
34
+ #I have chosen to identify these ready-made commands
35
+ #by naming the files **.nkc.rb
36
+ #and generally calling them nkcs
37
+
38
+
39
+ module Naksh
40
+
41
+
42
+ # this is just what you expect it to be,
43
+ # an Array of path entries, see PathEntry
44
+ def Naksh.path
45
+ @path
46
+ end
47
+
48
+
49
+ #this is in case you want to save and swap paths, very useful
50
+ def Naksh.path=(new_path)
51
+ @path=new_path
52
+ end
53
+
54
+
55
+
56
+ #running a command made for us is easy as pie
57
+ def Naksh.run_nkc(location,args)
58
+ begin
59
+ prc=eval(File.new(location.to_s).read)
60
+ rescue Exception=>err
61
+ raise NkcLoadError,_('error in command: %s: `%s\'')%[location.sub(File.join(Naksh.config['/dir'],'lib'),''),err.to_s.sub(/\(eval\):\d+:in\s`run_nkc':\scompile error\s*/,"\n")]
62
+ end
63
+ raise NotExpectedFiletypeError,_("#{location} isn't a compatible NKC") unless prc.kind_of? Proc or not prc.lambda?
64
+ raise CompatibilityError,_(location.to_s+' must be written for a future version of Naksh; it requires too many arguments') unless prc.arity.abs==1
65
+ prc.call(args)
66
+ end
67
+
68
+
69
+ #this is for normal commands you can run from any shell
70
+ def Naksh.run_external_file(location,args)
71
+ $stderr.puts 'external command execution not yet implemented'
72
+ 0
73
+ end
74
+
75
+
76
+ def Naksh.send_command(command,args)
77
+ raise ArgumentError unless command.kind_of? String and args.kind_of? Array
78
+ @path.each do |path_entry|
79
+ case path_entry.type
80
+ when :nkc
81
+ return run_nkc(path_entry.location,args) if path_entry.name==command
82
+ when :external
83
+ return run_external_file(path_entry.location,args) if path_entry.name==command
84
+ when :nkc_dir
85
+ path_entry.location.children.each do |child|
86
+ begin
87
+ return run_nkc(child,args) if (/\A(.+)\.nkc\.rb\z/.match(File.basename(child))[1])==command
88
+ rescue Naksh::NonCriticalError=>error
89
+ Naksh.buffer.clear
90
+ Naksh.interface.err.print((_('Naksh: %s')%[error.to_s])<<"\n")
91
+ return false
92
+ rescue NoMethodError
93
+ end
94
+ end
95
+ when :external_dir
96
+ path_entry.location.children.each do |child|
97
+ return run_external_file(path_entry.location,args) if File.basename(child)==command and File.file? child
98
+ end
99
+ when :mixed_dir
100
+ path_entry.location.children.each do |child|
101
+ md=/\A(.+)\.nkc\.rb\z/.match(File.basename(child))
102
+ if md
103
+ return run_nkc(child,args) if md[1]==command
104
+ else
105
+ return run_external_file(child,args) if File.basename(child)==command and File.file? child
106
+ end
107
+ end
108
+ else
109
+ raise RuntimeError
110
+ end
111
+ end
112
+ raise NoCommandError,_("%s: command not found")%[command]
113
+ end
114
+
115
+ @path = Array.new
116
+
117
+ end
@@ -0,0 +1,2 @@
1
+ This folder (lib/naksh/commands/bash) is for pure GNU Bash builtin clones written as NKC Ruby scripts.
2
+ Documentation for the GNU Bash builtins can be found at <http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands>
@@ -0,0 +1,50 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+ # GPLv3
4
+ # This file is part of Naksh.
5
+
6
+ #http://www.gnu.org/software/bash/manual/bashref.html#index-echo-133
7
+
8
+ lambda do |input|
9
+ allow_escapes=false
10
+ suppress_line=false
11
+ input.collect! do |arg|
12
+ md=/\A\-([eEn]+)\z/.match(arg)
13
+ if md
14
+ md[1].each_byte do |c|
15
+ c=c.chr
16
+ case c
17
+ when 'e'
18
+ allow_escapes=true
19
+ when 'E'
20
+ allow_escapes=false
21
+ when 'n'
22
+ suppress_line=true
23
+ end
24
+ end
25
+ end
26
+ md ? nil : arg
27
+ end
28
+ result=input.compact.join(' ')
29
+ if allow_escapes
30
+ result.gsub! '\\a',"\a"
31
+ result.gsub! '\\b',"\b"
32
+ raise NotImplementedError if /\\c/.match(result)
33
+ result.gsub! '\\e',"\e"
34
+ result.gsub! '\\f',"\f"
35
+ result.gsub! '\\n',"\n"
36
+ result.gsub! '\\r',"\r"
37
+ result.gsub! '\\t',"\t"
38
+ result.gsub! '\\f',"\f"
39
+ result.gsub! '\\\\','\\'
40
+ result.gsub!(/\\0([0-7]{0,3})/) do |match|
41
+ match[2..-1].to_i(8).chr
42
+ end
43
+ result.gsub!(/\\x(\h{1,2})/) do |match|
44
+ match[2..-1].to_i(16).chr
45
+ end
46
+ end
47
+ result<<"\n" unless suppress_line
48
+ Naksh.buffer.print result
49
+ 0
50
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+
4
+ # This file is part of Naksh.
5
+ #
6
+ # Naksh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Naksh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Naksh. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ module Naksh
20
+ module CommandSets
21
+ #all of the commands as implemented in Bsd
22
+ module Bsd
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+
4
+ # This file is part of Naksh.
5
+ #
6
+ # Naksh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Naksh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Naksh. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ module Naksh
20
+ module CommandSets
21
+ #accept DOS commands, why not?, low priority
22
+ module Dos
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+
4
+ # This file is part of Naksh.
5
+ #
6
+ # Naksh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Naksh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Naksh. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ module Naksh
20
+ module CommandSets
21
+ #http://rubyforge.org/projects/fusefs/
22
+ module FuseFS
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+
4
+ # This file is part of Naksh.
5
+ #
6
+ # Naksh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Naksh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Naksh. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ module Naksh
20
+ module CommandSets
21
+ #all of the commands written by GNU
22
+ module Gnu
23
+ def Unix.sort(args=[])
24
+ a=Naksh.argument_parser(args,1..1/0,:b=>:ignore_leading_blanks,:d=>:dictionary_order,:f=>:ignore_case,:g=>:general_numeric_sort,:i=>:ignore_nonprinting,:M=>:month_sort,:n=>:numeric_sort,:r=>:reverse,:C=>:check,:k=>:key,:m=>:merge,:o=>:output,:s=>:stable,:S=>:buffer_size,:t=>:field_separator,:T=>:temporary_directory,:u=>:unique,:a=>:zero_terminated)
25
+ p a
26
+ raise NotImplementedError
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,2 @@
1
+ This folder (lib/naksh/commands/gnu) is for pure GNU core utility clones written as NKC Ruby scripts.
2
+ Documentation for the GNU core utilities can be found at <http://www.gnu.org/software/coreutils/manual>
@@ -0,0 +1,50 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+ # GPLv3
4
+ # This file is part of Naksh.
5
+
6
+ #http://www.gnu.org/software/coreutils/manual/coreutils.html#cat-invocation
7
+
8
+ lambda do |input|
9
+ show_line_endings = false
10
+ show_tabs = false
11
+ show_nonprinting = false
12
+ number_all_lines = false
13
+ number_nonblank_lines = false
14
+ squeeze_blank = false
15
+ input.collect! do |arg|
16
+ raise NotImplementedError
17
+ result=arg
18
+ if arg.start_with? '-'
19
+ case arg
20
+ when '--show-all'
21
+ show_line_endings = true
22
+ show_tabs = true
23
+ show_nonprinting = true
24
+ when '--number'
25
+ number_all_lines = true
26
+ when '--number-nonblank'
27
+ number_nonblank_lines = true
28
+ when '--show-ends'
29
+ show_line_endings = true
30
+ when '--show-nonprinting'
31
+ show_nonprinting = true
32
+ when '--squeeze-blank'
33
+ squeeze_blank = true
34
+ when '--help'
35
+ raise NotImplementedError
36
+ else
37
+ result=nil
38
+ end
39
+ end
40
+ result
41
+ end
42
+ input.compact!
43
+ line_number=0
44
+ while r=Naksh.buffer.gets
45
+ line_number+=1 if not number_nonblank_lines or r.empty?
46
+ r=line_number.pad(6,' ')<<r if number_all_lines
47
+ Naksh.buffer.puts r
48
+ end
49
+ 0
50
+ end
@@ -0,0 +1,11 @@
1
+ #!/usr/local/bin/ruby
2
+ # 2011 Mahmut Bulut
3
+ # GPLv3
4
+ # This file is part of Naksh.
5
+
6
+ require 'pathname'
7
+
8
+ lambda do |*a|
9
+ Naksh.config['/env/pwd']=(Pathname.new(Naksh.config['/env/pwd'])+a.last).realpath.to_s# rescue return 1
10
+ 0
11
+ end
@@ -0,0 +1,57 @@
1
+ {
2
+ "status" : "\\c is questionable",
3
+ "name" : "echo",
4
+ "short_description" : "Print a line of text",
5
+ "synopsis" : "echo [option]... [string]...",
6
+ "author" : "Mahmut Bulut",
7
+ "report_bugs" : "mailto:naksh-developers@rubyforge.org",
8
+ "copyright" : "2011 Mahmut Bulut GPLv3",
9
+ "last_modification" : "1198892637",
10
+ "designed_from" : "GNU coreutils 6.9 echo documentation",
11
+ "long_description" : "echo: Print a line of text
12
+
13
+ echo writes each given string to standard output, with a space between each and a newline after the last one. Synopsis:
14
+
15
+ echo [option]... [string]...
16
+
17
+ The program accepts the following options. Also see Common options. Options must precede operands, and the normally-special argument ‘--’ has no special meaning and is treated like any other string.
18
+
19
+ ‘-n’
20
+ Do not output the trailing newline.
21
+ ‘-e’
22
+ Enable interpretation of the following backslash-escaped characters in each string:
23
+
24
+ ‘\a’
25
+ alert (bell)
26
+ ‘\b’
27
+ backspace
28
+ ‘\c’
29
+ suppress trailing newline
30
+ ‘\f’
31
+ form feed
32
+ ‘\n’
33
+ new line
34
+ ‘\r’
35
+ carriage return
36
+ ‘\t’
37
+ horizontal tab
38
+ ‘\v’
39
+ vertical tab
40
+ ‘\\’
41
+ backslash
42
+ ‘\0nnn’
43
+ the eight-bit value that is the octal number nnn (zero to three octal digits)
44
+ ‘\nnn’
45
+ the eight-bit value that is the octal number nnn (one to three octal digits)
46
+ ‘\xhh’
47
+ the eight-bit value that is the hexadecimal number hh (one or two hexadecimal digits)
48
+
49
+
50
+ ‘-E’
51
+ Disable interpretation of backslash escapes in each string. This is the default. If -e and -E are both specified, the last one given takes effect.
52
+
53
+ If the POSIXLY_CORRECT environment variable is set, then when echo's first argument is not -n it outputs option-like arguments instead of treating them as options. For example, echo -ne hello outputs ‘-ne hello’ instead of plain ‘hello’.
54
+
55
+ POSIX does not require support for any options, and says that the behavior of echo is implementation-defined if any string contains a backslash or if the first argument is -n. Portable programs can use the printf command if they need to omit trailing newlines or output control characters or backslashes. See printf invocation.
56
+
57
+ An exit status of zero indicates success, and a nonzero value indicates failure."}
@@ -0,0 +1,60 @@
1
+ require 'scooter/email.rb'
2
+ require 'xri/url.rb'
3
+ #this is superior in content quality to the json version
4
+ {
5
+ :status => "\\c is questionable",
6
+ :name => "echo",
7
+ :short_description => "Print a line of text",
8
+ :synopsis => "echo [option]... [string]...",
9
+ :author => "Mahmut Bulut",
10
+ :report_bugs => "naksh-developers@rubyforge.org".to_email_address,
11
+ :copyright => "2011 Mahmut Bulut GPLv3",
12
+ :last_modification => Time.at(1198892637),
13
+ "designed_from" => "GNU coreutils 6.9 echo documentation",
14
+ :long_description => %q{echo: Print a line of text
15
+
16
+ echo writes each given string to standard output, with a space between each and a newline after the last one. Synopsis:
17
+
18
+ echo [option]... [string]...
19
+
20
+ The program accepts the following options. Also see Common options. Options must precede operands, and the normally-special argument ‘--’ has no special meaning and is treated like any other string.
21
+
22
+ ‘-n’
23
+ Do not output the trailing newline.
24
+ ‘-e’
25
+ Enable interpretation of the following backslash-escaped characters in each string:
26
+
27
+ ‘\a’
28
+ alert (bell)
29
+ ‘\b’
30
+ backspace
31
+ ‘\c’
32
+ suppress trailing newline
33
+ ‘\f’
34
+ form feed
35
+ ‘\n’
36
+ new line
37
+ ‘\r’
38
+ carriage return
39
+ ‘\t’
40
+ horizontal tab
41
+ ‘\v’
42
+ vertical tab
43
+ ‘\\’
44
+ backslash
45
+ ‘\0nnn’
46
+ the eight-bit value that is the octal number nnn (zero to three octal digits)
47
+ ‘\nnn’
48
+ the eight-bit value that is the octal number nnn (one to three octal digits)
49
+ ‘\xhh’
50
+ the eight-bit value that is the hexadecimal number hh (one or two hexadecimal digits)
51
+
52
+
53
+ ‘-E’
54
+ Disable interpretation of backslash escapes in each string. This is the default. If -e and -E are both specified, the last one given takes effect.
55
+
56
+ If the POSIXLY_CORRECT environment variable is set, then when echo's first argument is not -n it outputs option-like arguments instead of treating them as options. For example, echo -ne hello outputs ‘-ne hello’ instead of plain ‘hello’.
57
+
58
+ POSIX does not require support for any options, and says that the behavior of echo is implementation-defined if any string contains a backslash or if the first argument is -n. Portable programs can use the printf command if they need to omit trailing newlines or output control characters or backslashes. See printf invocation.
59
+
60
+ An exit status of zero indicates success, and a nonzero value indicates failure.}}