У меня есть внешний жесткий диск, названный "Моя Книга". Когда я использовал команду:
find /dev/disk/
это показывает мне, что находится под
/dev/disk/by-label/My\x20Book
Однако, когда я ввожу
find /dev/disk/ | grep My\x20Book
Это просто дает мне ошибку
find: `/dev/disk/by-label/Myx20Book': No such file or directory
Я попробовал следующее без успеха:
find /dev/disk/ | grep My\x20Book
find /dev/disk/ | grep My' 'Book
find /dev/disk/ | grep "My Book"
find /dev/disk/ | grep My\ Book
Что корректный путь состоит в том, чтобы ввести этот специальный символ в путь в Bash?
Если путь My\x20Book
с обратной косой чертой, попыткой к grep
это должно будет выйти из обратной косой черты оба из grep
, и от bash
, и это может быть сделано при помощи обратных косых черт дважды для каждого уровня:
$ echo 'My\x20Book' | grep My\\\\x20Book
My\x20Book
Оболочка уменьшает каждого \\
кому: \
, так grep
получает My\\x20Book
, и затем grep уменьшает \\
кому: \
, так, чтобы это наконец соответствовало просто My\x20Book
.
Для защиты от оболочки можно заключить обратную косую черту в кавычки и устранить внешний набор обратных косых черт:
$ echo 'My\x20Book' | grep 'My\\x20Book'
My\x20Book
Защищать от grep
, можно сказать, что это использует починенные строки и не регулярные выражения, и теперь использует просто единственную обратную косую черту:
$ echo 'My\x20Book' | grep -F 'My\x20Book'
My\x20Book
Между прочим, так как Вы используете find
, можно просто использовать его способность к фильтрации непосредственно:
$ touch 'My\x20Book'
$ find . -name 'My\\x20Book'
./My\x20Book