Mac OSX не поддерживает команду tac
. Решение @tcdyl работает, когда вы вызываете одну команду в цикле for
. Во всех остальных случаях проще всего это обойти следующим образом.
Этот подход не поддерживает символы новой строки в именах файлов. Основная причина в том, что tail -r
сортирует входные данные как разделенные символами новой строки.
for i in `ls -1 [filename pattern] | tail -r`; do [commands here]; done
Однако есть способ обойти ограничение новой строки.Если вы знаете, что ваши имена файлов не содержат определенного символа (, скажем, '=' ), вы можете использовать tr
, чтобы заменить все символы новой строки на этот символ, а затем выполнить сортировку. Результат будет выглядеть следующим образом:
for i in `find [directory] -name '[filename]' -print0 | tr '\n' '=' | tr '\0' '\n'
| tail -r | tr '\n' '\0' | tr '=' '\n' | xargs -0`; do [commands]; done
Примечание. :в зависимости от вашей версии tr
он может не поддерживать '\0'
в качестве символа. Обычно это можно обойти, изменив локаль на C (, но я не помню, как именно, так как после исправления она теперь работает на моем компьютере ). Если вы получили сообщение об ошибке и не можете найти обходной путь, опубликуйте его в комментарии, чтобы я мог помочь вам устранить неполадку.
Нет необходимости различать профили пользовательских и системных служб. Их можно вместе поместить в папку /etc/apparmor.d и загрузить в ядро с помощью apparmor _parser.sh
Systemd предлагает эту переменную для юнит-файлов AppArmorProfile=
и устанавливает для нее профиль, который у вас есть. Я не уверен насчет каталога.. попробуйте узнать, как добавить пути для apparmor, чтобы найти профили..