Это не работа дляsed
(вы не должны полагаться на последовательные повторяющиеся записи ). Используйтеawk
:
Установите разделитель записей на регулярное выражение ^-+$
.
Используйте ассоциативный массив, где индекс представляет собой конкатенацию HostName и ServiceName. Для любой прочитанной записи поместите запись в массив, только если она еще не существует.
В конце обработки файла распечатайте все элементы массива, отформатированные в отдельные строки, с вашими ----
строками-разделителями.
Единственное, что отличает эти два профиля от «обычных» профилей GUIX, заключается в том, что они являются опциями по умолчанию для соответствующих команд GUIX (см. здесь , чтобы узнать, чем они отличаются):
~/.guix-profile
является параметром по умолчанию параметра guix package
-p|--profile=
~/.config/guix/current
является параметром по умолчанию параметра guix pull
-p|--profile=
Они генерируются при первом вызове соответствующих сопутствующих команд, если они не существовали ранее.
Но вы можете полностью обойтись без этих двух профилей, если хотите, и постоянно использовать пользовательские -профили (см. ниже)
guix
версии по сравнению с предоставлением других программ, управляемыхguix
Профиль ~/.config/guix/current
содержит двоичные файлы guix
и guix-daemon
. В конфигурации по умолчанию этот профиль определяет самую последнюю версию всех пакетов, которые вы можете установить, от -до -. Список пакетов, которые вы можете установить, привязан к версии guix, в отличие от Nix. Этот пост в блоге объясняет почему.
root
, двоичный файл, предоставленный (целью символической ссылки )/root/.config/guix/current/bin/guix-daemon
, является демоном GUIX, который автоматически запускается системой. Он также имеет символическую ссылку в /usr/local/bin
. Профиль ~/.guix-profile
содержит любой пакет, который вы хотите, чтобы он содержал. Многие пользователи включают его в свои файлы запуска оболочки, поэтому они часто -использовали программы, которые не относятся ни к какому другому профилю задачи -, доступному автоматически.
Какие профили важны для вас, определяется только вашим.profile
(или .bash_profile
или любым другим файлом инициализации оболочки, который вы используете)
Если ничего не указать,вы не будете использовать пакеты из guix
и версию самого guix
, которую использует root
, потому что скрипт установщика оболочки GUIX создает символическую ссылку/usr/local/bin/guix -> /var/guix/profiles/per-user/root/guix
Если вы включите в свой.profile
(или аналогичный)1
GUIX_PROFILE=$HOME/.config/guix/current;
source "$GUIX_PROFILE/etc/profile"
вы можете использовать собственную версию GUIX и версии пакетов.
Если включить
GUIX_PROFILE="$HOME/.guix-profile";
source "$GUIX_PROFILE/etc/profile"
вы загружаете профиль, который вы можете определить/изменить без использования параметра -p
в guix package
. Конечно, вы также можете загрузить любой другой профиль здесь, вам просто нужно использовать параметр -p
, если вы хотите его изменить. Многие люди используют этот профиль для включения команд, которые им часто нужны, но которые не назначены для какой-либо конкретной задачи -рабочего процесса.
1 Если вам интересно, зачем вам нужно определять переменную перед поиском, прочтите исходный сценарий. Тогда в $PATH
будет добавлена ссылка на профиль, а не сама папка профиля. Это означает, что вы автоматически получите обновленную версию пакета, если вызовете guix package -u
без повторной загрузки профиля.