开发者

Determine if a file is script or not

I am wondering that how can I Use the file command and determine if a file is a script or not.for example in usr bin I want to know which fil开发者_运维百科e is script or not. actually i don't want write any script just i need a command for determine that.


You can certainly trust file to find any script in the directory you specify:

file /usr/bin/* | grep script

Or, if you prefer to do it yourself and you are using bash you can do:

for f in /usr/bin/*; do r=$(head -1 $f | grep '^#! */') && echo "$f: $r"; done

which uses the shebang to determine the interpreter and thus the script entity.


This should work (assuming that you're using BASH):

for f in `ls`; do file $f|grep "executable"; done

Update- I just validated that this works for C shell scripts, BASH, Perl, and Ruby. It also ignores file permissions (meaning that even if a file doesn't have the executable bit set, it still works). This seems to be do to the file command looking for a command interpreter (bash, perl, etc…)


file can't guarantee to tell you anything about a text file, if it doesn't know how to interpret it.

You may need to do a combination of things. jschorr's answer should probably work for the stuff in /bin, but another way to test a file might be to check whether a text file is executable.

stat -c "%A" myfilename | grep x

If that returns anything, then your file has execute permissions on it. So if file gets you a description that tells you it's plain text (like "ASCII text"), and there are execute permissions on the file, then it's a pretty good bet that it's a script file.

Not perfect, but I don't think anything will be.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜