Перенаправление вывода и пробелы

9

Я параноик по этому поводу, но, надеюсь, это простой вопрос:

Есть ли разница между

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

а также

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

то есть имеет ли значение, если у меня есть пробелы, заполняющие символы канала (|) и перенаправления (>)? Я действительно параноик, что наличие пробелов в них, так или иначе, попадет в выходной файл, когда я этого не хочу. Кто-нибудь может уточнить? (Использование Ubuntu 12 / bash, если это имеет значение.)

Магнус
источник
Единственные различия: а) косметическое и б) удобство при редактировании командных строк в bash - например, «слово» отделяется пробелами, поэтому без пробелов вокруг |или >последующего ввода Ctrl-Wдля удаления предыдущего «слова» удалялось бы больше, чем вы, вероятно, хотели. то же самое для курсора-движения нажатия клавиш , как Esc-fи Esc-bт.д.
саз

Ответы:

8

В командной строке оболочки пробелы без кавычек служат только для разделения слов во время синтаксического анализа команд. Они не передаются ни в аргументах, которые видит команда, ни в стандартном потоке ввода.

jw013
источник
Вы уверены, что не существует уязвимости безопасности с использованием пробела после операторов? Сейчас мне сложно воспроизвести его, но есть распространенная уязвимость, когда злонамеренный пользователь может изменить предполагаемую операцию, используя файл, например, «fileName», когда предполагаемый файл был «fileName».
CrippledTable