Module

Shellwords

Inheritance

This module manipulates strings according to the word parsing rules of the UNIX Bourne shell.

The shellwords() function was originally a port of shellwords.pl, but modified to conform to POSIX / SUSv3 (IEEE Std 1003.1-2001).

Authors:

  - Wakou Aoyama
  - Akinori MUSHA <knu@iDaemons.org>

Contact:

  - Akinori MUSHA <knu@iDaemons.org> (current maintainer)

Methods

Instance

Visibility Signature
public escape (str)
public join (array)
public shellescape (str)
public shelljoin (array)
public shellsplit (line)
public shellwords (line)
public split (line)

Instance Method Detail

escape(str)

Alias for shellescape

join(array)

Alias for shelljoin

shellescape(str)

Escapes a string so that it can be safely used in a Bourne shell command line.

Note that a resulted string should be used unquoted and is not intended for use in double quotes nor in single quotes.

  open("| grep #{Shellwords.escape(pattern)} file") { |pipe|
    # ...
  }

+String#shellescape+ is a shorthand for this function.

  open("| grep #{pattern.shellescape} file") { |pipe|
    # ...
  }

shelljoin(array)

Builds a command line string from an argument list array joining all elements escaped for Bourne shell and separated by a space.

  open('|' + Shellwords.join(['grep', pattern, *files])) { |pipe|
    # ...
  }

+Array#shelljoin+ is a shorthand for this function.

  open('|' + ['grep', pattern, *files].shelljoin) { |pipe|
    # ...
  }

shellsplit(line)

Splits a string into an array of tokens in the same way the UNIX Bourne shell does.

  argv = Shellwords.split('here are "two words"')
  argv #=> ["here", "are", "two words"]

+String#shellsplit+ is a shorthand for this function.

  argv = 'here are "two words"'.shellsplit
  argv #=> ["here", "are", "two words"]

shellwords(line)

Alias for shellsplit

split(line)

Alias for shellsplit