Обратная косая черта в команде поиска - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть файл ksh, где у меня есть следующие строки кода

   find . \
    \( \
        -name \*.tar -o \
        -name \*.gz -o \
        -name log.\* -o \
        -name out.\*  \
\) \

Мне интересно знать цель этих обратных косых черт.Это для того, чтобы избежать чего-то?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Обратная косая черта имеет здесь две цели:

  • В конце строки: пусть оболочка игнорирует символ новой строки, т.е. команда продолжается на следующей строке.Без него оболочка будет думать, что новая команда начинается со следующей строки.

  • Внутри строки: экранируйте следующий символ, чтобы оболочка не анализировала его.Эти символы обычно имеют особое значение для оболочки.Обратная косая черта удаляет это значение, так что символ передается в find «как есть».Подробнее об этом читайте здесь: Какие символы необходимо экранировать при использовании Bash? .Речь идет о Bash, но KSH похож.

1 голос
/ 05 апреля 2019

переписано в одну строку:

find . \( -name "*.tar" -o -name "*.gz" -o -name "log.*" -o -name "out.*" \)

Btw. last -o (должен следовать параметр) и обратный слеш неправильны в вашем примере

...