Ответ на вопрос OP.
Это не было связано с рубином. Я открыл файл msfconsole и был недопустимый путь «require».Да, расстояние между словами и перенаправление не имеет значения. Это короткий ответ.
Подробности заключаются в том, что оболочка (для простоты давайте просто ссылаться только на bash) обрабатывает определенные символы и группы символов как «слова» и «метасимволы». Из руководства bash 4.3:
metacharacter Символ, который при некорректном выражении отделяет слова. Одно из следующего:| & ; ( ) < > space tab
И
metacharacter
word Последовательность символов, рассматриваемых как единое целое с помощью оболочка.
$ echo "hello world">/dev/null
Итак, когда мы делаем:
$ echo "hello world" > /dev/null
или
, это все еще 3 слова («привет мир» может быть считается одним словом оболочки, потому что оно цитируется), с одним метасимволом > и парами. Shell увидит его и сначала выполнит перенаправление (поэтому сначала он ищет метасимволы), а затем запускает команды в соответствии со своим стандартным поведением.
$ stat ./non-existent file 2>&1 > /dev/null
stat: cannot stat './non-existent': No such file or directory
stat: cannot stat 'file': No such file or directory
Однако порядок перенаправления имеет большое значение, особенно когда вы дублируете файловые дескрипторы с чем-то вроде 2>&1. Предположим, вы хотите отправить как stderr, так и stdin в одно и то же место. Это неправильный способ:
Вы делаете вывод файла 2 в том же месте, что и 1, который является вашим терминалом, но он уже это делал. Вот почему появляется stderr.
$ stat ./non-existent file > /dev/null 2>&1
Да, расстояние между словами и перенаправление не имеет значения. Это короткий ответ.
Подробности заключаются в том, что оболочка (для простоты давайте просто ссылаться только на bash) обрабатывает определенные символы и группы символов как «слова» и «метасимволы». Из руководства bash 4.3:
metacharacter Символ, который при некорректном выражении отделяет слова. Одно из следующего:| & ; ( ) < > space tab
И
metacharacter
word Последовательность символов, рассматриваемых как единое целое с помощью оболочка.
$ echo "hello world">/dev/null
Итак, когда мы делаем:
$ echo "hello world" > /dev/null
или
, это все еще 3 слова («привет мир» может быть считается одним словом оболочки, потому что оно цитируется), с одним метасимволом > и парами. Shell увидит его и сначала выполнит перенаправление (поэтому сначала он ищет метасимволы), а затем запускает команды в соответствии со своим стандартным поведением.
$ stat ./non-existent file 2>&1 > /dev/null
stat: cannot stat './non-existent': No such file or directory
stat: cannot stat 'file': No such file or directory
Однако порядок перенаправления имеет большое значение, особенно когда вы дублируете файловые дескрипторы с чем-то вроде 2>&1. Предположим, вы хотите отправить как stderr, так и stdin в одно и то же место. Это неправильный способ:
Вы делаете вывод файла 2 в том же месте, что и 1, который является вашим терминалом, но он уже это делал. Вот почему появляется stderr.
$ stat ./non-existent file > /dev/null 2>&1
Да, расстояние между словами и перенаправление не имеет значения. Это короткий ответ.
Подробности заключаются в том, что оболочка (для простоты давайте просто ссылаться только на bash) обрабатывает определенные символы и группы символов как «слова» и «метасимволы». Из руководства bash 4.3:
metacharacter Символ, который при некорректном выражении отделяет слова. Одно из следующего:| & ; ( ) < > space tab
И
metacharacter
word Последовательность символов, рассматриваемых как единое целое с помощью оболочка.
$ echo "hello world">/dev/null
Итак, когда мы делаем:
$ echo "hello world" > /dev/null
или
, это все еще 3 слова («привет мир» может быть считается одним словом оболочки, потому что оно цитируется), с одним метасимволом > и парами. Shell увидит его и сначала выполнит перенаправление (поэтому сначала он ищет метасимволы), а затем запускает команды в соответствии со своим стандартным поведением.
$ stat ./non-existent file 2>&1 > /dev/null
stat: cannot stat './non-existent': No such file or directory
stat: cannot stat 'file': No such file or directory
Однако порядок перенаправления имеет большое значение, особенно когда вы дублируете файловые дескрипторы с чем-то вроде 2>&1. Предположим, вы хотите отправить как stderr, так и stdin в одно и то же место. Это неправильный способ:
Вы делаете вывод файла 2 в том же месте, что и 1, который является вашим терминалом, но он уже это делал. Вот почему появляется stderr.
$ stat ./non-existent file > /dev/null 2>&1