OS X에서 tac 명령을 어떻게 얻을 수 있습니까?


59

tac의 출력을 반전시키는 데 사용 하고 싶습니다 cat. 그러나 Mavericks 터미널에서는 사용할 수 없습니다. MacPorts에서 찾으려고 다시 사용할 수 없습니다. 누구든지 어떻게 얻을 수 있는지 알려주십시오 tac. 로그 파일을 읽는 데 매우 유용합니다.

답변:


65

예:

  • Homebrew 설치
  • brew install coreutils
  • ln -s /usr/local/bin/gtac /usr/local/bin/tac 최신 Homebrew에는 분명히 필요하지 않습니다. 아래의 Ran Ever-Hadani의 코멘트를 참조하십시오

또는 coreutils비슷한 방법으로 MacPorts를 사용하여 설치하십시오 .


어떻게 ln -s /usr/local/bin/gtac /usr/local/bin/tac작동 하는지 모르겠습니다 ... 명령이 파일 메모리 블록을 나열해야합니까?
Timothy Swan

1
심볼릭 링크는 단지 편의를위한 것입니다. Homebrew는 원래 이름 앞에 'g'를 붙여서 / usr / local / bin에 coreutil 바이너리를 설치합니다. ls된다 gls, head된다 ghead등등. 결과적으로는 tac로 설치 gtac되며이 답변에서 제안 된 symlink는 tac해당 이름으로 제공됩니다. symlink를 생략해도 여전히 프로그램을로 실행할 수 있습니다 gtac.
grebneke

오. 당신은 말하고 ln -s있지 않습니다. ls -s이것은 이제 더 의미가 있습니다. 처음에 올바르게 입력 했어야합니다.
Timothy Swan

2
grebneke 의 답변에 추가 : 더 이상 소프트 링크가 필요하지 않습니다. g 접미사는 osx에 이미 해당 이름의 명령이있는 경우에만 추가되므로 tac은 gtac이 아닌 tac으로 설치됩니다.
Ran Ever-Hadani

69

많은 시스템 (BSD, Solaris, AIX, IRIX ...)에서와 같이 OS / X에서 GNU의 기능은 옵션 과 함께tac 사용할 수 있습니다 . 따라서 GNU를 설치할 필요가 없습니다 :tail-rtac

tail -r the-file

11
따라서 alias tac='tail -r'OP 트릭을 할 것입니다!
mkc

8
실제로 별칭이 쉘 스크립트로 전송되지 않기 때문에 실제로 쉘 별칭 사용이 실패 할 수 있습니다. tac() { tail -r -- "$@"; }
kojiro


0

한 가지 임시 해결책은 다음과 같습니다.

alias tac='perl -e "print reverse(<>)"'

1
이로 인해 <>STDIN에서만 읽은 것이 아니라 선택적으로에서 읽는 것을 알게 되었습니다 @ARGV. stackoverflow.com/questions/29020883 / ... reverse줄을 역순으로 출력하기 전에 전체 파일을 메모리에로드 할지 여부를 여전히 알 수 없습니다 . 끔찍할 것입니다.
Bruno Bronosky

@BrunoBronosky,> ... STDIN이지만 선택적으로 @ ARGV에서 : 예 <>의 목적입니다. > ... 전체 파일을 메모리에로드합니다 ... : 예, IT는됩니다! (기가 바이트 파일로이 작업을 수행하지 마십시오)
JJoao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.