So does a X server start in a display or a screen?
Я не знаю, как сказать это иначе, чем раньше; во всех смыслах и целях X-сервер — это дисплей («дисплей» как концепция X Window, которую, как я понимаю, мы здесь обсуждаем ). X-сервер не запускается на дисплее, он является дисплеем. Вы можете представить это как «X-сервер запускает дисплей» и «дисплей содержит один или несколько экранов».
Переменная DISPLAY
может сбивать с толку, поскольку, как вы говорите, она может указывать больше, чем отображение X.
Which one is correct?
Диаграмма; см. объяснение ниже.
Does a display server start in a display or a screen or a monitor?
В документации X Window «сервер отображения» является синонимом X-сервера, поэтому применимо вышесказанное.
Следует учитывать, что документация X Window была написана давным-давно, в то время, когда виртуальные дисплеи (мало использовались, если вообще использовались ), и когда были установлены несколько -мониторов. были сложными и часто включали несколько X-экранов, а иногда даже несколько X-серверов. Таким образом, в документации X экран обычно является монитором. Однако быстро стало очевидно, что разбивать несколько мониторов на несколько экранов раздражает, и как только видеокарты стали способны обрабатывать несколько мониторов как единое целое, модели использования изменились, так что экраны X, как правило, покрывали несколько мониторов.
Is a framebuffer associated with a display or a screen or a monitor?
«Фреймбуфер» — несколько расплывчатый термин, имеющий несколько определений. В контексте комментария, который вы цитируете, он связан с экраном, и вы можете увидеть это с помощью Xvfb
:, если вы скажете ему использовать сопоставленные файлы памяти -для своих кадровых буферов и определите несколько экранов, вы посмотрите, как он использует один файл фреймбуфера на экран.
Предполагая, что файлы являются допустимыми файлами JSON, т. е. файл content.json
выглядит так
[
{ "interval": 1, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 2, "expired": 4, "ignored": [ ".git", ".p4" ]}
]
или подобное
{ "interval": 1, "expired": 3, "ignored": [ ".git", ".p4" ]}
{ "interval": 2, "expired": 4, "ignored": [ ".git", ".p4" ]}
и этот config.json
выглядит как
[
{ "interval": 3, "expired": 3, "ignored": [ ".git", ".p4" ]},
{ "interval": 4, "expired": 4, "ignored": [ ".git", ".p4" ]}
]
или подобное
{ "interval": 3, "expired": 3, "ignored": [ ".git", ".p4" ]}
{ "interval": 4, "expired": 4, "ignored": [ ".git", ".p4" ]}
... затем jq
можно использовать для простого объединения двух массивов в требуемую структуру JSON:
$ jq -s flatten content.json config.json
[
{
"interval": 1,
"expired": 3,
"ignored": [
".git",
".p4"
]
},
{
"interval": 2,
"expired": 4,
"ignored": [
".git",
".p4"
]
},
{
"interval": 3,
"expired": 3,
"ignored": [
".git",
".p4"
]
},
{
"interval": 4,
"expired": 4,
"ignored": [
".git",
".p4"
]
}
]
Команда flatten
в jq
объединяет записи верхнего -уровня массива. Массив представляет собой массив, состоящий из данных из каждого файла в виде двух отдельных элементов массива.
Используйте jq -c
для получения более компактного вывода:
$ jq -cs flatten content.json config.json
[{"interval":1,"expired":3,"ignored":[".git",".p4"]},{"interval":2,"expired":4,"ignored":[".git",".p4"]},{"interval":3,"expired":3,"ignored":[".git",".p4"]},{"interval":4,"expired":4,"ignored":[".git",".p4"]}]
Я предлагаю вам сделать это с помощьюjq
(см. другой ответ ).
Однако, если вам действительно нужно использовать sed и если в файле конфигурации нет начальных и конечных квадратных скобок, как показано, тогда (с GNUsed
):
sed -i -e '$rconfig.json' -e '$a]' -e '$d' content.json