「Linuxで実行ファイルをfindで探す方法」の版間の差分
(同じ利用者による、間の2版が非表示) | |||
行16: | 行16: | ||
ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや '''ELF''' のファイルを検索する、といったシーンでの検索方法を紹介します。 | ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや '''ELF''' のファイルを検索する、といったシーンでの検索方法を紹介します。 | ||
− | + | == 実行ファイルとは? == | |
'''実行ファイル''' というと実行できるファイルのことで、主に以下のものがあります。 | '''実行ファイル''' というと実行できるファイルのことで、主に以下のものがあります。 | ||
− | * ELF のファイル | + | * ELF のファイル (もちろん、ELFのファイルも x ビットがたってます) |
* x ビットがたってるスクリプト | * x ビットがたってるスクリプト | ||
− | + | == findコマンドで実行ファイルを探すには? == | |
find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。 | find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。 | ||
x がたってるファイルは | x がたってるファイルは | ||
行34: | 行34: | ||
* -executable | * -executable | ||
* パーミッション -perm /u=x,g=x,o=x | * パーミッション -perm /u=x,g=x,o=x | ||
− | で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh | + | で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。一方で -perm オプションの良さは、オーナ、グループ、その他を細かく指定できるところです。 |
+ | |||
== x のたってる実行可能なファイルの探し方 == | == x のたってる実行可能なファイルの探し方 == | ||
さて、実際に、実行可能なファイルを検索してみましょう。 | さて、実際に、実行可能なファイルを検索してみましょう。 | ||
行62: | 行63: | ||
find . -exec file {} \; | grep -i elf | find . -exec file {} \; | grep -i elf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == まとめ == | ||
+ | * ELFやスクリプトなどの実行可能なファイルは、 find . -executable -type f で検索できます。 | ||
+ | * ELF だけを探したい場合は、 find と grep を組み合わせて探します。 | ||
+ | *: find . -executable -type f -exec file {} \; | grep -i elf | ||
== 関連項目 == | == 関連項目 == | ||
* [[メインページ]] | * [[メインページ]] | ||
<!-- vim: fileencoding=utf-8 filetype=mediawiki | <!-- vim: fileencoding=utf-8 filetype=mediawiki | ||
--> | --> |
2015年12月21日 (月) 22:58時点における最新版
Linuxの find コマンドは、ファイルを検索するために利用するコマンドです。 find は、様々な条件でファイルを検索できます。実行ファイルだけを検索したい場合があり、今回は、実行ファイル(xがたってるファイル)を検索する例を紹介します。
読み方
- find
- ふぁいんど
- ELF
- いーえるえふ
概要
シェルの上でコマンドがどこにあるのか調べるために、よく使われるのは which/where/whence のビルトインコマンドでしょう。それらのコマンドは、パスが通っていて、 x ビットがたってるファイルを検索してくれます。補足になりますが、 x ビット とは、実行権限 のことで、x ビット のたっているコマンドが実行できます。 以下は、which コマンド で cc コマンドのパスを探す例です。
$ which cc /usr/bin/cc
ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや ELF のファイルを検索する、といったシーンでの検索方法を紹介します。
実行ファイルとは?
実行ファイル というと実行できるファイルのことで、主に以下のものがあります。
- ELF のファイル (もちろん、ELFのファイルも x ビットがたってます)
- x ビットがたってるスクリプト
findコマンドで実行ファイルを探すには?
find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。 x がたってるファイルは
- ファイル
- ディレクトリ
の二種類があります。
レギュラーファイル(通常のファイル) を検索するには、
-type f
を指定することで、絞込ができます(ディレクトリを排除できる)。
実行可能という条件は
- -executable
- パーミッション -perm /u=x,g=x,o=x
で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。一方で -perm オプションの良さは、オーナ、グループ、その他を細かく指定できるところです。
x のたってる実行可能なファイルの探し方
さて、実際に、実行可能なファイルを検索してみましょう。
find . -executable -type f
find . -perm /u=x,g=x,o=x -type f
以下のコマンドラインの場合、実行可能(x)なファイルが見つかるので、ディレクトリも対象になります。
find . -executable
ELF だけを検索する
上記までの例では、x ビットがたってるファイルが対象になるため、 x のたってる hoge.sh みたいなファイルも引っかかります。
Linux の実行ファイルは、 ELF ファイルフォーマットです。
ELF なファイルだけを検索する場合には、条件が増え、 file コマンドを利用し、さらに grep で絞り込む必要があります。
find . -executable -type f -exec file {} \; | grep -i elf
find . -exec file {} \; | grep -i elf
まとめ
- ELFやスクリプトなどの実行可能なファイルは、 find . -executable -type f で検索できます。
- ELF だけを探したい場合は、 find と grep を組み合わせて探します。
- find . -executable -type f -exec file {} \; | grep -i elf