dcat: Concatenate File(s) to Standard Output or File
A Dart command-line and library implementation of the standard cat Unix utility, inspired by the Write command-line apps sample code.
Synopsis
dcat sequentially reads files, or standard input if none are given, writing them to standard output or file.
Command-Line Usage
dcat --help
Usage: dcat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e, --show-nonprinting-ends equivalent to -vE
-E, --show-ends display $ at end of each line
-h, --help display this help and exit
-n, --number number all output lines
-t, --show-nonprinting-tabs equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-s, --squeeze-blank suppress repeated empty output lines
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--version output version information and exit
Examples:
dcat f - g Output f's contents, then standard input, then g's contents.
dcat Copy standard input to standard output.
Compile Standalone Application
Linux / MacOS
dart compile exe -o bin/dcat bin/dcat.dart
Windows
dart compile exe bin/dcat.dart
Library Usage
dart pub add dcat
import 'package:dcat/dcat.dart';
final result = await cat(['path/to/file', 'path/to/otherfile]'],
File('path/to/outfile').openWrite());
if (result.isFailure) {
for (final error in result.errors) {
print('Error: ${error.message}');
}
}
The cat
function supports the following parameters:
Parameter | Description | Type |
---|---|---|
paths | The file paths. | String[] |
output | The standard output or file. | IOSink |
input | The standard input. | Stream |
showEnds | Same as -e |
bool |
numberNonBlank | Same as -b |
bool |
showLineNumbers | Same as -n |
bool |
showTabs | Same as -T |
bool |
squeezeBlank | Same as -s |
bool |
showNonPrinting | Same as -v |
bool |
paths
andoutput
are required.output
should be an IOSink such asstdout
or a File stream.input
can be stdin.
The remaining optional parameters are similar to the GNU cat utility.
A CatResult
object is returned which contains the exitCode
(exitSuccess
or exitFailure
) and errors
, if any:
final result =
await cat(['path/to/file'], stdout, showLineNumbers: true);
if (result.exitCode == exitSuccess) { // or result.isSuccess
// ...
} else {
for (final error in result.errors) {
stderr.writeln("Error with '${error.path}': ${error.message}");
}
}