Как я могу создать файл с именем "\ $ * 'PNP' * $ \" с помощью сенсорной команды - PullRequest
2 голосов
/ 05 августа 2020

Как я могу создать файл с именем "\$*'PNP'*$\" с помощью сенсорной команды? что я сделал:

% touch '"\$*'PNP'*$\"'
% ls 
"\$*PNP*$\"

Мне нужно 'рядом с P

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Один из подходов - поместить желаемое имя файла в Try:

$ touch "\"\\\$*'PNP'*$\\\""
$ echo *PN*
"\$*'PNP'*$\"

Если вы запустите ls, имейте в виду, что в имени файла могут быть экранированные символы:

$ ls
'"\$*'\''PNP'\''*$\"'

В приведенной выше команде touch требуется экранирование. Во-первых, чтобы заключить в двойные кавычки строку, заключенную в двойные кавычки, ее нужно преобразовать в \". Во-вторых, чтобы поместить backsla sh в строку, заключенную в двойные кавычки, она также должна быть экранирована как \\. Внутри строки, заключенной в двойные кавычки, ' не нужно экранировать.

Альтернатива: строка в одинарных кавычках

$ touch '"\$*'\''PNP'\''*$\"'
$ echo *PN*
"\$*'PNP'*$\"

В приведенном выше примере пять строк:

  1. '"\$*'
  2. \'
  3. 'PNP'
  4. \'
  5. '*$\"'

Строки 1, 3 и 5 заключаются в одинарные кавычки. Строки 2 и 4 не заключены в кавычки, но не заключены в одинарные кавычки.

0 голосов
/ 05 августа 2020

Просто заключите его в одинарные кавычки:

touch '"\$*'PNP'*$\"'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...