[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.6 Quoting Member Names

When displaying member names, tar takes care to avoid ambiguities caused by certain characters. This is called name quoting. The characters in question are:

The exact way tar uses to quote these characters depends on the quoting style. The default quoting style, called escape (see below), uses backslash notation to represent control characters and backslash.

GNU tar offers seven distinct quoting styles, which can be selected using ‘--quoting-style’ option:

--quoting-style=style

Sets quoting style. Valid values for style argument are: literal, shell, shell-always, c, escape, locale, clocale.

These styles are described in detail below. To illustrate their effect, we will use an imaginary tar archive ‘arch.tar’ containing the following members:

# 1. Contains horizontal tabulation character.
a       tab
# 2. Contains newline character
a
newline
# 3. Contains a space
a space
# 4. Contains double quotes
a"double"quote
# 5. Contains single quotes
a'single'quote
# 6. Contains a backslash character:
a\backslash

Here is how usual ls command would have listed them, if they had existed in the current working directory:

$ ls
a\ttab
a\nnewline
a\ space
a"double"quote
a'single'quote
a\\backslash

Quoting styles:

literal

No quoting, display each character as is:

$ tar tf arch.tar --quoting-style=literal
./
./a space
./a'single'quote
./a"double"quote
./a\backslash
./a     tab
./a
newline
shell

Display characters the same way Bourne shell does: control characters, except ‘\t’ and ‘\n’, are printed using backslash escapes, ‘\t’ and ‘\n’ are printed as is, and a single quote is printed as ‘\'’. If a name contains any quoted characters, it is enclosed in single quotes. In particular, if a name contains single quotes, it is printed as several single-quoted strings:

$ tar tf arch.tar --quoting-style=shell
./
'./a space'
'./a'\''single'\''quote'
'./a"double"quote'
'./a\backslash'
'./a    tab'
'./a
newline'
shell-always

Same as ‘shell’, but the names are always enclosed in single quotes:

$ tar tf arch.tar --quoting-style=shell-always
'./'
'./a space'
'./a'\''single'\''quote'
'./a"double"quote'
'./a\backslash'
'./a    tab'
'./a
newline'
c

Use the notation of the C programming language. All names are enclosed in double quotes. Control characters are quoted using backslash notations, double quotes are represented as ‘\"’, backslash characters are represented as ‘\\’. Single quotes and spaces are not quoted:

$ tar tf arch.tar --quoting-style=c
"./"
"./a space"
"./a'single'quote"
"./a\"double\"quote"
"./a\\backslash"
"./a\ttab"
"./a\nnewline"
escape

Control characters are printed using backslash notation, and a backslash as ‘\\’. This is the default quoting style, unless it was changed when configured the package.

$ tar tf arch.tar --quoting-style=escape
./
./a space
./a'single'quote
./a"double"quote
./a\\backslash
./a\ttab
./a\nnewline
locale

Control characters, single quote and backslash are printed using backslash notation. All names are quoted using left and right quotation marks, appropriate to the current locale. If it does not define quotation marks, use ‘'’ as left and as right quotation marks. Any occurrences of the right quotation mark in a name are escaped with ‘\’, for example:

For example:

$ tar tf arch.tar --quoting-style=locale
'./'
'./a space'
'./a\'single\'quote'
'./a"double"quote'
'./a\\backslash'
'./a\ttab'
'./a\nnewline'
clocale

Same as ‘locale’, but ‘"’ is used for both left and right quotation marks, if not provided by the currently selected locale:

$ tar tf arch.tar --quoting-style=clocale
"./"
"./a space"
"./a'single'quote"
"./a\"double\"quote"
"./a\\backslash"
"./a\ttab"
"./a\nnewline"

You can specify which characters should be quoted in addition to those implied by the current quoting style:

--quote-chars=string

Always quote characters from string, even if the selected quoting style would not quote them.

For example, using ‘escape’ quoting (compare with the usual escape listing above):

$ tar tf arch.tar --quoting-style=escape --quote-chars=' "'
./
./a\ space
./a'single'quote
./a\"double\"quote
./a\\backslash
./a\ttab
./a\nnewline

To disable quoting of such additional characters, use the following option:

--no-quote-chars=string

Remove characters listed in string from the list of quoted characters set by the previous ‘--quote-chars’ option.

This option is particularly useful if you have added ‘--quote-chars’ to your TAR_OPTIONS (see TAR_OPTIONS) and wish to disable it for the current invocation.

Note, that ‘--no-quote-chars’ does not disable those characters that are quoted by default in the selected quoting style.


[ << ] [ < ] [ Up ] [ > ] [ >> ]

This document was generated on August 23, 2023 using texi2html 5.0.