Сортировка папок в Unix, начиная со второго символа

Принятый ответ (удалить файлы и выполнитьdaemon-reload)мне не помогло -вместо этого я смог удалить таймер, используя systemd --user stop unitfile; однако это может отличаться тем, что я уже использовал файл модуля.


Поскольку мой вопрос «Systemd как atзамена» был помечен как «точная копия», я удалю его и опубликую содержание ниже.

Я хотел бы использовать systemd как at. Я создал юнит-файл в ~/.config/systemd/user/say@.service, который запускает сценарий оболочки (, передавая "%I" ), но у меня возникли проблемы с его планированием. Если я использую systemd-run --user --unit say@'test message' --on-calendar='13:54', он сохраняет активным таймер для запуска завтра, а не удаляет его после запуска.

Как указать systemd запускать юнит-файл ровно один раз в определенное время сегодня? Я хотел бы решение, которое также автоматически очищает переходный таймер, поэтому мне не нужно systemd --user stop say@'test message'после этого.


Ответ :Пришлось указать полную дату. Итак -... --on-calendar='2018-04-16 13:54:00'. Это, кажется, очищает после себя должным образом.

0
07.03.2020, 04:16
2 ответа

С помощью sortвы можете использовать клавишу формы F.C, чтобы указать позицию символа в пределах поля. Так например

$ printf '%s\n' */ | sort -k1.2
yalberto/
mreynolds/
lrodriguez/

Обратите внимание, что это не удастся, если любое из имен каталогов содержит новую строку.

Это можно обойти с помощью GNU sort, работая с записями с разделителями NUL -вместо:

printf '%s\0' */ | sort -zk1.2 | tr '\0' '\n'

Также обратите внимание, что расширение */также включает символические ссылки на каталоги.

2
28.04.2021, 23:21

Сzsh:

print -rC1 -- *(N/oe['REPLY=${REPLY#?}'])
  • print -rC1печатает свои аргументы raw в1Cколонке
  • *(qualifiers):глобус с квалификаторами глобус
  • N:Nullglob :расширяется до нуля, если совпадений нет
  • /:выбирать только файлы типа каталог
  • oe[expression]:oупорядочить список на основе результата eвыражения (значения $REPLY, изначально содержащего имя файла после того, как оно было обработано выражением)
  • REPLY=${REPLY#?}:удалить первый символ из имени файла.

Вы также можете добавить первый символ в конце, например REPLY=${REPLY#?}.$REPLY[1], чтобы asmith, bsmith, csmithсортировались в этом порядке, а не случайным образом.

2
28.04.2021, 23:21

Теги

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