shell: feature comparison table from uniq-faq
[sheet.git] / shell.inc.pl
1 use utf8;
2 use strict;
3
4 +{
5
6 agents => {
7         sh => {
8                 name => "Bourne shell",
9                 os => 'v7',
10         },
11         bash => {
12                 name => "GNU Bourne-Again SHell",
13                 os => 'linux',
14         },
15         csh => {
16                 name => "C Shell",
17         },
18         tcsh => {
19                 name => "Tenex C Shell",
20                 os => 'freebsd',
21         },
22         ksh => {
23                 name => "AT&T KornShell",
24         },
25         es => {
26                 name => "Extensible Shell",
27         },
28         rc => {
29                 name => "Run Commands",
30                 os => 'plan9',
31         },
32         zsh => {
33                 name => "Z shell",
34         },
35 },
36
37 feature => [
38
39         {
40                 title   => "Job control",
41                 description => "",
42                 links => [
43                         {
44                                 title =>
45                                 url => '',
46                         },
47                 ],
48                 support => {
49                         bash => "Y",
50                         csh  => "Y",
51                         es   => "N",
52                         ksh  => "Y",
53                         rc   => "N",
54                         sh   => "N",
55                         tcsh => "Y",
56                         zsh  => "Y",
57                 },
58         },
59         {
60                 support => {
61                         bash => "Y",
62                         csh  => "Y",
63                         es   => "N",
64                         ksh  => "Y",
65                         rc   => "N",
66                         sh   => "N",
67                         tcsh => "Y",
68                         zsh  => "Y",
69                 },
70                 title   => "Aliases",
71         },
72         {
73                 support => {
74                         bash => "Y",
75                         csh  => "N",
76                         es   => "Y",
77                         ksh  => "Y",
78                         rc   => "Y",
79                         sh   => "Y(1)",
80                         tcsh => "N",
81                         zsh  => "Y",
82                 },
83                 title   => "Shell functions",
84         },
85         {
86                 support => {
87                         bash => "Y",
88                         csh  => "N",
89                         es   => "Y",
90                         ksh  => "Y",
91                         rc   => "Y",
92                         sh   => "Y",
93                         tcsh => "N",
94                         zsh  => "Y",
95                 },
96                 title   => "\"Sensible\" Input/Output redirection",
97         },
98         {
99                 support => {
100                         bash => "Y",
101                         csh  => "Y",
102                         es   => "F",
103                         ksh  => "Y",
104                         rc   => "F",
105                         sh   => "N",
106                         tcsh => "Y",
107                         zsh  => "Y",
108                 },
109                 title   => "Directory stack",
110         },
111         {
112                 support => {
113                         bash => "Y",
114                         csh  => "Y",
115                         es   => "L",
116                         ksh  => "Y",
117                         rc   => "L",
118                         sh   => "N",
119                         tcsh => "Y",
120                         zsh  => "Y",
121                 },
122                 title   => "Command history",
123         },
124         {
125                 support => {
126                         bash => "Y",
127                         csh  => "N",
128                         es   => "L",
129                         ksh  => "Y",
130                         rc   => "L",
131                         sh   => "N",
132                         tcsh => "Y",
133                         zsh  => "Y",
134                 },
135                 title   => "Command line editing",
136         },
137         {
138                 support => {
139                         bash => "Y",
140                         csh  => "N",
141                         es   => "L",
142                         ksh  => "Y",
143                         rc   => "L",
144                         sh   => "N",
145                         tcsh => "Y(3)",
146                         zsh  => "Y",
147                 },
148                 title   => "Vi Command line editing",
149         },
150         {
151                 support => {
152                         bash => "Y",
153                         csh  => "N",
154                         es   => "L",
155                         ksh  => "Y",
156                         rc   => "L",
157                         sh   => "N",
158                         tcsh => "Y",
159                         zsh  => "Y",
160                 },
161                 title   => "Emacs Command line editing",
162         },
163         {
164                 support => {
165                         bash => "Y",
166                         csh  => "N",
167                         es   => "L",
168                         ksh  => "N",
169                         rc   => "L",
170                         sh   => "N",
171                         tcsh => "Y",
172                         zsh  => "Y",
173                 },
174                 title   => "Rebindable Command line editing",
175         },
176         {
177                 support => {
178                         bash => "Y",
179                         csh  => "Y",
180                         es   => "L",
181                         ksh  => "Y",
182                         rc   => "L",
183                         sh   => "N",
184                         tcsh => "Y",
185                         zsh  => "Y",
186                 },
187                 title   => "User name look up",
188         },
189         {
190                 support => {
191                         bash => "N",
192                         csh  => "N",
193                         es   => "F",
194                         ksh  => "N",
195                         rc   => "F",
196                         sh   => "N",
197                         tcsh => "Y",
198                         zsh  => "Y",
199                 },
200                 title   => "Login/Logout watching",
201         },
202         {
203                 support => {
204                         bash => "Y",
205                         csh  => "Y(1)",
206                         es   => "L",
207                         ksh  => "Y",
208                         rc   => "L",
209                         sh   => "N",
210                         tcsh => "Y",
211                         zsh  => "Y",
212                 },
213                 title   => "Filename completion",
214         },
215         {
216                 support => {
217                         bash => "Y",
218                         csh  => "Y(2)",
219                         es   => "L",
220                         ksh  => "Y",
221                         rc   => "L",
222                         sh   => "N",
223                         tcsh => "Y",
224                         zsh  => "Y",
225                 },
226                 title   => "Username completion",
227         },
228         {
229                 support => {
230                         bash => "Y",
231                         csh  => "Y(2)",
232                         es   => "L",
233                         ksh  => "Y",
234                         rc   => "L",
235                         sh   => "N",
236                         tcsh => "Y",
237                         zsh  => "Y",
238                 },
239                 title   => "Hostname completion",
240         },
241         {
242                 support => {
243                         bash => "Y",
244                         csh  => "N",
245                         es   => "L",
246                         ksh  => "N",
247                         rc   => "L",
248                         sh   => "N",
249                         tcsh => "Y",
250                         zsh  => "Y",
251                 },
252                 title   => "History completion",
253         },
254         {
255                 support => {
256                         bash => "N",
257                         csh  => "N",
258                         es   => "N",
259                         ksh  => "N",
260                         rc   => "N",
261                         sh   => "N",
262                         tcsh => "Y",
263                         zsh  => "Y",
264                 },
265                 title   => "Fully programmable Completion",
266         },
267         {
268                 support => {
269                         bash => "N(4)",
270                         csh  => "N",
271                         es   => "N",
272                         ksh  => "N",
273                         rc   => "N",
274                         sh   => "N",
275                         tcsh => "N(6)",
276                         zsh  => "N(6)",
277                 },
278                 title   => "Mh Mailbox completion",
279         },
280         {
281                 support => {
282                         bash => "N",
283                         csh  => "N",
284                         es   => "N",
285                         ksh  => "Y",
286                         rc   => "N",
287                         sh   => "N",
288                         tcsh => "N",
289                         zsh  => "Y",
290                 },
291                 title   => "Co Processes",
292         },
293         {
294                 support => {
295                         bash => "Y",
296                         csh  => "Y",
297                         es   => "N",
298                         ksh  => "Y",
299                         rc   => "N",
300                         sh   => "N",
301                         tcsh => "Y",
302                         zsh  => "Y",
303                 },
304                 title   => "Builtin artithmetic evaluation",
305         },
306         {
307                 support => {
308                         bash => "Y",
309                         csh  => "N",
310                         es   => "N",
311                         ksh  => "Y",
312                         rc   => "N",
313                         sh   => "N",
314                         tcsh => "Y",
315                         zsh  => "Y",
316                 },
317                 title   => "Can follow symbolic links invisibly",
318         },
319         {
320                 support => {
321                         bash => "N",
322                         csh  => "N",
323                         es   => "N",
324                         ksh  => "N",
325                         rc   => "N",
326                         sh   => "N",
327                         tcsh => "Y",
328                         zsh  => "Y",
329                 },
330                 title   => "Periodic command execution",
331         },
332         {
333                 support => {
334                         bash => "Y",
335                         csh  => "N",
336                         es   => "Y",
337                         ksh  => "Y",
338                         rc   => "Y",
339                         sh   => "N",
340                         tcsh => "Y",
341                         zsh  => "Y",
342                 },
343                 title   => "Custom Prompt (easily)",
344         },
345         {
346                 support => {
347                         bash => "N",
348                         csh  => "N",
349                         es   => "N",
350                         ksh  => "N",
351                         rc   => "N",
352                         sh   => "N",
353                         tcsh => "N",
354                         zsh  => "Y",
355                 },
356                 title   => "Sun Keyboard Hack",
357         },
358         {
359                 support => {
360                         bash => "N",
361                         csh  => "N",
362                         es   => "N",
363                         ksh  => "N",
364                         rc   => "N",
365                         sh   => "N",
366                         tcsh => "Y",
367                         zsh  => "Y",
368                 },
369                 title   => "Spelling Correction",
370         },
371         {
372                 support => {
373                         bash => "Y(2)",
374                         csh  => "N",
375                         es   => "Y",
376                         ksh  => "N",
377                         rc   => "Y",
378                         sh   => "N",
379                         tcsh => "N",
380                         zsh  => "Y",
381                 },
382                 title   => "Process Substitution",
383         },
384         {
385                 support => {
386                         bash => "sh",
387                         csh  => "csh",
388                         es   => "rc",
389                         ksh  => "sh",
390                         rc   => "rc",
391                         sh   => "sh",
392                         tcsh => "csh",
393                         zsh  => "sh",
394                 },
395                 title   => "Underlying Syntax",
396         },
397         {
398                 support => {
399                         bash => "Y",
400                         csh  => "N",
401                         es   => "Y",
402                         ksh  => "N(5)",
403                         rc   => "Y",
404                         sh   => "N",
405                         tcsh => "Y",
406                         zsh  => "Y",
407                 },
408                 title   => "Freely Available",
409         },
410         {
411                 support => {
412                         bash => "Y",
413                         csh  => "Y",
414                         es   => "F",
415                         ksh  => "Y",
416                         rc   => "F",
417                         sh   => "N",
418                         tcsh => "Y",
419                         zsh  => "Y",
420                 },
421                 title   => "Checks Mailbox",
422         },
423         {
424                 support => {
425                         bash => "N",
426                         csh  => "N",
427                         es   => "N",
428                         ksh  => "N",
429                         rc   => "N",
430                         sh   => "N",
431                         tcsh => "Y",
432                         zsh  => "Y",
433                 },
434                 title   => "Tty Sanity Checking",
435         },
436         {
437                 support => {
438                         bash => "Y",
439                         csh  => "N",
440                         es   => "Y",
441                         ksh  => "Y",
442                         rc   => "Y",
443                         sh   => "Y",
444                         tcsh => "Y",
445                         zsh  => "Y",
446                 },
447                 title   => "Can cope with large argument lists",
448         },
449         {
450                 support => {
451                         bash => "Y(7)",
452                         csh  => "Y",
453                         es   => "N",
454                         ksh  => "Y(7)",
455                         rc   => "N",
456                         sh   => "N",
457                         tcsh => "Y",
458                         zsh  => "Y",
459                 },
460                 title   => "Has non-interactive startup file",
461         },
462         {
463                 support => {
464                         bash => "Y",
465                         csh  => "Y",
466                         es   => "N",
467                         ksh  => "Y(7)",
468                         rc   => "N",
469                         sh   => "N",
470                         tcsh => "Y",
471                         zsh  => "Y",
472                 },
473                 title   => "Has non-login startup file",
474         },
475         {
476                 support => {
477                         bash => "Y",
478                         csh  => "Y",
479                         es   => "Y",
480                         ksh  => "N",
481                         rc   => "Y",
482                         sh   => "N",
483                         tcsh => "N",
484                         zsh  => "Y",
485                 },
486                 title   => "Can avoid user startup files",
487         },
488         {
489                 support => {
490                         bash => "Y",
491                         csh  => "N",
492                         es   => "N",
493                         ksh  => "Y",
494                         rc   => "N",
495                         sh   => "N",
496                         tcsh => "N",
497                         zsh  => "N",
498                 },
499                 title   => "Can specify startup file",
500         },
501         {
502                 support => {
503                         bash => "N",
504                         csh  => "N",
505                         es   => "Y",
506                         ksh  => "N",
507                         rc   => "N",
508                         sh   => "N",
509                         tcsh => "N",
510                         zsh  => "N",
511                 },
512                 title   => "Low level command redefinition",
513         },
514         {
515                 support => {
516                         bash => "N",
517                         csh  => "N",
518                         es   => "Y",
519                         ksh  => "N",
520                         rc   => "Y",
521                         sh   => "N",
522                         tcsh => "N",
523                         zsh  => "N",
524                 },
525                 title   => "Has anonymous functions",
526         },
527         {
528                 support => {
529                         bash => "N",
530                         csh  => "Y",
531                         es   => "Y",
532                         ksh  => "Y",
533                         rc   => "Y",
534                         sh   => "N",
535                         tcsh => "Y",
536                         zsh  => "Y",
537                 },
538                 title   => "List Variables",
539         },
540         {
541                 support => {
542                         bash => "Y",
543                         csh  => "N",
544                         es   => "Y",
545                         ksh  => "Y",
546                         rc   => "Y",
547                         sh   => "Y",
548                         tcsh => "N",
549                         zsh  => "Y",
550                 },
551                 title   => "Full signal trap handling",
552         },
553         {
554                 support => {
555                         bash => "Y",
556                         csh  => "Y",
557                         es   => "F",
558                         ksh  => "Y",
559                         rc   => "N",
560                         sh   => "N",
561                         tcsh => "Y",
562                         zsh  => "Y",
563                 },
564                 title   => "File no clobber ability",
565         },
566         {
567                 support => {
568                         bash => "Y",
569                         csh  => "N",
570                         es   => "Y",
571                         ksh  => "Y",
572                         rc   => "Y",
573                         sh   => "N",
574                         tcsh => "N",
575                         zsh  => "Y",
576                 },
577                 title   => "Local variables",
578         },
579         {
580                 support => {
581                         bash => "N",
582                         csh  => "N",
583                         es   => "Y",
584                         ksh  => "N",
585                         rc   => "N",
586                         sh   => "N",
587                         tcsh => "N",
588                         zsh  => "N",
589                 },
590                 title   => "Lexically scoped variables",
591         },
592         {
593                 support => {
594                         bash => "N",
595                         csh  => "N",
596                         es   => "Y",
597                         ksh  => "N",
598                         rc   => "N",
599                         sh   => "N",
600                         tcsh => "N",
601                         zsh  => "N",
602                 },
603                 title   => "Exceptions",
604         },
605
606 ],
607
608 }