Когда использовать одинарную кавычку, двойную кавычку в grep?

Вы могли попытаться использовать 'git+ssh//' uri вместо 'мерзавца//'. Это позволит Вам выполнять сервер меньше (мудрый мерзавец) и давать различные пользовательские полномочия каждому репозиторию. После того как Вы сделали это, можно использовать

git+ssh://user@remotehost/repos/path/project.git

как мерзавец удаленное местоположение.

Для инициализации пустого репозитория, в который можно продвинуть данные, используют 'мерзавца - пустой init' команда на удаленном хосте.

20
задан 28 September 2009 в 16:23
2 ответа

Это на самом деле зависит от Вашей оболочки. Кавычки (любой вид), прежде всего, предназначены для контакта с пробелом. Например, следующее:

grep hello world file1

будет искать слово "привет" в файлах, названных "миром" и "file1", в то время как

grep "hello world" file1

будет искать "привет мир" в file1.

Выбор между одинарными или двойными кавычками только важен, если строка поиска содержит переменные или другие объекты, что Вы ожидаете быть оцененными. С одинарными кавычками строка взята буквально, и никакое расширение не происходит. С двойными кавычками расширены переменные. Например (с Полученной из границы оболочкой, такой как Bash или ZSH):

VAR="serverfault"
grep '$VAR' file1
grep "$VAR" file1

Первое grep будет искать литеральную строку "$VAR1" в file1. Второе будет разворачивать переменную "$VAR" и искать строку "serverfault" в file1.

25
ответ дан 2 December 2019 в 20:10

James корректен, но добавить еще некоторые данные, я думаю, что лучший способ думать об этом как аргументы команде: Вы предназначаете "привет" и "мир", чтобы быть двумя аргументами или "привет миром", чтобы быть одним аргументом.

Кроме того, doublequotes позволяют интерпретацию больше, чем просто переменных. Точно, что зависит от Вашей оболочки, но зарегистрируйтесь в расширении истории, заключите в фигурные скобки расширение и расширение имени файла.

Также важно отметить, что существуют некоторые экземпляры, где необходимо использовать оба типа кавычек в отдельном аргументе. Помните, что (по умолчанию) аргументы разграничены пробелом, поэтому если Вы не оставляете пространства, Вы все еще указываете тот же аргумент.

singlequote механизм большинства оболочек не допускает специальных символов, что означает, что любой экземпляр другого singlequote, даже если этого, кажется, оставляют, заканчивает кавычку. Поэтому невозможно передать строку с singlequote в строке singlequoted, и необходимо использовать doublequotes. Это может быть болью, когда Вы хотите передать аргумент, который содержит singlequotes и что-то, что было бы интерпретировано, но Вы не хотите быть. Например, если Вы хотели передать литеральную строку "'' $VAR', переменная", необходимо сделать это этот путь:

"'"'$VAR'"' is a variable"

Это - на самом деле конкатенация трех оставленных из кавычки строк:

"'"
'$VAR'
"' is a variable"

или, с удаленными кавычками:

'
$VAR
' is a variable

На самом деле, с большинством оболочек, Вы могли также сделать это этот путь:

"'\$VAR' is a variable"

где обратная косая черта ("\"), говорит оболочке принимать следующий символ буквально и не делать любое расширение на нем.

Но существуют некоторые экземпляры, где Вы заканчиваете тем, что имели необходимость сделать это мультиконкатенация строк путь, не, что я могу на самом деле придумать пример прямо сейчас.

7
ответ дан 2 December 2019 в 20:10

Теги

Похожие вопросы