ฉันใช้ GNU tar มันสามารถตรวจจับประเภทการบีบอัดอัตโนมัติเมื่อทำการบีบอัด / คลายการบีบอัดไฟล์ แต่ฉันต้องคลายการบีบอัดไฟล์จาก stdin และไม่ทราบประเภทการบีบอัด ฉันสังเกตเห็นว่าน้ำมันดินสามารถให้คำแนะนำที่ถูกต้องแก่ฉันเช่น:
tar: Archive is compressed. Use -z option
แต่ฉันต้องการให้ tar ใช้ตัวเลือกการบีบอัดนั้นโดยอัตโนมัติโดยไม่ต้องให้ฉันป้อนอาร์กิวเมนต์นั้น ฉันจะทำสิ่งนั้นได้อย่างไร ทำไมไม่ tar เพียงแค่ขยายขนาดเพราะมันรู้ชนิดการบีบอัดอยู่แล้ว?
ขอขอบคุณ!
tar
ไม่ทราบว่ามีข้อมูลประเภทใดstdin
จนกระทั่งเมื่อได้อ่านแล้วและมันก็สายเกินไปที่จะเรียกโปรแกรม uncompress รองรับ gzip, bzip2 และอื่น ๆ การแก้ไขปัญหานี้ไม่ใช่เรื่องง่าย (มันจะต้องบัฟเฟอร์ข้อมูล) ดังนั้นเพียงแค่บอกให้คุณลองอีกครั้ง
fork()
/ exec()
วิธีการเพื่อให้ท่อข้อมูลผ่านยูทิลิตี้ยกเลิกการบีบอัด ยูทิลิตี้จะอ่านจากstdin
ไปป์และ 4K ตัวแรกจะหายไป ไม่มีวิธีที่จะนำข้อมูลกลับเข้าไปในท่อหลังจากอ่าน
cat buffer - | gunzip
มันอาจจะทำโดยฟอร์กสองกระบวนการแม้ว่าโดยทั่วไปทำเทียบเท่า (หรือมิ