この記事では、いくつかのツール、特にgrep
を紹介します。 、指定された正規式に一致するディレクトリまたはファイルを検索するために使用できるLinux®コマンドラインツール。
grep
とは ?
公式回答:
grep
名前付き入力ファイル(ファイルを指定しない場合や単一のハイフンを使用する場合は標準入力(-)を検索します )ファイル名として)指定されたパターンへの一致を含む行の場合。デフォルトでは、grep
一致する行を印刷します。
ニサーの答え:
Ctrl のような特定のファイル、ディレクトリ、または出力を検索します + f Windows®で。この機能を使用して、必要なものを正確にターゲティングします。
多くの場合、コマンドがどのように機能するかを示す最も簡単な方法は、例を使用することです。
/ etc / passwdですべてのユーザーを確認できます 次のコマンドでファイルを作成します:
# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash
grep
を使用する 、そのリストを絞り込んで1人のユーザーを見つけることができます。
特定のユーザーを探す :
ユーザーを一覧表示しますが、 sherの行のみを表示する出力をフィルタリングします その中に。
# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash
または、1つのコマンドで同じユーザーを検索します:
# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
次の例では、bashアクセス権を持つすべてのユーザーを検索します。
# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
ほとんどのLinuxコマンドと同様に、grep
フラグ(通常は1つ以上のダッシュが前に付いた1つ以上の文字)を使用して、機能を追加します。
-v
:指定された検索パターンを含まないものをすべて表示します:
# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-i
:大文字と小文字を区別せずに一致を表示します。これは、必要なものが正確にわからない場合に役立ちます:
# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash
grep
パイプ記号を使用します( | )またはを意味します 一度に複数のものを検索できます。次のいずれかの方法を使用して、一度に複数のものを検索します。
\ :次の文字であるパイプをエスケープします( | )またはとして機能できるようにする :
# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-E : |などの特殊文字を解釈します またはとして :
# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
egrep
コマンドは同じことをします:
# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
さまざまなフラグを組み合わせて使用して、検索を絞り込むことができます。
次の例は、シャーではないすべてのユーザーを示しています またはラック 、ファイルコンテンツのパターンの場合に関係なく:
# egrep -vi 'SHER|RACK' /etc/passwd
次のセクションでは、grep
の他の使用法について説明します。 その他の便利なコマンドを紹介します。
Linuxでは、ポンド記号(#)を追加して行をコメントアウトします。 )行の先頭。このようにして、独自のメモを追加できます。スクリプトまたはプログラムはコメントを無視し、それらの行を実行しません。
これらのコメントを無視してファイルを表示するには、次のコマンドを使用します。
# grep -v ^'#' /file
grep
を実行することもできます 別のgrep
の上に コマンド。
たとえば、コメント行を無視してファイルをリストし、特定のものを探します。
# grep -v ^'#' /file | grep 'hello'
ほとんどのLinuxシステムは、実行されたコマンドのログを保持します。このログには、コマンドhistory
でアクセスできます。 。 history
を組み合わせる場合 grep
を使用 、これまでにシステムで実行されたものを非常に効果的に調査できます。
passwd
を確認してください 実行されるコマンドおよびpasswdを含むその他のコマンド パターン:
# history | grep 'passwd'
特定の日に実行される検索コマンド:
# history | grep '2021-05-10'
特定の時間に実行されたコマンドを確認します:
# history | grep '2021-05-10 11:00:'
ポート80
で実行されているWebトラフィックを一覧表示します および443
:
# netstat -plnt | egrep '80|443'
^を使用できます grep
で 検索パターンで始まる行のみを表示するコマンド。
たとえば、次のコマンドを実行して、システムがrootログインを許可しているかどうかを確認します。
# grep ^'Permit' /etc/ssh/sshd_config
top
を使用する ログイン試行ログの最初の10行を表示するには:
# head /var/log/secure
tail
を使用する ログイン試行ログの最後に行を表示するには:
# tail /var/log/secure
last
を使用する 最新のログインの最初の10行を表示するコマンド:
# last | head -10
tail -f
を使用します ファイルがリアルタイムで大きくなるのを監視します。たとえば、最新のログイン試行を確認したり、進行中の試行を監視したりできます。誰かがログインしようとすると、次のコマンドで発生するように表示されます。
# tail -f /var/log/secure
Ctrl + C to exit
このセクションのツールを使用して、新しく見つけたスキルを試すことができます。
vimまたはnano
vi
、vim
、およびnano
Linuxで最も一般的なテキストエディタです。Windowsでメモ帳を使用するのと同じように、ファイルを編集するために使用できます。
開いて新しいファイルを作成します。テスト :
# vim /test
アクション | キーシーケンス | 説明 |
---|---|---|
新しいコンテンツの入力を開始するには: | i | テキストを挿入する準備をする |
保存せずに終了するには: | Esc :q! | 挿入モードを解除して終了 |
終了して保存するには: | Esc :wq! | 挿入モードをエスケープし、書き込み、終了 |
echo
は、入力した内容を繰り返すようにLinuxに指示する単純なコマンドです。これはgrep
のテストに効果的です。 最初に新しいファイルを作成せずにコマンドを実行します。
たとえば、こんにちは 表示:
# echo 'hello'
hello
こんにちはを表示します 真ん中の文字を検索します:
# echo 'hello' | grep 'ell'
hello
echo
を使用することもできます -e
を使用して複数行を表示するには および\n
新しい行を追加します。
こんにちはを表示します およびho 別の行に:
# echo -e 'hi\nho'
hi
ho
こんにちはを表示します およびho 別の行でこんにちはを検索します :
# echo -e 'hi\nho' | grep 'hi'
hi
grep
のように 、sed
には多くの用途がありますが、主にこのコマンドを使用して、指定したコンテンツを検索および置換します。特定の行を特定する方法の基本的な例を次に示します。
まず、vim
を使用します ファイルを作成するには:
# vim /test
エディターが開いたら、次の行を入力します。
1 Hi
2 How
3 Are
4 You
新しいファイルを表示します:
# cat test
1 Hi
2 How
3 Are
4 You
sed
を使用する 最初の行を除くすべてを返すには:
# sed 1d test
2 How
3 Are
4 You
最初の行のみを返します:
# sed 1q test
または
# sed '1!d' test
1 Hi
2行目から4行目のみを返します:
# sed '2,4!d' test
2 How
3 Are
4 You
awk
など、使用できるツールは他にもたくさんあります。 、cut
、sort
、xargs
、等々。これで、echo
を使用してファイルを作成する方法がわかりました。 、あなたは彼らとより効果的に実験することができます。