используя grep с трубкой и амперсандом для фильтрации ошибок из find

Я использую cygwin для поиска файла в cygdrive.

Однако мне нужно отключить отклоненные разрешения (в противном случае результаты будут скрыты в сообщениях об ошибках). Следующая команда работает:

find -name 'myfile.*' |& grep -v "Permission denied"

Я не понимаю, почему амперсанд должен быть помещен в эту команду, ожидал, что это сработает, но это не так.

find -name 'myfile.*' | grep -v "Permission denied"

Пожалуйста, объясните значение амперсанда.

18
задан 7 February 2011 в 10:33

30 ответов

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 )  2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

15
ответ дан 25 May 2018 в 23:08
  • 1
    Кажется, что только bash4 + wiki.bash-hackers.org/bash4#redirection – Luke Exton 22 March 2016 в 13:08
  • 2
    @LukeExton Да. В других оболочках 2>&1 | можно использовать вместо |& (т. Е. Можно явно перенаправить stderr в stdout, а затем передать это следующей команде в конвейере). – Eliah Kagan 10 January 2017 в 23:29

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 ) 2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

16
ответ дан 25 July 2018 в 22:32

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 ) 2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

17
ответ дан 31 July 2018 в 10:39

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 ) 2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

17
ответ дан 31 July 2018 в 11:41

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 ) 2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 2 August 2018 в 03:58

В Unix-подобных системах есть два выходных пути, которые, если оставить немодифицированным, отправят вывод на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство сбоев и ошибок.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

From ] GNU Bash manual section 3.2.2 Трубопроводы :

Если используется ' | & amp; ', Стандартная ошибка command1 , в дополнение к ее стандартным выходам, подключена к стандарту ввода [2] через трубу; это сокращение для 2 & amp; 1 | . Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, заданных командой.

Кроме того, как указывает geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

  find -name 'myfile. *' 2 & gt;  / dev / null  

или, возможно,

  find -name 'myfile. *' 2 & gt;  / tmp / errorlog  

И обратите внимание, что если у вас есть команды команд, такие как find , передающие свой вывод на xargs , вы бы необходимо поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

  (find | egrep ^ [RS]. [0-9] + /. Svg] | xargs head -1) 2 & gt;  / dev / null  

Если вы оставили круглые скобки и сделали это вместо этого -

  find |  egrep ^ [RS]. [0-9] + /. svg] |  xargs head -1 2 & gt;  / dev / null  

вы все равно увидите, что разрешения отклонили ошибки из find или egrep, но stderr будет перенаправлен на xargs.

Как вы видели, вы вероятно, выкинет stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 4 August 2018 в 20:01

В Unix-подобных системах есть два выходных пути, которые, если оставить неизмененным, будут отправлять выходные данные на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство отказов и условий ошибки.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

Из раздела руководства GNU Bash 3.2.2 Трубопроводы:

Если используется «|&», стандартная ошибка command1, в дополнение к ее стандартным выводам, подключается к стандартным входам команды 2 через трубу; это сокращение для 2>&1 |. Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, указанных в команде.

Кроме того, как указывает Geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

find -name 'myfile.*' 2> /dev/null

или, возможно,

find -name 'myfile.*' 2> /tmp/errorlog

И обратите внимание, что если у вас есть команды команд, например find, передающие свой вывод на xargs, вам нужно будет поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

(find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 ) 2> /dev/null

Если вы оставили круглые скобки и сделали это вместо этого -

find | egrep ^[RS].[0-9]+/.svg] | xargs head -1 2> /dev/null

, вы все равно увидели бы, что разрешения отклонили ошибки из find или egrep, но stderr было бы перенаправлено на xargs.

Как вы видели, вы, вероятно, выбросите stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 6 August 2018 в 04:02

В Unix-подобных системах есть два выходных пути, которые, если оставить немодифицированным, отправят вывод на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство сбоев и ошибок.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

From ] GNU Bash manual section 3.2.2 Трубопроводы :

Если используется ' | & amp; ', Стандартная ошибка command1 , в дополнение к ее стандартным выходам, подключена к стандарту ввода [2] через трубу; это сокращение для 2 & amp; 1 | . Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, заданных командой.

Кроме того, как указывает geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

  find -name 'myfile. *' 2 & gt;  / dev / null  

или, возможно,

  find -name 'myfile. *' 2 & gt;  / tmp / errorlog  

И обратите внимание, что если у вас есть команды команд, такие как find , передающие свой вывод на xargs , вы бы необходимо поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

  (find | egrep ^ [RS]. [0-9] + /. Svg] | xargs head -1) 2 & gt;  / dev / null  

Если вы оставили круглые скобки и сделали это вместо этого -

  find |  egrep ^ [RS]. [0-9] + /. svg] |  xargs head -1 2 & gt;  / dev / null  

вы все равно увидите, что разрешения отклонили ошибки из find или egrep, но stderr будет перенаправлен на xargs.

Как вы видели, вы вероятно, выкинет stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 7 August 2018 в 22:01

В Unix-подобных системах есть два выходных пути, которые, если оставить немодифицированным, отправят вывод на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство сбоев и ошибок.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

From ] GNU Bash manual section 3.2.2 Трубопроводы :

Если используется ' | & amp; ', Стандартная ошибка command1 , в дополнение к ее стандартным выходам, подключена к стандарту ввода [2] через трубу; это сокращение для 2 & amp; 1 | . Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, заданных командой.

Кроме того, как указывает geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

  find -name 'myfile. *' 2 & gt;  / dev / null  

или, возможно,

  find -name 'myfile. *' 2 & gt;  / tmp / errorlog  

И обратите внимание, что если у вас есть команды команд, такие как find , передающие свой вывод на xargs , вы бы необходимо поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

  (find | egrep ^ [RS]. [0-9] + /. Svg] | xargs head -1) 2 & gt;  / dev / null  

Если вы оставили круглые скобки и сделали это вместо этого -

  find |  egrep ^ [RS]. [0-9] + /. svg] |  xargs head -1 2 & gt;  / dev / null  

вы все равно увидите, что разрешения отклонили ошибки из find или egrep, но stderr будет перенаправлен на xargs.

Как вы видели, вы вероятно, выкинет stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 10 August 2018 в 10:15

В Unix-подобных системах есть два выходных пути, которые, если оставить немодифицированным, отправят вывод на ваш экран. Стандартная ошибка (или stderr) - это та, которая фиксирует большинство сбоев и ошибок.

Чтобы передать сообщение об отказе в разрешении в stderr в тот же выходной поток, что и «регулярный вывод», вы должны объединить эти два. В вашем примере, чтобы ваш grep -v правильно работал на нем, вы комбинируете stdout (стандартный вывод) и stderr с тайным синтаксисом, который вы видите.

From ] GNU Bash manual section 3.2.2 Трубопроводы :

Если используется ' | & amp; ', Стандартная ошибка command1 , в дополнение к ее стандартным выходам, подключена к стандарту ввода [2] через трубу; это сокращение для 2 & amp; 1 | . Это неявное перенаправление стандартной ошибки на стандартный вывод выполняется после любых переназначений, заданных командой.

Кроме того, как указывает geirha, если вы хотите просто избавиться от вывода stderr, вы хотели бы сделать что-то вроде

  find -name 'myfile. *' 2 & gt;  / dev / null  

или, возможно,

  find -name 'myfile. *' 2 & gt;  / tmp / errorlog  

И обратите внимание, что если у вас есть команды команд, такие как find , передающие свой вывод на xargs , вы бы необходимо поместить весь конвейер команд в круглые скобки, чтобы захватить вывод из всех компонентов команды. Например,

  (find | egrep ^ [RS]. [0-9] + /. Svg] | xargs head -1) 2 & gt;  / dev / null  

Если вы оставили круглые скобки и сделали это вместо этого -

  find |  egrep ^ [RS]. [0-9] + /. svg] |  xargs head -1 2 & gt;  / dev / null  

вы все равно увидите, что разрешения отклонили ошибки из find или egrep, но stderr будет перенаправлен на xargs.

Как вы видели, вы вероятно, выкинет stderr только после просмотра его содержимого во время тестового прогона.

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

18
ответ дан 13 August 2018 в 16:39
  • 1
    Кажется, что только bash4 + wiki.bash-hackers.org/bash4#redirection – Luke Exton 22 March 2016 в 13:08
  • 2
    @LukeExton Да. В других оболочках 2 & amp; 1 | может использоваться вместо | & amp; (т. Е. Можно явно перенаправить stderr в stdout, а затем передать это на следующую команда в конвейере). – Eliah Kagan 10 January 2017 в 23:29

Сообщения об ошибках записываются в stderr, а не в stdout, но | выполняет только stdout.

Вероятно, вы хотите |&, stderr .

4
ответ дан 25 May 2018 в 23:08

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.[!d1 ]

1
ответ дан 25 May 2018 в 23:08

Сообщения об ошибках записываются в stderr , а не stdout , но | только для труб stdout .

Вероятно, вы захотите | & amp; , , который соединяет stderr, а также stdout .

6
ответ дан 25 July 2018 в 22:32

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 25 July 2018 в 22:32

Сообщения об ошибках записываются в stderr, а не в stdout, но | выполняет только stdout.

Вероятно, вы хотите |&, stderr .

6
ответ дан 31 July 2018 в 10:39

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 31 July 2018 в 10:39

Сообщения об ошибках записываются в stderr, а не в stdout, но | выполняет только stdout.

Вероятно, вы хотите |&, stderr .

6
ответ дан 31 July 2018 в 11:41

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 31 July 2018 в 11:41

Сообщения об ошибках записываются в stderr, а не в stdout, но | выполняет только stdout.

Вероятно, вы хотите |&, stderr .

6
ответ дан 2 August 2018 в 03:58

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 2 August 2018 в 03:58

Сообщения об ошибках записываются в stderr, а не в stdout, но | выполняет только stdout.

Вероятно, вы хотите |&, stderr .

6
ответ дан 4 August 2018 в 20:01

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 4 August 2018 в 20:01

Сообщения об ошибках записываются в stderr , а не stdout , но | только для труб stdout .

Вероятно, вы захотите | & amp; , , который соединяет stderr, а также stdout .

6
ответ дан 6 August 2018 в 04:02

Если вы хотите игнорировать сообщения об ошибках, просто переадресовывайте stderr в /dev/null.

find . -name 'myfile.*' -print 2>/dev/null

Кроме того, рассмотрите возможность чтения http://mywiki.wooledge.org/UsingFind.

1
ответ дан 6 August 2018 в 04:02

Если вы хотите игнорировать сообщения об ошибках, просто перенаправьте stderr на /dev/null.

  find.  -name 'myfile. *' -print 2 & gt; / dev / null  

Также рассмотрим чтение http://mywiki.wooledge.org/UsingFind . [ ! d3]

1
ответ дан 7 August 2018 в 22:01

Сообщения об ошибках записываются в stderr , а не stdout , но | только для труб stdout .

Вероятно, вы захотите | & amp; , , который соединяет stderr, а также stdout .

6
ответ дан 7 August 2018 в 22:01

Если вы хотите игнорировать сообщения об ошибках, просто перенаправьте stderr на /dev/null.

  find.  -name 'myfile. *' -print 2 & gt; / dev / null  

Также рассмотрим чтение http://mywiki.wooledge.org/UsingFind . [ ! d3]

1
ответ дан 10 August 2018 в 10:15

Сообщения об ошибках записываются в stderr , а не stdout , но | только для труб stdout .

Вероятно, вы захотите | & amp; , , который соединяет stderr, а также stdout .

6
ответ дан 10 August 2018 в 10:15

Если вы хотите игнорировать сообщения об ошибках, просто перенаправьте stderr на /dev/null.

  find.  -name 'myfile. *' -print 2 & gt; / dev / null  

Также рассмотрим чтение http://mywiki.wooledge.org/UsingFind . [ ! d3]

1
ответ дан 13 August 2018 в 16:39

Сообщения об ошибках записываются в stderr , а не stdout , но | только для труб stdout .

Вероятно, вы захотите | & amp; , , который соединяет stderr, а также stdout .

6
ответ дан 13 August 2018 в 16:39

Другие вопросы по тегам:

Похожие вопросы: