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
오해한 이유에 대해 말씀드리고 싶습니다 . 이 모든 일은 지금까지 짧은 옵션만 볼 수 있다고 가정하기 때문에 발생합니다(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
사용다음당신이 그것을 찾을 때까지.
쉘 명령에 대한 지식
이건 좀 개인적인 해석입니다.
이 특정 예에서 언급할 가치가 있는 몇 가지 사항은 명령, 옵션, 매개변수 및 파이프입니다.
이것은 약간 느슨하지만 내 용어로는 간단하게 유지하겠습니다.
- 명령: 하나프로그램또는내장.
- 매개변수: 명령어 뒤의 엔터티입니다.
- 옵션: 하나임의로 선택할 수 있는범위.
- 인수: 필수 매개변수입니다.
명령 사양에서 대괄호는 옵션을 지정하는 데 사용되며 선택적으로 보다 작음/보다 큼은 인수를 지정하는 데 사용됩니다. 그러므로:
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