Объединение файлов в определенном порядке на основе другого файла

Выполните следующие шаги:

  1. Ваш служебный файл должен находиться в /etc/systemd/user. Выполните mv /etc/systemd/system/Testing1.service /etc/systemd/user/для этого.
  2. Используйте пользовательский режим из systemd . Выполните systemctl --user start Testing1.serviceиз своей учетной записи пользователя (, а не root ), чтобы запустить службу.

Пояснениеsystemd имеет два режима работы: системный режим и пользовательский режим . Системный режим запускается до входа пользователя в свою сессию, поэтому графической сессии в этот момент нет. FreeFileSync и ReadTimeSync требуется доступ к графическому X11 дисплею, поэтому они не могут работать через системный режим . В пользовательском режиме , systemd знает о пользовательском графическом сеансе и использует его(только в том случае, оболочка, выполняющая команду, принадлежит пользователю и его графическому окружению ). Более подробную информацию можно найти в ArchWiki или на StackOverflow .

4
19.05.2021, 12:24
3 ответа

Используйтеxargs

xargs -i cat freq_'{}' < list > freq_all
10
28.07.2021, 11:30

Вы можете сделать это с помощью while, почему бы и нет? Это должно работать:

while read suffix; do cat freq_"${suffix}"; done < list > freq_all; done

Кроме того, вы можете сгенерировать команду с помощью printfи запустить ее вручную:

$ echo "cat $(printf 'freq_%s ' $(cat list)) > freq_out"
cat freq_003137F freq_002980F freq_002993F > freq_out

Или просто выполнить его напрямую:

cat $(printf 'freq_%s ' $(cat list)) > freq_out
6
28.07.2021, 11:30

Если вы собираетесь использовать xargs, обычно вы хотите воспользоваться его способностью помещать более 1 аргумента в командную строку одного процесса.(Запуск одного catцикла, перебирающего свои аргументы, более эффективен, чем запуск отдельного catпроцесса для каждого файла, учитывая дополнительные затраты на запуск процесса ).

xargs '-I{}' cat freq_'{}', к сожалению, подразумевает-x-L 1и не позволяет переопределить его обратно на выполнение нескольких аргументов для каждой команды.

Вместо этого мы можем использовать sedдля подстановки. Это может быть хорошо, если у вас очень большой список, который может быть слишком большим для замены команды bash -на printf в ответе @terdon. xargs умеет группировать аргументы в куски текста размером до 128 КБ (по умолчанию ).

sed 's/^/freq_/' list | xargs -d'\n' cat   > freq_out

s/^/foo/добавляет материал в начало строки. Шаблон соответствует 0 ширине в начале каждой строки.

2
28.07.2021, 11:30

Теги

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