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


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

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


Вы уверены, что не существует уязвимости безопасности с использованием пробела после операторов? Сейчас мне сложно воспроизвести его, но есть распространенная уязвимость, когда злонамеренный пользователь может изменить предполагаемую операцию, используя файл, например, «fileName», когда предполагаемый файл был «fileName».
— CrippledTable
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.