시스템의 / bin에있는`[`프로그램은 무엇입니까?


32

최근에 Fedora의 /bin폴더를 탐색하고 라는 이진 파일이 발견되었습니다 [. 인터넷에 대한 자세한 정보를 찾으려고했지만 유용한 정보를 찾을 수 없었습니다. 그것을 통해 실행해도 strace면밀한 검사에 유용한 것은 없습니다.

그게 뭐야? 경고해야합니까? 시스템 손상의 결과 일 수 있습니까? 내가 그것을 실행해야합니까? 패키지에 속합니까?


4
[ -f /bin/[ ] && printf "%s\n" "Don't panic"
jasonwryan

@jasonwryan 그래, 알아내는 데 시간이 걸렸다. 인터넷에서 많은 정보를 찾을 수 없었고 Google 은별로 도움이되지 않았습니다. 그것이 내 신발에있는 다음 사람을 도울 수 있기를 바랍니다.
NlightNFotis 2013

10
실행 man [뭐라고보고 [명령입니다!
질 'SO-정지 존재 악마'

@Gilles 솔직히 말해서에 대해 언급 bash했으며 다른 것이 될 수도 있다고 생각했습니다. 파일 시스템에서 본 적이없는 이름의 이진 파일을 보거나 다른 방법으로 생각할 때 머리에 의심을 없애기 위해 더 구체적인 것을 찾아야합니다. .
NlightNFotis 2018

4
DO가 rpm -qif /bin/[이 ... 어디에서 오는지 알아내는
vonbrand

답변:


37

[세 이하 거주하는 바이너리 /bin많은 GNU / Linux 배포판에 나무 오프 놀라지하는 것이 아닙니다. 적어도 내 Fedora 19에서는 아래에 설명 된 것처럼 coreutils 패키지의 일부입니다.

$ rpm -qf /bin/[
coreutils-8.21-13.fc19.x86_64

쉘 스크립트로 작성되거나 대화식으로 사용되는 test것과 같은 표현식을 허용 하는 동의어입니다 [ expression ].


16
bash은 내장 test되어 [있으며 외부 바이너리를 호출하지 않습니다.
jordanm

1
@jordanm, 오늘날 대부분의 쉘에는 기본적으로 쉘이 포함되어 있습니다. 그러나 그것은 항상 그런 것은 아닙니다 (또는 모든 껍질에 있습니다). POSIX가 명령 할 수도 있습니다.
vonbrand

2
@vonbrand pubs.opengroup.org/onlinepubs/009695399/utilities/test.html 당신이 맞습니다. [이 사양 에는 테스트 명령 이 필요합니다.
yegle

@vonbrand, Bourne과 같은 쉘에만 일반적으로 내장 [명령이 있습니다. 비 Bourne 씨는 같은 같은 사람 (t)csh, rc, es일반적으로하지 ( fish예외가있다).
Stéphane Chazelas

5

[명령과 동일 test명령.

쉘 스크립트에서 다소 간결한 조건문을 작성할 수 있습니다. SunOS 매뉴얼 페이지에서 :

   if [ "$1" = "pear" ] || [ "$1" = "grape" ] || [ "$1" = "apple" ]
   then
       command
   fi

제거하면 스크립트가 깨집니다!


[기본 제공 명령이 없는 쉘용으로 작성된 스크립트는 작동하지 않습니다 . 대부분의 껍질. 여전히을 제거하지 않는 것이 좋습니다 /bin/[.
Keith Thompson

@ KeithThompson, 모든 셸이 [내장되어 있으며 셸이 아닌 응용 프로그램이 실행 [되는 스크립트 가 중단됩니다. 마찬가지로 find ... -exec [ -f {} ] \;env LC_ALL=C [ -f bar ]
스테판 Chazelas가

@StephaneChazelas : 모든 껍질? (csh와 tcsh는 그렇지 않지만 아마도 요점입니다.) 나는 [내장 된 것이없는 sh 파생 된 껍질을 보지 못했지만 [원래 내장 된 것으로 생각하지는 않습니다. 본 쉘. 어쨌든 제거 /bin/[는 확실히 나쁜 생각입니다.
Keith Thompson

마이너 애매한은 : test[있습니다 거의 동일. [종결이 필요하다 ]. test그것을 허용하지 않습니다 (또는 오히려 ]특별한 주장을 다루지 않습니다 ).
Keith Thompson

2

[는 항상 테스트와 동등한 것으로 주어 지지만 항상 존재하지만 명시 적으로 언급하지는 않았습니다. 방금 http://ss64.com/bash/test.html 에서 이것을 발견했습니다 .

When the [ form is used, the last argument to the command must be a ]

그것은 안심입니다-마침내 나는 그들이 말하는대로 완성되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.