GNU tar 1.34: 6.6 Quoting Member Names
[ << ] | [ < ] | [ 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:
- Non-printable control characters: CharacterASCIICharacter name \a7Audible bell \b8Backspace \f12Form feed \n10New line \r13Carriage return \t9Horizontal tabulation \v11Vertical tabulation
- Space (ASCII 32)
- Single and double quotes (‘
'
’ and ‘"
’) - Backslash (‘
\
’)
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 ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on March 24, 2021 using texi2html 5.0.