As aspas simples não podem ser incorporadas em strings entre aspas simples. Experimente:
$ grep "require('jquery')" index.js
window.jQuery = require('jquery');
Como alternativa, você pode encerrar a cadeia entre aspas simples, adicionar uma aspas simples com escape e, em seguida, reiniciar a cadeia entre aspas simples:
$ grep 'require('\''jquery'\'')' index.js
window.jQuery = require('jquery');
Discussão
Para entender melhor o que está acontecendo, você pode usar instruções echo para ver como o shell processa as strings:
$ echo 'require('jquery')'
require(jquery)
No exemplo acima, existem duas strings com aspas simples: require(
e )
. No que diz respeito ao shell, a string jquery
não é citada.
$ echo "require('jquery')"
require('jquery')
Como o shell aceita aspas simples como parte de strings com aspas duplas, o acima funciona bem.
Às vezes, para evitar expansões de shell, é necessário que tudo esteja em uma string de aspas simples. Nesse caso:
$ echo 'require('\''jquery'\'')'
require('jquery')
Acima, há três strings com aspas simples: require(
, jquery
e )
. Entre essas strings estão aspas simples que são escapadas para que o shell as trate como caracteres normais.
Esta resposta assume que o shell é bash, dash, ash ou outro shell derivado de POSIX ou bourne. Para obter informações sobre outros reservatórios, consulte a resposta de Stéphane Chazelas .