Grep#
grep は通常、ターミナルの出力やテキストから文字をフィルタリングするために使用されます。
基本構文
grep "let's find something" file.[txt,json,js,md,etc]
オプション
-i:大文字と小文字を無視する
-c:一致する行の数をカウントする
grep を使用すると、ログ分析が簡単に行えます。緊急対応の際には、通常、ログファイルを分析して指定された内容をフィルタリングするために使用されます。
-e:複数の検索条件を指定する
-r:再帰的に検索し、指定されたディレクトリ内のすべてのファイルを検索する
-o:一致した内容を表示する
grep はパイプ |
と組み合わせて使用できます。例えば:
cat /etc/passwd | grep "root"
Man#
man コマンドは他のコマンドの構文マニュアル情報を表示するために使用されます。
Cat#
cat コマンドはファイルの内容を表示するために使用され、内容はすべて現在のターミナルに出力されます。
- ファイルを結合する
- ファイルを作成する
cat > newfile.txt
Head#
head コマンドはファイルの先頭の指定行の内容を表示するために使用され、デフォルトでは 10 行を表示します。
-n:行数を指定する
Awk#
awk は強力なテキストストリームエディタで、データをフィルタリング、抽出、または変換するために使用できます。
Sed#
sed コマンドはテキストストリームエディタで、ファイルやデータストリーム内の内容を検索、置換、挿入、または削除するために使用されます。
- 置換
# 5をfiveに置換
echo 'They ate 5 apples' | sed 's/5/five/'
- 指定行を表示
# 指定された入力の4、5、6、7行を表示
seq 65 78 | sed -n '4,7p'
68
69
70
71
フィルタリングされた行を表示するには、p コマンドを使用します。ただし、デフォルトではすべての入力行が表示されるため、通常は -n コマンドラインオプションと一緒にこのコマンドを使用して、デフォルトの表示機能をオフにします。
- 正規表現
BRE:基本正規表現、ERE:拡張正規表現
デフォルトでは、sed は検索パターンを基本正規表現(BRE)として扱います。-E オプションを使用することで拡張正規表現(ERE)を有効にできます。古いバージョンでは -r が ERE を示すために使用されていましたが、現在は -E の方が一般的です。GNU sed では、BRE と ERE の唯一の違いはメタキャラクターの適用方法であり、機能に違いはありません。
# sp で始まる行を表示
printf 'spared no one\npar\nspar\n' | sed -n '/^sp/p'
spared no one
spar
# ar で終わる行を表示
printf 'spared no one\npar\nspar\n' | sed -n '/ar$/p'
par
spar
# すべての行を表示し、par を PAR に置換
printf 'spared no one\npar\nspar\n' | sed 's/^par$/PAR/'
spared no one
PAR
spar
- 一括ファイル名変更
Tail#
tail はファイルの末尾の数行の内容を表示するために使用されます。
Chmod#
chmod コマンドはファイルの権限を変更するために使用されます。Linux では、ファイルの権限は 3 つのグループに分かれています:所有者、グループ、その他で、権限はそれぞれ:読み取り(read)、書き込み(write)、実行(execute)です。
文字表示法は rwx で、数字表示法は 755(r:4,w:2,x:1)です。
各ファイルにはデフォルトの権限があります。例えば、ファイルのデフォルト権限は 644
で、ディレクトリのデフォルト権限は 755
です。
ファイルのデフォルト権限は次の通りです (rw-r--r--
):
ディレクトリのデフォルト権限は次の通りです(rwxr-xr-x
):
したがって、chmod コマンドを使用してファイルに対応する権限を付与できます。
# その他のユーザーに実行権限を付与
chmod +x Test.jar
# ディレクトリ内のすべてのファイルにすべての権限を付与。通常、777 権限を付与することは推奨されません。実行可能ファイルの権限が大きすぎると、セキュリティ上の問題が発生する可能性があります。
chmod 777 -R Pentest/
Xargs#
他のコマンドの出力を使用して xargs を介してコマンドを構築および実行します。
find /var/www/html -type f -name "*.php" | xargs grep "eval("
# find コマンドは /var/www/html ディレクトリ内のすべての php ファイルを検索します。
# xargs は検索されたファイルリストを grep に渡して内容をフィルタリングし、各 php ファイルから eval( 文字をフィルタリングします。
# 複数のファイルを圧縮
ls *.log | xargs gzip
Find#
find コマンドはファイルとディレクトリを検索するために使用されます。
# すべての log で終わるファイルを検索
find / -name "*.log"
# 1 ヶ月を超えるログファイルを定期的にクリーンアップ
find /var/log -type f -name "*.log" -mtime +30 -delete
# 重要なファイルをバックアップ
find ~/Documents -name "*.docx" -exec cp {} /path/to/backup/ \;
参考:
https://www.trevorlasn.com/blog/10-essential-terminal-commands-every-developer-should-know