そこで、以下のような.jsファイルがあり、以下のgrepパターンを利用して検索をしようとします。私が間違っているかどうかはわかりませんが、ファイルにそのモードがあっても出力は提供されません。私は何か間違いを犯し、どのように修正することができますか?
.js
文書:
var View = require('ampersand-view');
window.jQuery = require('jquery');
require('bootstrap');
require('bootstrap-tooltip');
var extend = require('lodash/assign');
私の要件は、次の項目を見つけることです。require('query')
私が使っているgrep:grep 'require('jquery')' index.js
ベストアンサー1
一重引用符は、一重引用符で囲まれた文字列に含めることはできません。努力する:
$ grep "require('jquery')" index.js
window.jQuery = require('jquery');
または、一重引用符で囲まれた文字列を終了し、エスケープされた一重引用符を追加して、一重引用符で囲まれた文字列を再起動することもできます。
$ grep 'require('\''jquery'\'')' index.js
window.jQuery = require('jquery');
議論する
何が起こっているのかをよりよく理解するには、echoステートメントを使用してシェルが文字列をどのように処理するかを確認できます。
$ echo 'require('jquery')'
require(jquery)
上記の例には、単一引用符で囲まれた2つの文字列(require(
および)があります)
。シェルに関する限り、文字列はjquery
引用されません。
$ echo "require('jquery')"
require('jquery')
シェルは二重引用符で囲まれた文字列の一部として一重引用符を受け入れるため、上記のコードは正しく機能します。
場合によっては、シェル拡張を避けるために、すべてを一重引用符で囲まれた文字列に入れる必要があります。この場合:
$ echo 'require('\''jquery'\'')'
require('jquery')
上に単一引用符で囲まれた3つの文字列があります:require(
、、jquery
および )
。これらの文字列は、シェルがそれを通常の文字として扱うようにエスケープされた一重引用符で区切られます。
この回答では、シェルがbash、dash、ash、または他のPOSIXまたはbourne派生シェルであると仮定します。他のシェルの詳細については、以下を参照してください。Stefan Chazerasの答え。