dart-shlex is a Dart module for quoting and parsing shell commands.
This library is a port of the node-shelex traying to keep as close to the original as possible.
The following is verbatim quote from the original documentation.
The API was inspired by the
shlexmodule from the Python Standard Library. However, the Python implementation is fairly complex, and supports a confusing matrix of modes that is not replicated here.node-shlexalways operates in what the Python module calls "POSIX mode."
As of version 2.0.0, Bash's ANSI C strings (
$'x') and locale-specific translation strings ($"x") are supported. This diverges from the Pythonshlexbehavior but makes parsing more accurate.
Note that
node-shlexdoes not attempt to split on or otherwise parse operators (such as2>/dev/null), and it does not perform variable interpolation.
import 'package:shlex/shlex.dart' as shlex;
main() {
shlex.quote("abc"); // returns: abc
shlex.quote("abc def"); // returns: 'abc def'
shlex.quote("can't"); // returns: 'can'"'"'t'
}import 'package:shlex/shlex.dart' as shlex;
main() {
shlex.split('ls -al /') // returns: [ 'ls', '-al', '/' ]
shlex.split('rm -f "/Volumes/Macintosh HD"') // returns [ 'rm', '-f', '/Volumes/Macintosh HD' ]
}