Bashスクリプトで次のコマンドが見つかりました。
find /var/log/abcd -type f
上記のコマンドは、ログファイルが消去された状態で実行されます。私はそれが何をしてfind
いるのか知っています。
それを見た後、-type f
マンページを確認しました。マンページで見ました。BASH_BUILTINS(1)
コマンドの下の-fフラグの説明はtype
次のとおりです。
The -f option suppresses shell function lookup, as with the command builtin.
私の質問は次のとおりです。
- 用途は何ですか
type
? - 旗はどういう意味ですか
-f
? type
withコマンドを使用するfind
とどうなりますか?
[編集する]:--type option in command find
これまでのコメントと回答の両方を読んだ結果、私がVsを誤解したtype command
理由について申し上げたいと思います。これはすべて、これまで短いオプションしか表示できないと仮定しているためです(コマンドの場合はテストfind
)。単一マイナス記号「-」、はい、ls -l
。ほとんどの場合、長い選択肢を見ました。二重マイナス記号「--」、はい、ls --version
。
答え1
この場合、type
bashの組み込み機能とは何の関係もありませんtype
。これについては後で詳しく説明します。
少し「タイプ」
BASH 組み込みtype
コマンドは、コマンドに関する情報を提供します。したがって:
$ type type
type is a shell builtin
構文は次のとおりです。
type [-tap] [name ...]
-t
:発見された場合のみタイプ印刷-a
: 組み込みコマンドやその他のコマンドなど、すべてのコマンド発生を印刷します。-p
:コマンドが呼び出されたときに実行されるディスクファイルを印刷したり、何も印刷しません。
time
を見て、kill
例えば次のようにします。cat
$ type time kill cat
time is a shell keyword
kill is a shell builtin
cat is /bin/cat
$ type -t time kill cat
keyword
builtin
file
$ type -a time kill cat
time is a shell keyword
time is /usr/bin/time
kill is a shell builtin
kill is /bin/kill
cat is /bin/cat
$ type -ta time kill cat
keyword
file
builtin
file
file
これで、これは Bash シェルにあり、型を入力する場合にtime some_cmd
bash 組み込みコマンドが使用されることを指定します。time
このシステムを使用するには、time
次の手順を実行できます/usr/bin/time some_cmd
。
組み込みコマンドではなくシステムコマンドを使用する一般的な方法はwhich
。
tt=$(which time)
次にそれを使用して$tt
システムを呼び出しますtime
。
問題のあるコマンド
これは-type
コマンドのオプションですfind
。このオプションは、エンティティの種類を指定するパラメータを使用します。はい
find . -type f # File
find . -type d # Directory
もっとたくさんあるので、man find
残りも確認してみてください。
特定のオプションを検索するには(manで)次の手順を実行します。
/^\s*-タイプEnter
その後、n
使用Nextあなたがそれを見つけるまで。
シェルコマンドの知識
これは少し個人的な解釈です。
この特定の例で言及する価値があるいくつかの点は、コマンド、オプション、パラメータ、およびパイプです。
これは少し緩いですが、私の用語では簡単に保ちます。
- コマンド: 1プログラムまたは組み込み。
- パラメータ: 命令の後のエンティティです。
- オプション:ワン任意に選択できる範囲。
- 引数:必須パラメータです。
コマンド仕様では、角かっこはオプションを指定するために使用され、オプションでより小さい/より大きい引数を指定するために使用されます。したがって:
foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...
オプションの引数と必須の引数として提供-a
-b
されます。オプションですが、指定されている場合は必須引数を使用してください。ポイントは、複数のファイルが利用可能であることを示します。-s
file
-t
bar
これは正確な仕様ではないため、決定しなければならないman
ことが多いです。help
パラメータオプションと入力の位置付けはしばしば混乱する可能性がありますが、一部のシステムではパラメータの混合位置指定を処理しないため、通常は位置ベースのアプローチに固執するのが最善です。たとえば、
chmod -R nick 722 foo
chmod nick 722 foo -R
どちらも一部のシステムでは機能しますが、後者は他のシステムでは機能しません。
正確なコマンドにはすべてのパラメータが属しますfind
。したがって、特定の属性を知りたい場合は、man find
探しておくべき正しい場所です。シェルなどのマニュアルページを見る必要がある場合は、次のようにできます。
find . $(some command)
find . `some command`
find . $some_var
find . -type f -exec some_command {} \;
find . -type f | some_command
...
はすべてのパラメータが与えられますが、その部分は〜に拡張される-exec
特別なパラメータです。-exec some_command {} \;
find
some_command {} \;
find
some_command string_of_found_entity
さらに進む
- 引用する
- 拡張
- コマンドの置き換え
- もっと
答え2
またはではman find
ないを見てください。 in は必要なファイル形式を指定します。help type
man bash
type
find
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option or the
-follow option is in effect, unless the symbolic link is
broken. If you want to search for symbolic links when -L
is in effect, use -xtype.
s socket
D door (Solaris)
組み込みはtype
まったく異なるものであり、内部で使用されていませんfind
。
答え3
間違ったマニュアルページを見ました。これはコマンドではなくまったく異なるオプションですtype -f
。find -type f
正しいfind
説明についてはマニュアルを確認してください。
答え4
これはあなたが見ている正しいマニュアルページではありません。使用する必要があります
man find
これは、述語が通常のファイル-type f
のみを選択することを知らせます。-type