Трудная часть состоит в том, чтобы определить этот странный путь. Как только вы правильно запомните его, вы сможете что-то с ним делать. Я буду использовать этот документ, чтобы получить его, и я определю его как some strange/p"at\nh'/
, чтобы иметь возможность работать локально (нет /
в начале):
$ p="$(cat<<EOF
some strange/p"at\nh'/
EOF
)"
$ echo "$p"
some strange/p"at\nh'/
$ mkdir -p -- "$p"
tomasz@tomasz-laptop-f:~/x$ stat -- "$p"
File: some strange/p"at\nh'/
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fe05h/65029d Inode: 4983105 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ tomasz) Gid: ( 1000/ tomasz)
Access: 2019-03-06 08:50:05.116674683 +0100
Modify: 2019-03-06 08:50:05.116674683 +0100
Change: 2019-03-06 08:50:05.116674683 +0100
Birth: -
Bash поддерживает расширенные регулярные выражения POSIX (ERE ), не совместимые с Perl -регулярные выражения (PCRE ). В частности, (?x)
и (?:...)
являются PCRE.
На первый взгляд, версия с одной строкой -должна работать, если вы просто замените (?:...)
на (...)
. Функция «игнорировать пробелы», предоставляемая модификатором Perl x
, недоступна в расширенных регулярных выражениях.
См. также:Почему мое регулярное выражение работает в X, но не в Y?