В вашем configuration.nix
,
{ pkgs,... }:
{
...
programs.fish.enable = true;
users.extraUsers.<myusername> = {
...
shell = pkgs.fish;
...
};
}
Далее следует nixos-rebuild switch
.
/^$/
для «логического» пустого использования/^\s*$/
sed -n -e '/^title2:/,/^[a-zA-Z]/ { /^[a-zA-Z]/ d ; /^$/ d ; s/^[ \t]*// ; p }'
где
/^$/
соответствует началу -строки, концу -строки -/^\s*$/
соответствует началу -строки, отсутствию пробела или табуляции, концу -строки -Я использовал пробел и получил
sed -ne '/^title2$/,/^[a-zA-Z]/ { /^title2$/ { n; h; b; } ; /^[a-zA-Z]/ d; H; x; s/[ \t]*//; P; s/.*\n//; x }'
, который, кажется, правильно обрабатывает случаи, которые мне нужны.
sed -n '/title2/,/^\S/ { //b; /^\s*$/ { N; /\n\S/q; P; D }; s/^\s*//; p }'
Сначала я сделал это, чтобы привлечь внимание @Archemar. Я был бы очень признателен, если бы вы могли пожалуйста, ответить намой комментарий в этом посте , когда у вас будет время. Даже если ответ «не знаю». БЛАГОДАРЮ.
По крайней мере, в моей оболочке bash он работает без -e
. Просто интересно, зачем это вообще нужно? И если\s
или\S
не поддерживаются, вы можете заменить их на [ \t]
и [^ \t]
соответственно.
Разбивка для людей, которые были так же невежественны, как и я, когда впервые увидели этот вопрос:
-n
отключает автоматическую печать /title2/,/^\S/
- это диапазон для sed
для поиска в (от строки первого вхождения строки " title2
" до следующей строки, которая начинается с символа пробела, отличного от -[т.е. title3
] включительно){
просто означает применение прилагаемых команд к диапазону или шаблону, который я только что указал //b
позволяет не применять следующие команды к началу и концу диапазона. title2
или ^\S
, просто перейдите в конец скрипта(b
)(обработайте следующую строку в файле, если остались какие-либо ), потому что в GNUsed
(BSD говорит то же самое, не уверен, что есть другая версияsed
)‘//’ repeats the last regular expression match
/^\s*$/
соответствует «логически пустым» строкам в диапазоне. {
N; /\n\S/q;
Итак, если это "логически пустая" строка,N
добавляет следующую строку в пространство шаблонов, а затем, если эта следующая строка является следующим заголовком, она полностью прекращает обработку (q
), поэтому ни «логически пустая» строка, ни следующий заголовок не печатаются. P; D
Если за «логически пустой» строкой не следует следующий заголовок, то просто печатается «логически пустая» строка (P
), а затем просто "логически пустая" строка удаляется из пространства шаблонов, оставляя следующую строку, которая была добавлена в пространство шаблонов с помощью N
для обработки с начала скрипта(D
)}
s/^\s*//; p
убирает пробелы и табуляции в начале строки и печатает отформатированную строку }
@Archemar пожалуйстаПОМОГИТЕ