sed :соответствует символам специального цвета

С помощью этой команды:

# semanage fcontext -l /oldpath/

Вы можете проверить контексты SElinux по умолчанию в папках в вашей системе, поэтому с помощью этой команды вы сможете увидеть контекст по умолчанию для этой папки демона.

Таким образом, вы можете проверить, какие контексты SELinux следует настроить в каталоге, в который вы хотите переместить содержимое.

Допустим, вы видите, что ваша папка демона имеет этот контекст (это контекст apache):

# semanage fcontext -l
...
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0

Затем вы примените эти контексты к новому пути, подобному этому (примеру с контекстом безопасности демона apache по умолчанию)

# semanage fcontext -a -t httpd_sys_content_t '/newpath(/.*)?'

После этого, учитывая, что ваш контент уже находится в новом пути, вы должны форсировать все ниже этого пути, чтобы получить этот контекст:

# restorecon -RFvv /newpath

Вы можете проверить, сработало ли это, с помощью этой команды:

# ls -Zd /newpath/

Помните, что при переходе к каталогу или файлам сохраняется контекст безопасности. Когда вы копируете папку или каталог, он устанавливает контекст в контекст родителя.

Если вам нужно просмотреть справочные страницы для определенного программного обеспечения, вы можете установить справочные страницы с помощью:

# yum install -y selinux-policy-devel

Не забудьте выполнить эту команду, чтобы переиндексировать man db:

# mandb

Затем вы можете запустить этот и проверить все справочные страницы selinux.

# man -k selinux

Предложение: запустите эту команду до и после установки этого пакета, чтобы увидеть разницу:

# man -k selinux | wc -l
4
24.12.2020, 07:49
5 ответов

То, что вы видите на терминале как ^[, является escape-символом. Второй [— это [.

Вам необходимо включить код для побега.

замените ^[escape-символом.

esc="$(echo '\033')"
sed 's/\.gpg'"${esc}"'\[00m$//'

или

esc='\x1b`
...
2
18.03.2021, 22:41

Чтобы удалить последовательности ansi (color и move ), мы можем выполнить что-то вроде

perl -pe 's/\e\[[0-9;]*[mGKHF]//g'

После этого все стало намного яснее...

3
18.03.2021, 22:41

Сначала прочитайте бит управляющих последовательностей ANSI . SGR (Выбор графического представления -цветов и подобных )заканчивается символом m-, что-то вроде:

sed -r 's/^[\[[0-9;]*m//g'

должно сработать для корректного -ввода. Под хорошим поведением я понимаю такое, когда управляющая последовательность не перемежается пробелами (, кроме пробела)-типа \nили \r".

Обратите внимание, что ^[— это escape-символ, а не сами символы ^и [. Что касается ввода самого escape-символа, то в консоли проще всего нажать Ctrl+V , а затем Esc .

1
18.03.2021, 22:41
c=$(printf '\\(\33\\[[0-9;]*m\\)*')

Сохранит в $cрегулярное выражение, которое соответствует любому количеству последовательностей настроек графических атрибутов (раскраска, полужирный шрифт, перевернутое видео... ), также известное как sgr(установка графического представления).

Тогда:

sed "s/${c}\.${c}g${c}p${c}g\(${c}\)\$/\5/"

Будет удалена конечная .gpg, включая вкрапленные и предшествующие последовательности SGR, но сохранены конечные (, такие как ваш\e[00m(sgr0 ), чтобы восстановить графическое представление по умолчанию ).

3
18.03.2021, 22:41

Я предполагаю, что вы хотите оставить управляющие последовательности на месте, если они уже есть. Вы можете сделать это:

sed -E 's/\.gpg([[:cntrl:]]|$)/\1/' zz

Это будет соответствовать .gpg, за которым следует либо конец строки , либо любой управляющий символ (, например. символ ESC. ). Если совпал управляющий символ, он сохраняется при замене на \1.

Если escape-последовательностей нет, то .gpgна концах строк также будут удалены.

1
18.03.2021, 22:41

Теги

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