Làm thế nào tôi có thể nhận được lệnh tac trên OS X?


59

Tôi thích sử dụng tacđể đảo ngược đầu ra của cat. Tuy nhiên, nó không có sẵn trong thiết bị đầu cuối Mavericks. Tôi đã cố gắng tìm nó trên MacPorts và một lần nữa nó không có sẵn. Bất cứ ai có thể xin vui lòng chỉ cho tôi làm thế nào để có được tac? Nó rất hữu ích để đọc các tệp nhật ký.

Câu trả lời:


65

Đúng:

  • Cài đặt Homebrew
  • brew install coreutils
  • ln -s /usr/local/bin/gtac /usr/local/bin/tac dường như không cần thiết với Homebrew mới nhất, xem bình luận của Ran Ever-Hadani bên dưới

hoặc sử dụng MacPorts để cài đặt coreutilstheo cách tương tự.


Tôi không hiểu làm thế nào để ln -s /usr/local/bin/gtac /usr/local/bin/tacnó hoạt động ... Không phải lệnh đó chỉ có nghĩa là liệt kê một số khối bộ nhớ tệp sao?
Timothy Swan

1
Các symlink chỉ để thuận tiện. Homebrew cài đặt các nhị phân coreutil trong / usr / local / bin bằng cách thêm tiền tố vào tên gốc của chúng bằng 'g'. lstrở thành gls, headtrở thành gheadvà như vậy. Do đó, tacđược cài đặt dưới dạng gtacvà liên kết tượng trưng được đề xuất trong câu trả lời này chỉ để taccung cấp dưới tên đó. Bỏ qua liên kết tượng trưng, ​​bạn vẫn có thể chạy chương trình như gtac.
grebneke

Oh. Bạn đang nói về ln -skhông ls -sĐiều này có ý nghĩa hơn bây giờ. Tôi phải nhập chính xác vào lần đầu tiên.
Timothy Swan

2
Ngoài câu trả lời của grebneke : không cần liên kết mềm nữa. Hậu tố g bây giờ chỉ được thêm vào nếu osx đã có lệnh với tên đó, vì vậy tac được cài đặt là tac, không phải gtac.
Ran Ever-Hadani

69

Trên OS / X như trên nhiều hệ thống (BSDs, Solaris, AIX, IRIX ...), các chức năng của GNU taccó sẵn trong tailcác -r tùy chọn . Vì vậy, không cần phải cài đặt GNU tac:

tail -r the-file

11
Vì vậy, alias tac='tail -r'sẽ làm thủ thuật cho OP!
mkc

8
Chà, thực sự sử dụng bí danh shell có thể thất bại vì bí danh không chuyển thành tập lệnh shell. Sử dụng một chức năng nhưtac() { tail -r -- "$@"; }
kojiro


0

Một giải pháp tạm thời có thể là:

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

1
Điều này chỉ khiến tôi biết rằng <>không chỉ đọc từ STDIN, mà là tùy chọn từ @ARGV. stackoverflow.com/questions/29020883/ Từ Tôi vẫn không biết liệu reversesẽ tải toàn bộ tập tin vào bộ nhớ hay không trước khi xuất các dòng theo thứ tự ngược lại. Điều đó sẽ rất tệ.
Bruno Bronosky

@BrunoBronosky,> ... STDIN, nhưng tùy chọn từ @ ARGV: vâng, đó là những gì <> dành cho. > ... sẽ tải toàn bộ tập tin vào bộ nhớ ...: CÓ, NÓ S !! (tránh làm điều này với các tệp gigabyte)
JJoao
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.