Usando un grep
que conoce-o
:
$ printf '%s\n' "$string" | grep -o '\<Icecream[^[:blank:]]*'
Icecream123
El patrón \<Icecream[^[:blank:]]*
coincide con la cadenaIcecream
(donde I
está precedido por un carácter que no es una palabra -, o el comienzo de la línea )seguido de cero o más espacios en blanco que no -(no espacios ni tabulaciones ).
Usandoawk
:
$ printf '%s\n' "$string" | awk -v RS=' ' '/^Icecream/'
Icecream123
El programa awk
divide la cadena en registros -separados por espacios y prueba cada uno. Imprimirá los que comienzan con la cadena Icecream
.
Usando mawk
o GNU awk
, también puede usar
printf '%s\n' "$string" | awk -v RS='[[:blank:]]' '/^Icecream/'
ya que interpretan RS
como una expresión regular si contiene más de un carácter.
Con sed
, de forma similar agrep
:
$ printf '%s\n' "$string" | sed 's/.*\(\<Icecream[^[:blank:]]*\).*/\1/'
Icecream123
Usando/bin/sh
:
set -- Icecream123 AirplaneBCD CompanyTL1 ComputerYU1
for string; do
case $string in
Icecream*)
printf '%s\n' "$string"
break
esac
done
Perl (con un poco de ayuda detr
):
$ printf '%s\n' "$string" | tr ' ' '\n' | perl -ne '/Icecream\S*/ && print'
Icecream123
o simplemente
$ printf '%s\n' "$string" | perl -ne '/(Icecream\S*)/ && print $1, "\n"'
Icecream123
Эти команды ACL предназначены только для Linux. Во-первых, установите все права собственности и разрешения на что-то стандартное.
chown -R root:root /media
find /media -type d -exec chmod 0755 {} +
find /media -type f -exec chmod 0644 {} +
Файлы
Затем решите, как правильно использовать списки управления доступом (ACL ). (Вы знаете сведения о том, каким пользователям и/или группам требуется доступ на чтение или запись к каким файлам или каталогам, но они не были указаны в вопросе. )Ниже приведены некоторые примеры. Имейте в виду, что каждый пример устанавливает явный ACL, чтобы правильно определить ACL для файлов (, а не каталогов ). Позже ACL и ACL по умолчанию могут быть применены к каталогам . Ниже -m
— применяемая маска.
# Give medusa user (u) read-write; give group_name (g) read; give others (o) read.
find /media -type f -exec setfacl -m u:medusa:rw-,g:group_name:r--,o:r--
# Give plex user (u) read-write.
find /media -type f -exec setfacl -m u:plex:rw-
# Give server group (g) read-write.
find /media -type f -exec setfacl -m g:server:rw-
# Give media user (u) read-write.
find /media -type f -exec setfacl -m u:media:rw-
# Give media user (u) read-write, server group (g) read-write, others (o) read.
find /media -type f -exec setfacl -m u:media:rw-,g:server:rw-,o:r--
Каталоги
Какие бы списки контроля доступа ни применялись к файлам, они могут быть применены и к каталогам, но с небольшим отличием в том, что можно также установить списки управления доступом по умолчанию(-d
). При использовании переключателя -d
все новые объекты файловой системы в каталоге автоматически наследуют определенные ACL. Важно помнить, что необходимо установить как ACL для самого каталога , так и ACL по умолчанию, если ACL автоматически применяются к новым файлам. Также обратите внимание, что ниже для изменения каталогов(cd
)требуется выполнение(x
в rwx
); но это не означает, что бит выполнения применяется к файлам. Скорее, бит выполнения применяется только к новым каталогам.
# For each directory itself:
find /media -type d -exec setfacl -m u:media:rwx,g:server:rwx,o:r-x {} +
# To set a default ACL in each directory - the same command as above with the `-d` switch:
find /media -type d -exec setfacl -d -m u:media:rwx,g:server:rwx,o:r-x {} +
Повторите две приведенные выше команды для каждого ACL, изменяя пользователей и/или группы в соответствии с целями. Это действие упорядочивает списки ACL, чтобы можно было добавить столько списков ACL, сколько необходимо, и выполнить автоматическое назначение списков ACL для каждого нового объекта файловой системы.
Можно использовать метод "ugo" (, например :rwx )или восьмеричный (, например :7 ).
rwx
r--
rw-
r-x
7
4
6
5
Другими словами, следующие команды эквивалентны.
setfacl -m u:media:rwx,g:server:rwx,o:r-x {} +
setfacl -m u:media:7,g:server:7,o:5 {} +
Групповые и другие маски работают одинаково:g:groupname:---
или в комбинации следующим образом.
u:username:---,g:groupname:---,o::---
Я заметил, что одно двоеточие, по-видимому, также подходит для слова «другое».
u:username:---,g:groupname:---,o:---
Отсутствие указания имени пользователя или имени группы применяет маску к текущему владельцу пользователя/группы.
Не зная точно, какой уровень доступа требуется пользователю или группе, трудно сказать точнее. Возможно, сначала потребуется проанализировать, возможно, начав процесс глубже в дереве каталогов. При первых экспериментах со списками ACL может быть полезно знать, как удалить их все:setfacl -Rb /media
. Кроме того, можно использовать info
и/или man
, чтобы прочитать руководство по setfacl
, getfacl
и acl
. Есть также много вопросов и ответов по ACL. Просто обязательно узнайте, предназначен ли ACL Q/A для Linux, потому что речь идет об этой ОС. (Списки управления доступом реализованы по-разному в зависимости от основных вариантов ОС. )Стандартные права собственности и разрешения, заданные в начале этого ответа, будут дополнены списками управления доступом. Везде, где существует ACL, вы заметите, что существует знак +
-, что-то вроде макета ниже.
drwxr-xr-x 2 root root 4096 Jul 8 16:00 dir_without_acl
drwxr-xr-x+ 2 root root 4096 Jul 8 16:00 dir_with_acl
Возможно, потребуется перезапустить службы, обращающиеся к этим файлам.