유형(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오해한 이유에 대해 말씀드리고 싶습니다 . 이 모든 일은 지금까지 짧은 옵션만 볼 수 있다고 가정하기 때문에 발생합니다(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사용다음당신이 그것을 찾을 때까지.


쉘 명령에 대한 지식

이건 좀 개인적인 해석입니다.

이 특정 예에서 언급할 가치가 있는 몇 가지 사항은 명령, 옵션, 매개변수 및 파이프입니다.

이것은 약간 느슨하지만 내 용어로는 간단하게 유지하겠습니다.

  • 명령: 하나프로그램또는내장.
  • 매개변수: 명령어 뒤의 엔터티입니다.
  • 옵션: 하나임의로 선택할 수 있는범위.
  • 인수: 필수 매개변수입니다.

명령 사양에서 대괄호는 옵션을 지정하는 데 사용되며 선택적으로 보다 작음/보다 큼은 인수를 지정하는 데 사용됩니다. 그러므로:

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 -f. find -type f올바른 find설명은 매뉴얼을 확인하세요.

답변4

이것은 당신이 보고 있는 올바른 매뉴얼 페이지가 아닙니다. 당신은 사용해야합니다

man find

이는 조건자가 일반 파일 -type f만 선택한다는 것을 알려줍니다.-type

관련 정보