grep "^[^#;]" smb.conf
Первое ^
относится к началу строки, так строки с комментариями, запускающимися после того, как первый символ не будет исключен. [^#;]
средства любой символ, который не является #
или ;
.
Другими словами, это сообщает о строках, которые запускаются с любого символа кроме #
и ;
. Это не то же как создание отчетов о строках, которые не запускаются с #
и ;
(для которого Вы использовали бы grep -v '^[#;]'
) в этом это также исключает пустые строки, но это, вероятно, предпочтительно в этом случае, поскольку я сомневаюсь, что Вы заботитесь о пустых строках.
Если бы Вы хотели проигнорировать символы начального пробела, то Вы могли бы изменить его на:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
или
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Или
awk '$1 ~ /^[^;#]/' smb.conf
В то время как это - больше альтернативного решения, чем прямой ответ на Вашу проблему, я попытался бы использовать внутренний sftp сервер вместо внешнего. Так как это - встроенная система, это, вероятно, имеет больше смысла делать так или иначе.
В Вашем sshd_config
, просто добавьте:
Subsystem sftp internal-sftp
Тем путем можно не учесть sftp двоичный файл и оставить некоторое свободное место.