printf와 echo 중 어느 것이 더 좋나요?

printf와 echo 중 어느 것이 더 좋나요?

메시지와 인쇄 데이터를 표시하기 위해 두 가지 명령을 사용할 수 printf있습니다 echo.
그렇다면 그들은 어떻게 다르게 사용했는가? 어느 것이 더 바람직합니까?

답변1

바람직하고 가장 널리 사용되는 것은 동일한 것이 아닙니다. printf여러 가지 이유로 더 좋지만 대부분의 사람들은 구문이 더 간단하기 때문에 여전히 사용 합니다 echo.

선호해야 하는 주요 이유는 printf다음과 같습니다.

  1. echo표준화되지 않았으므로 시스템마다 다르게 작동합니다.
  2. 을 할 때 실제로 무엇을 실행하고 있는지 예측하기는 어렵습니다 echo foo. 설명하자면, 내 Debian 시스템에서:

    $ type -a echo
    echo is a shell builtin
    echo is /bin/echo
    

    보시다시피 두 가지 다른 echo명령이 있습니다. 하나는 내장된 쉘(이 경우 bash)이고 다른 하나는 별도의 바이너리입니다. 내장 기능 bash도 있지만 printf동작이 더 표준화되어 문제가 적습니다(지적해 주신 @ RaduRădeanu에게 감사드립니다).

  3. 명령줄 스위치 의 일부(전부는 아님) 구현이 echo지원되므로 -. 많은 프로그램이 --스위치의 끝과 인수의 시작을 나타내는 기능을 지원하지만(예를 들어, 포함된 grep -- -a file행을 찾습니다 ) 그렇지 않습니다. 그렇다면 인쇄는 어떻게 합니까 ?file-aechoecho-n

    $ echo -n           ## no output
    $ echo '-n'         ## no output
    $ echo "-n"         ## no output
    $ echo \-n          ## no output
    $ echo -e '\055n'   ## using the ASCII code works but only on implementations
    -n                  ## that support -e
    

    printf이 작업을 쉽게 수행할 수 있습니다.

    $ printf -- '-n\n'
    -n
    $ printf '%s\n' -n
    -n
    $ printf '\055n\n' 
    -n
    

printf가 보다 나은 이유에 대해 알고 싶었던 것보다 더 많은 정보를 보려면 echo비슷한 질문에 대한 이 답변을 참조하세요.http://unix.stackexchange.com:

https://unix.stackexchange.com/a/65819/22222

답변2

어느 것이 더 나은지 묻는 것 자체가 불완전합니다.

원하는 것이 하나 이상의 텍스트 줄을 내보내는 것이라면줄바꿈으로 종료됨, 에코이면 충분합니다. 특히 개행 문자가 없는 "부분 줄"을 포함하여 더 영리한 것을 의도한다면 printf가 가장 좋습니다.그 목적을 위해.

관련 정보