みやびです。随時更新しています。あまり頻繁にLINUXコマンドを使うことはありませんが、単純作業の繰り返しとかで上手く使えると何かと便利なので、よく使うコマンドをメモしていくことにしました。サーバーエンジニアでも何でもないので、超簡単な初心者向けのものばかりです。
最終更新日:2016/12/12
1 |
$ sed -i -e "s/置換前の文字列/置換後の文字列/g" /var/www/ ... /filename.txt |
ちなみに、【s/置換前の文字列/置換後の文字列/g”】内で使われている区切り文字【/】は、【|(パイプ)】などでも置き換えることができる。
こういう区切り文字のことを「デリミタ」と呼ぶ。URLを置換する際には面倒なエスケープ(\)を前につけなくていい。こんな感じ。
1 2 3 |
$ sed -i -e "s|http://pintoru.com/|http://plan-ltd.co.jp/|g" /var/www/ ... /filename.txt or $ sed -i -e "s/http:\/\/pintoru.com\//http:\/\/plan-ltd.co.jp\//g" /var/www/ ... /filename.txt |
どちらも同じ結果になるが、上のほうがわかりやすい。
複数のファイルを一括変換したい場合はワイルドカード(*)が使える。
1 |
$ sed -i -e "s/置換前の文字列/置換後の文字列/g" /var/www/ ... /filename_*.txt |
また、エスケープ文字はいくつかあるが、”s/置換前の文字列/置換後の文字列/g”はダブルクォーテーションに囲まれているので、この中でエスケープが必要になるものは、
1 |
" $ ` \ |
の4種類になる。括弧などをエスケープしようとすると、「無効な前述の正規表現です」、と怒られる。
特定のディレクトリ内のファイルを検索(find)し、そのファイル内から(xargs)特定の文字列を検索(grep)して一覧で表示する。
一発で複数のファイルを検索するのに重宝するコマンド例。
1 2 3 4 5 |
$ find DIRECTORY -type f -name "FILENAME" -print | xargs grep "TEXT" /dev/null // -type f : ファイルのみ検索 // -name : ファイル名を絞り込む(記述しないとディレクトリ内の全ファイルが対象となる) // /dev/null : そのままでいい。おまじない。 |
cdコマンドで移動してる場合、現在のディレクトリはピリオド(.)、普段は/var/www/…みたいな感じ。
特定のディレクトリ内の特定のファイルを一気に消すコマンド。
【rm -rf】でも十分だが、間違えて消したら怖いので、findで消えるファイルの一覧を目で確認してから行うと心穏やか。
1 2 3 |
$ find FILEPATH -print // 確認したら↓を実行 $ rm -rf FILEPATH |
FILEPATHの部分は同じ。例えば、「/var/www/abc.com/dir/*.txt」みたいな感じ。ワイルドカードもOK。
findでざーっと一覧が出るので、念のためチェック。
続くrmコマンドのオプションは、
などがある。
-f をつけているので、エンターを押した瞬間、なんの確認もなく一気に消せる。それが怖い人向けのfindです。
もし -f をつけなかったら、ひとつひとつファイルを消していいか確認しやがる( -i )ので、大量の場合はそれはそれで面倒。
まぁ、怖いなら先にrsyncとかでバックアップしとけってことですね。
指定したディレクトリからn階層下までの容量を確認する。それだけ。
サーバーの容量が足りない場合など、どのディレクトリがひっ迫しているかを追跡して当たりをつけるためによく使う。
1 |
$ du -h --max-depth=n FILEPATH |
FILEPATHの部分は、例えば「/var」みたいな感じ。ワイルドカードもOK。
nの部分は数字。もし、du -h –max-depth=1 /var とした場合は、
みたいな感じで、各1階層までの容量がわかる。さらに /var/www を細かく見たいとなれば、
du -h –max-depth=1 /var /www とすれば
のように詳細がわかる。ちなみに単位は「-h」オプションで最適化されているが、統一したい場合は -m (メガ)とか -g (ギガ)とかにすればいい。