Примечание редактора :
- >(…)
замена процесса , который является нестандартная функция оболочки из [1 121] [приблизительно 1 121] совместимые с POSIX оболочки: bash
, ksh
, zsh
.
- Этот ответ случайно отправляет, вывод обрабатывают вывод замены через конвейер также : echo 123 | tee >(tr 1 a) | tr 1 b
.
- Вывод от замен процесса будет непредсказуемо чередован, и, кроме zsh
, конвейер может завершиться, прежде чем команды в >(…)
делают.
В Unix (или на Mac), используйте tee
команда :
$ echo 123 | tee >(tr 1 a) >(tr 1 b) >/dev/null
b23
a23
Обычно Вы использовали бы tee
для перенаправления вывода в несколько файлов, но использующий> (...) можно перенаправить к другому процессу. Так, в целом,
$ proc1 | tee >(proc2) ... >(procN-1) >(procN) >/dev/null
сделает то, что Вы хотите.
окна Under, я не думаю, что встроенная оболочка имеет эквивалент. Microsoft Windows PowerShell имеет tee
команда все же.
Это одна из ситуаций, когда это не имеет смысла, пока вы не поймете, что альтернативы не имеют смысла.
Как вы, вероятно, знаете, поля определяют расстояние между элементами, это а не «внешнее заполнение», окружающее каждый элемент. Если два элемента с полем 20 пикселей находятся рядом друг с другом, расстояние между ними составляет 20 пикселей, а не 40 пикселей.
Поскольку поле - это расстояние до другого элемента, имеет смысл, что расстояние от элемента до окружающих элементов , а не до границы родительского элемента.
Если поле будет считаться до границы родительского элемента, размещение элементов в элементе div
приведет к дополнительному интервалу между элементами, даже несмотря на то, что ] div
не имеет полей или отступов.
Когда это может быть полезно?
Простейший пример: список абзацев и заголовков, каждый с верхним полем
и нижним полем
. Вам нужно поле сверху и снизу статьи, а также между различными элементами.
При свертывании полей вы можете обойтись без установки специальных полей для первого или последнего элемента (НЕ является частью исходной спецификации CSS!) Или набивка контейнера.
Но я согласен, в целом, это бессмысленная функция.
Рассмотрим основной текст, содержащий несколько абзацев. Вы хотите, чтобы каждый абзац был отделен 2em, и вы хотите, чтобы первый абзац был отделен от предыдущего содержимого на 2em, а последний абзац отделялся от следующего содержимого на 2em.
Это легко сделать с помощью следующего CSS, потому что верхнее и нижнее поля, разделяющие абзацы, сжимаются:
p {
margin-top: 2em
margin-bottom: 2em;
}
Если поля не сжимаются, это приведет к тому, что поля будут разделены пробелом 4em, а не 2em. Без сжатия полей единственный способ добиться желаемого эффекта - это установить некоторые дополнительные правила для первого и последнего абзацев,