태그 보관물: bash-script

bash-script

배쉬 : 유형 (배쉬 내장)의 사용은 무엇입니까? -f option suppresses

Bash 스크립트에서 내가 찾은 명령을 발견했습니다.

find /var/log/abcd -type f

위 명령은 로그 파일 정리와 관련이 있습니다. 나는 무엇을 알고 find있습니다.

를 본 후 -type f매뉴얼 페이지를 보았습니다. BASH_BUILTINS (1) 의 맨 페이지에서 볼 수 있습니다.

type명령 에서 -f 플래그에 대한 설명 은 다음과 같습니다.

The -f option suppresses shell function lookup, as with the command builtin.

다음은 내 질문입니다.

  1. 사용은 type무엇입니까?
  2. -f깃발 의 의미는 무엇입니까 ?
  3. typewith find명령 을 사용하는 것은 무엇입니까 ?

[편집] :- 지금까지 모든 의견과 답변을 읽은 후 -type option in command findVs의 잘못된 해석의 원인에 대해 언급하고 싶습니다 type command. 이것은 모든 내가 가정했기 때문에 일어난 날짜까지 단지 짧은 옵션 (의 경우에는 시험 본 findA를 명령) – 단일 마이너스 기호 ” , 예 ls -l. 대부분의 경우 이중 빼기 기호 ‘-‘ 가있는 긴 옵션을 보았습니다 ( 예 🙂ls --version .



답변

이 경우 typebash built-in과는 아무런 관련 이 type없지만 나중에 더 자세히 설명합니다.

“타입” 에 대해 조금

BASH 내장 type명령은 명령에 대한 정보를 제공합니다. 그러므로:

$ type type
type is a shell builtin

구문은 다음과 같습니다.

type [-tap] [name ...]
  • -t: 발견 된 경우에만 인쇄 유형
  • -a: 내장 및 기타 명령의 모든 발생을 인쇄합니다.
  • -p: call to command에서 실행될 디스크 파일을 인쇄합니다.

우리가 보면 time, killcat예를 들어 :

$ 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나머지를 확인하십시오 .

특정 옵션을 검색하려면 (사람이있는 동안) 수행 할 수 있습니다.

/ ^ \ s *-타입Enter

그런 다음 사용 n을 위해 다음 당신이 그것을 찾을 때까지.


쉘 명령에 대해 조금

이것은 약간의 개인적인 해석입니다.

이 특별한 경우 언급 할 가치가있는 것은 명령, 옵션, 인수 및 파이프입니다.

이것은 다소 느슨하게 사용되지만 내 어휘에는 짧게 있습니다.

  • 명령 : 프로그램 또는 내장 .
  • 매개 변수 : 명령 단어 뒤의 엔티티.
  • 옵션 : 선택적 매개 변수.
  • 인수 : 필수 매개 변수.

명령 스펙에서 대괄호는 옵션을 지정하는 데 사용되며 선택적으로 인수를 지정하는 데 사용됩니다. 그러므로:

foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...

부여 -a -b-s같은 선택적인 매개 변수, filea는 일이 필요합니다.
-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 {} \;일부는 내 확장 findsome_command string_of_found_entity.


더 나아가

  • 인용
  • 확장
  • 명령 대체
  • 그리고 훨씬 더

이 기능이 유용 할 수 있습니다 .


답변

당신 man findhelp 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.


답변

잘못된 매뉴얼 페이지를 보았습니다. 이것은 type -f명령이 아니지만 find -type f상당히 다른 옵션입니다 find. 올바른 설명 은 매뉴얼을 참조하십시오.


답변

-type f디렉토리에있는 파일이 아닌 일반 파일, 즉 심볼릭 링크가 아닌 장치 파일이 아닌 파일 만 인쇄하도록 find에 지시합니다. man find그런 다음 -f옵션 을 검색하십시오 .