grep の検索結果でファイル名出力の指定
通常、コマンドでつかうぶんには気にならない
grep の検索結果
しかし、スクリプトにして処理するときには
ルール作っておくと便利
複数ファイルが該当すると
grep コマンドはファイル名まで出すけど
対象が1つの場合は出力しない
例えば
1 | sudo grep key /etc/ssh/ *config |
を実行すると
1 2 3 4 5 6 7 8 | /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_key /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_rsa_key /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_dsa_key /etc/ssh/sshd_config : # Lifetime and size of ephemeral version 1 server key /etc/ssh/sshd_config : #PubkeyAuthentication yes /etc/ssh/sshd_config : #AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/sshd_config : # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts /etc/ssh/sshd_config : # Change to no to disable s/key passwords |
というようにファイル名まででる
でも結果にファイル名を入れたくないのなら
1 | sudo grep -h key /etc/ssh/ *config |
というように
grep に -h オプションをつける
逆に、通常は対象ファイルが1つの場合は
ファイル名はでないけど
処理のためにはファイル名が必要
というのなら
-H オプションをつける
1 | sudo grep -H key /etc/ssh/ *config |
すると
1 2 3 4 5 6 7 8 | /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_key /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_rsa_key /etc/ssh/sshd_config : #HostKey /etc/ssh/ssh_host_dsa_key /etc/ssh/sshd_config : # Lifetime and size of ephemeral version 1 server key /etc/ssh/sshd_config : #PubkeyAuthentication yes /etc/ssh/sshd_config : #AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/sshd_config : # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts /etc/ssh/sshd_config : # Change to no to disable s/key passwords |
というようにファイル名も表示される