Каково название функции оболочки'> (кладите для первого удара copyError.txt> &2)'?

Сообщение об ошибке: It must be at least 19 lines by 80 columns. довольно ясно здесь, необходимо будет увеличить терминал, к, по крайней мере, 19 lines высота, и 80 columns width.

11
21.09.2013, 20:26
2 ответа

От man bash:

   Process Substitution
       Process substitution is supported  on  systems  that  support
       named  pipes  (FIFOs)  or  the  /dev/fd method of naming open
       files.  It takes the form of <(list) or >(list).  The process
       list  is  run with its input or output connected to a FIFO or
       some file in /dev/fd.  The name of this file is passed as  an
       argument  to  the current command as the result of the expan‐
       sion.  If the >(list) form is used, writing to the file  will
       provide  input  for  list.   If the <(list) form is used, the
       file passed as an argument should be read to obtain the  out‐
       put of list.

Можно искать страницы справочника путем нажатия / и затем вводя Вашу строку поиска, которая является хорошим способом найти информацию как это. Это действительно, конечно, требует, чтобы Вы знали в который страница справочника искать :)

Необходимо заключить в кавычки ( хотя, потому что это имеет особое значение при поиске. Для нахождения соответствующего раздела в странице справочника удара ввести />\(.

11
27.01.2020, 19:57
  • 1
    я делаю много удара, таким образом, я сделал удар человека> bashman.txt и сделал его только для чтения. Теперь, я могу загрузить bashman.txt в другое окно в моем текстовом редакторе (только для чтения), и использовать средства всего редактора для поиска и копирования и вставки. –  Joe 28.09.2013, 00:54

>(tee copyError.txt >&2) на самом деле несколько различных функций:

  • >(...) назван 'заменой процесса'. Это создает файл именованного канала в /dev/fd и запись в тот файл предоставит вход процессу в круглых скобках.

  • > : В целом это называют 'перенаправлением вывода' и позволяет Вам отправлять стандартный вывод (> или 1>) или стандартная погрешность (2>) в файл или процесс. >&2 перенаправление вывода, но в этом случае, вывод tee отправляется в стандартную погрешность (это что &2 &1 стандартный вывод),

  • Без >, круглые скобки (()) запустит подоболочку. Выполнение команд в круглых скобках породит другую оболочку, которая будет только существовать столько, сколько те команды работают. Вы видите, как это работает, если Вы объявляете переменную в подоболочке:

    $ foo='Tom';(foo='Dick'; echo "Sub: $foo"); echo "Orig: $foo"
    Sub: Dick
    Orig: Tom
    

    Как Вы видите, $foo это было определено в подоболочке, является отдельным от того, определенного в родительской оболочке.

8
27.01.2020, 19:57
  • 1
    Нет >(...) не перенаправление. >(...) расширен до имени файла. Если Вы хотите перенаправить вывод к этому, Вам нужно > >(...) но >(...) в более общем плане используется, где перенаправления не могут использоваться. Команда OP может быть достигнута с традиционными каналами, нет потребности в замене процесса там. –  Stéphane Chazelas 21.09.2013, 20:11
  • 2
    @StephaneChazelas был бы хорош видеть решение, Вы имели в виду –  Dmitry Avtonomov 21.09.2013, 20:28
  • 3
    @chhh, cmd 2>&1 > output | tee err >&2 –  Stéphane Chazelas 21.09.2013, 20:31
  • 4
    @StephaneChazelas Спасибо! –  Dmitry Avtonomov 21.09.2013, 20:34
  • 5
    Первая половина этого ответа является неправильной, или по крайней мере очень вводящей в заблуждение; это верно это > может обозначить перенаправление вывода и это () может обозначить подоболочку, но >(...) на самом деле единственная, унитарная функция, которая не состоит из > и (). –  ruakh 22.09.2013, 11:45

Теги

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