[1120395] Это никак не связано с [1120994] grep[1120995] - это потому, что труба [1120996] |[1120997] перенаправляет стандартный поток вывода [1120998] stdout[1120999], в то время как сообщения [1121000] Permission denied[1121001] находятся в стандартном потоке ошибок [1121002] stderr[1121003]. Вы можете получить желаемый результат, объединив потоки с помощью [1121004]2>&1[1121005] (перенаправить поток, файловый дескриптор которого [1121006]2[1121007], в поток, файловый дескриптор которого [1121008]1[1121009]) так, чтобы [1121010]stderr[1121011], а также [1121012]stdout[1121013]. попадает на вход команды grep[12189], но было бы обычнее просто выбросить [1121014]stderr[1121015], перенаправив его на [1121016]/dev/null[12190]Используя |& вместо 2>&1 |[12191]Если вы посмотрите на Bash man-страницу, вы, вероятно, заметите эту рекламу: [12192]Если используется [1121290]|&[1121291], то стандартная ошибка команды связана со стандартным входом команды2 через трубу; это сокращение для [1121292]2>&1 |[1121293]. [12193]Так что вы также можете использовать эту конструкцию, если хотите соединить STDERR и STDOUT:[12194]
27.01.2020, 19:45
Ссылка