ターミナルでいくつかのphp.ini
(php5.6)変数を変更したい。例:post_max_size
値(現時点では8M
)を取得し、ターミナルで表示し、2048M
に変更して、再度表示する必要があります。
どうすればそれができますか?
取得する:
grep '^post_max_size ' php.ini
交換:
sed -i 's,^post_max_size =.*$,post_max_size = 2048M,' php.ini
sed
を実行する前に、php.ini
のバックアップを作成することをお勧めします。
cp php.ini php.ini.bak
php.ini
の値は1行に1つずつ保存され、=
で区切られ、周囲のスペースの有無にかかわらず値があると思います。変数名にも値にも=
が含まれていません。
printpost_max_size
値(いずれかを選択):
<php.ini awk -F"= *" '/^ *post_max_size/{print$2}'
<php.ini sed '/^ *post_max_size/!d;s/.*= *//'
<php.ini grep -oP '^ *post_max_size *= *\K.*'
post_max_size
の値を2048M
にchangeに変更して、php.ini.bak
というバックアップを作成します。
sed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini
<php.ini awk -F"= *" '/^ *post_max_size/{print$2}'
<php.ini
–シェルでphp.ini
を開いてプログラムの標準入力に割り当てます。これには多くの利点があります。 here を参照してください-F"= *"
– =
の後にフィールド区切り文字として0個以上のスペース文字を続けて設定します/^ *post_max_size/{print$2}
– post_max_size
で始まる行から印刷フィールド2
<php.ini sed '/^ *post_max_size/!d;s/.*= *//'
/^ *post_max_size/!d
– d
post_max_size
で始まる行を除くすべての行を選択しますs/.*= *//
– s
_=
の前のすべてを置換し、その後にゼロ以上のスペース文字を何も付けない(=削除)<php.ini grep -oP '^ *post_max_size *= *\K.*'
-oP
– o
nly一致する行の一致した部分を印刷し、P
erl互換の正規表現(PCRE)を使用します^ *post_max_size *= *\K.*
– 0個以上のスペース文字で囲まれたpost_max_size
および=
で始まる行を検索し、全体の正規表現一致からこれまでに一致したテキストを削除します(\K
)そして、その後のすべてに一致しますsed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini
-i.bak
–ファイルの変更i
n拡張子.bak
でバックアップを作成する場所/^ *post_max_size/…
– post_max_size
で始まる行で、…
を実行しますs/=.*/= 2048M/
– s
ubstitute =
およびその後のすべてを= 2048M
で