mySQLのパスワードとユーザー名を変更したので、それに応じてすべてのPHPスクリプトの接続文字列を置き換える必要があります。
PHPファイル名の多くにスペースが含まれているため、コマンドに問題があります。
「そのようなファイルまたはディレクトリはありません」というエラーが発生せずにこのコマンドを機能させるには、どうすればよいですか?
これが私が使用しているコマンドです:
pattern='mysql_connect("localhost", "olduser", "oldpwd")'
replacement='mysql_connect("localhost", "newuser", "newpwd")'
find . -name "*.php" | xargs -n 1 sed -i -e 's|$pattern|$replacement|g'
私はxargsとsedに慣れていないので、この回答からこのコードを同様の質問にコピーしました。
(mysql_connectステートメントをphpインクルードファイルに入れて、次回は1か所でのみ変更すると思います。)
BASHを使用してUbuntu14.04LTSを実行しています
NULL byte
と二重引用符を使用する必要があります:
find . -name '*.php' -print0 |
xargs -0 -n 1 sed -i -e "s|$pattern|$replacement|g"
または単純なforループで:
for p in *php; do
sed -i -e "s|$pattern|$replacement|g" "$p"
done
シェルで適切に引用する方法を学びましょう。それは非常に重要です:
「二重引用符」スペース/メタ文字を含むすべてのリテラルと、すべての拡張:
"$var"
、"$(command "$var")"
、"${array[@]}"
、"a & b"
。使用する'single quotes'
コードまたはリテラルのために$'s: 'Costs $5 US'
、ssh host 'echo "$HOSTNAME"'
。
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Argumentshttp://wiki.bash-hackers.org/syntax/wordsを参照してください
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加