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


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.