ฉันจะรับคำสั่ง tac บน OS X ได้อย่างไร


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 ด้านล่าง

หรือใช้ MacPorts เพื่อติดตั้งcoreutilsในลักษณะเดียวกัน


ฉันไม่เข้าใจวิธีการln -s /usr/local/bin/gtac /usr/local/bin/tacทำงาน ... คำสั่งนั้นไม่ควรแสดงรายการบล็อกหน่วยความจำไฟล์บางส่วนเท่านั้นหรือ
Timothy Swan

1
symlink เป็นเพียงเพื่อความสะดวก Homebrew ติดตั้ง coreutil ไบนารีใน / usr / local / bin โดยนำหน้าชื่อเดิมด้วย 'g' lsกลายเป็นgls, headกลายเป็นgheadและอื่น ๆ ดังนั้นtacติดตั้งเป็นgtacและ symlink ที่แนะนำในคำตอบนี้เป็นเพียงการให้tacบริการภายใต้ชื่อนั้น ถนัด symlink gtacคุณยังสามารถเรียกใช้โปรแกรมเป็น
grebneke

โอ้ คุณกำลังพูดถึงln -sไม่ใช่ls -sสิ่งนี้สมเหตุสมผลมากขึ้นในขณะนี้ ฉันจะต้องใส่มันอย่างถูกต้องในครั้งแรก
Timothy Swan

2
นอกจากนี้คำตอบของgrebneke : ไม่จำเป็นต้องมีลิงค์อ่อนอีกต่อไป ส่วนต่อท้าย g จะถูกเพิ่มต่อเมื่อ osx มีคำสั่งชื่อนั้นอยู่แล้วดังนั้น tac จะถูกติดตั้งเป็น tac ไม่ใช่ gtac
Ran Ever-Hadani

69

บน OS / X เช่นเดียวกับหลายระบบ (BSDs, Solaris, AIX, IRIX ... ), การทำงานของ GNU tacมีอยู่ในtailกับ-rตัวเลือก ดังนั้นไม่จำเป็นต้องติดตั้ง GNU tac:

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: ใช่นั่นคือสิ่งที่ <> ใช้สำหรับ > ... จะโหลดไฟล์ทั้งหมดในหน่วยความจำ ... : ใช่ก็จะได้! (หลีกเลี่ยงการทำเช่นนี้กับไฟล์กิกะไบต์)
JJoao
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.