タイプ(Bash組み込み関数)は何に使用されますか?

タイプ(Bash組み込み関数)は何に使用されますか?

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.

私の質問は次のとおりです。

  1. 用途は何ですかtype
  2. 旗はどういう意味ですか-f
  3. typewithコマンドを使用するfindとどうなりますか?

[編集する]:--type option in command findこれまでのコメントと回答の両方を読んだ結果、私がVsを誤解したtype command理由について申し上げたいと思います。これはすべて、これまで短いオプションしか表示できないと仮定しているためです(コマンドの場合はテストfind)。単一マイナス記号「-」、はい、ls -l。ほとんどの場合、長い選択肢を見ました。二重マイナス記号「--」、はい、ls --version

答え1

この場合、typebashの組み込み機能とは何の関係もありません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_cmdbash 組み込みコマンドが使用されることを指定します。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されます。オプションですが、指定されている場合は必須引数を使用してください。ポイントは、複数のファイルが利用可能であることを示します。-sfile-tbar

これは正確な仕様ではないため、決定しなければならない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 {} \;findsome_command {} \;findsome_command string_of_found_entity


さらに進む

  • 引用する
  • 拡張
  • コマンドの置き換え
  • もっと

これは役に立ちます。

答え2

またはではman findないを見てください。 in は必要なファイル形式を指定します。help typeman bashtypefind

   -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 -ffind -type f正しいfind説明についてはマニュアルを確認してください。

答え4

これはあなたが見ている正しいマニュアルページではありません。使用する必要があります

man find

これは、述語が通常のファイル-type fのみを選択することを知らせます。-type

関連情報