Uma linha longa em um único comando simples pode ser dividida ao escapar da nova linha assim:
rsync --archive --itemize-changes \
"$source" "$target"
A barra invertida deve ser o último caractere na linha.
O bit relevante do padrão POSIX:
2.2.1 Escape Character (Backslash)
A <backslash>
that is not quoted shall preserve the literal value of the following character, with the exception of a <newline>
. If a <newline>
follows the <backslash>
, the shell shall interpret this as line continuation. The <backslash>
and <newline>
shall be removed before splitting the input into tokens. Since the escaped <newline>
is removed entirely from the input and is not replaced by any white space, it cannot serve as a token separator.
Em um único comando composto, como um pipeline ou e / ou list etc., geralmente há pontos naturais para novas linhas que não precisam ser ignoradas (como &&
, ||
e |
são terminadores de comando):
[ -e "$pathname" ] &&
printf 'Removing %s\n' "$pathname" &&
rm "$pathname"
awk -f script.awk <infile |
grep -e "$pattern" |
cat header.txt - >result.txt