「Linuxで実行ファイルをfindで探す方法」の版間の差分

提供: Ubuntu入門
移動: 案内検索
 
(同じ利用者による、間の4版が非表示)
行8: 行8:
  
 
== 概要 ==
 
== 概要 ==
シェルの上でコマンドがどこにあるのか調べるために、よく使われるのは which/where/whence のビルトインコマンドでしょう。それらのコマンドは、パスが通っていて、 x ビットがたってるファイルを検索してくれます。
+
シェルの上でコマンドがどこにあるのか調べるために、よく使われるのは which/where/whence のビルトインコマンドでしょう。それらのコマンドは、パスが通っていて、 x ビットがたってるファイルを検索してくれます。補足になりますが、 '''x ビット''' とは、'''実行権限''' のことで、'''x ビット''' のたっているコマンドが実行できます。
 
以下は、'''which''' コマンド で '''cc''' コマンドのパスを探す例です。
 
以下は、'''which''' コマンド で '''cc''' コマンドのパスを探す例です。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行16: 行16:
  
 
ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや '''ELF''' のファイルを検索する、といったシーンでの検索方法を紹介します。
 
ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや '''ELF''' のファイルを検索する、といったシーンでの検索方法を紹介します。
 
+
== 実行ファイルとは? ==
 +
'''実行ファイル''' というと実行できるファイルのことで、主に以下のものがあります。
 +
* ELF のファイル (もちろん、ELFのファイルも x ビットがたってます)
 +
* x ビットがたってるスクリプト
 +
== findコマンドで実行ファイルを探すには? ==
 
find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。
 
find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。
 
x がたってるファイルは
 
x がたってるファイルは
行30: 行34:
 
* -executable
 
* -executable
 
* パーミッション -perm /u=x,g=x,o=x
 
* パーミッション -perm /u=x,g=x,o=x
で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。
+
で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。一方で -perm オプションの良さは、オーナ、グループ、その他を細かく指定できるところです。
 +
 
 
== x のたってる実行可能なファイルの探し方 ==
 
== x のたってる実行可能なファイルの探し方 ==
 
さて、実際に、実行可能なファイルを検索してみましょう。
 
さて、実際に、実行可能なファイルを検索してみましょう。
行58: 行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時点における最新版

Linuxfind コマンドは、ファイルを検索するために利用するコマンドです。 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

関連項目