Вы наблюдали выход из кода 1, как это:
$ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$?
code=1
Чтобы он работал так, как вы ожидаете, вам нужна опция -E `:
$ echo "ACI123456777-001-20170701.pdf" | grep -Ee "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$?
ACI123456777-001-20170701.pdf
code=0
-E
включает расширенные функции регулярных выражений.
Если вы действительно хотите использовать базовое регулярное выражение, которое используется по умолчанию, вам нужно добавить несколько escape-последовательности:
$ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI\([0-9]\{9\}\)-\([0-9]\{3\}\)-\([0-9]\{8\}\).pdf$"; echo code=$?
ACI123456777-001-20170701.pdf
code=0
-e
Параметр grep -e
предшествует шаблону регулярного выражения:
$ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI'
ACI123456777-001-20170701.pdf
Если есть только один шаблон, то grep не нужен -e
и его можно опустить:
$ echo "ACI123456777-001-20170701.pdf" | grep '^ACI'
ACI123456777-001-20170701.pdf
Однако при наличии двух или более шаблонов необходимо -e
:
$ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI' -e 'pdf'
ACI123456777-001-20170701.pdf
В дополнение к комментарию vorac, детализированные разрешения являются одной из основных причин использования выделенного программного обеспечения сервера git.
Использование разрешений файловой системы Linux просто не работает ни для чего, кроме разрешения -только на чтение. Как вы обнаружили, когда другие пользователи изменяют репозиторий, они владеют файлами, которые они загрузили, и полностью контролируют разрешения на эти файлы, поэтому на самом деле могут быть весьма разрушительными.
Единственный способ обойти это — заставить пользователей получать доступ через выделенное программное обеспечение сервера git.Это по-прежнему позволяет пользователям получать доступ через протокол ssh, но они делают это либо с помощью полностью настроенного SSH-сервера, либо, в случае gitolite , с очень настроенным пользователем SSH.
Для очень простой легкой установки гитолита вполне достаточно. Со временем вы можете захотеть перейти на более сложные инструменты ERM, такие как gitlab .