tar cvf หรือ tar -cvf?


24

ฉันได้เรียนรู้การใช้ tar โดยไม่มี '-' สำหรับตัวเลือกเช่นtar cvfz dir.tar.gz Directory/แต่เมื่อเร็ว ๆ นี้ฉันมีtar -czvfไวยากรณ์แตกต่างกันเล็กน้อย(ฉันคิดว่า 'f' ต้องเป็นตัวเลือกสุดท้ายในกรณีนี้)

ทั้งทำงานบน linux และ Mac OS มีไวยากรณ์ที่แนะนำหรือไม่ถ้าไม่มี '-' ซึ่งพกพาสะดวกกว่าในรสชาติ unix หรือไม่?


1
ดูเพิ่มเติมที่: unix.stackexchange.com/questions/13573/…
unor

เหตุผลที่-fต้องเป็นตัวเลือกสุดท้ายคือเนื่องจากต้องใช้อาร์กิวเมนต์และอาร์กิวเมนต์นั้นอาจได้รับการสัมผัสตัวเลือก tar -cvfz dir.tar.gz Directoryหมายถึงการสร้างที่เก็บชื่อzที่มีแฟ้มและdir.tar.gz Directory
JoL

คำตอบ:


27

tarเป็นหนึ่งในคำสั่งโบราณเหล่านั้นจากวันเมื่อไวยากรณ์ตัวเลือกไม่ได้มาตรฐาน เพราะสวดประโยชน์ทั้งหมดของtarต้องระบุการดำเนินการก่อนที่จะให้ชื่อไฟล์ใด ๆ ส่วนใหญ่ใช้งานตีความอาร์กิวเมนต์แรกของพวกเขาเป็นตัวเลือกที่แม้ว่าจะไม่ได้เริ่มต้นด้วยหนึ่งtar -การใช้งานในปัจจุบันส่วนใหญ่ยอมรับ-; ยกเว้นอย่างเดียวที่ฉันรู้คือมินิกซ์

POSIX และ Single Unix เวอร์ชันที่เก่ากว่ามีtarคำสั่งที่ไม่มี-มาก่อนตัวระบุการดำเนินการ Unix เดี่ยว v2 มีผู้จัดเก็บทั้งแบบดั้งเดิมcpioและtarแต่ธงน้อยมากอาจจะเพราะมาตรฐานการใช้งานที่แตกต่างกันที่มีอยู่มากเกินไปดังนั้นมาตรฐานที่นำคำสั่งใหม่paxซึ่งเป็น Archiver มาตรฐานเฉพาะในตั้งแต่Unix เดี่ยว v3 หากคุณต้องการการปฏิบัติตามมาตรฐานการใช้งานpaxแต่ระวังว่าลินุกซ์จำนวนมากไม่ได้รวมไว้ในการติดตั้งฐานของพวกเขาและไม่มีpaxในมินิกซ์ tar cf filename.tarหากคุณต้องการพกพาในทางปฏิบัติการใช้งาน



1
นอกจากนี้โปรดทราบว่าหากมี distro Linux อยู่paxแล้วมันมักจะมาพร้อมกับการใช้ pax ที่แย่ที่สุดที่ควรหลีกเลี่ยงเพราะมีข้อบกพร่องมากมาย
schily

นอกจากนี้psคำสั่งยังมีลักษณะการทำงานเหมือนกันคุณอาจไม่ใช้-ตัวเลือก
perror

1
@perror นั่นผิด หลายรุ่นจะไม่ปล่อยให้คุณละเว้นps -เวอร์ชัน Linux มีตัวเลือกทั้งที่มีและไม่มี-แต่ส่วนใหญ่มีความหมายต่างกัน (เข้ากันได้กับ BSD กับ System V)
Gilles 'หยุดชั่วร้าย'

1
มันเป็นเรื่องจริงที่ส่วนใหญ่ฉันใช้ แต่ps aux... ฉันอาจผิด (บางส่วน) ขอโทษ
perror

13

ฉันอาจจะเป็นไดโนเสาร์ แต่ฉันคิดว่าการใช้ "cvf" เป็นประจำแทนที่จะใช้ "-cvf" น่าจะพกพาได้มากกว่า ผมคิดว่าส่วนใหญ่ distros Linux ใช้ GNU tar และฉันเดาว่า BSDs * ทำยัง แต่คุณจะพบเป็นกรรมสิทธิ์ Unixes ที่ยังคงใช้ tar SysV เก่าซึ่งใช้ในการต้องให้คุณได้ใช้ '-' ในตัวเลือก .

ฉันไม่ได้ใช้ "-cvf" (หรือ "-xf" หรืออะไรก็ตาม) และฉันไม่มีปัญหาแม้แต่กับ Arch linux ที่มีเลือดออก

และเช่นเดียวกับบันทึกด้านข้างฉันคิดว่าคุณสามารถใช้ตัวเลือกคำสั่ง "jar" มาตรฐานของ Sun โดยใช้หรือไม่ใช้ '-' ก็ได้เช่นกัน


ฉันเห็นด้วยกับคำตอบของคุณแม้ว่าหน้าข้อมูลของ tar (ซึ่งชัดเจนมากเกี่ยวกับรูปแบบการระบุสามตัวเลือก) บอกว่าตัวเลือกเก่าจะถูกเก็บไว้เพื่อความเข้ากันได้เท่านั้นและมีตัวเลือกมากมายที่ไม่มีการโต้ตอบแบบเก่า
David Costa

1
คุณผิด: tar บน AT&T UNIX ถูกเขียนขึ้นเพื่อไม่ให้ - แต่มันยอมรับ - และข้ามมัน วิธีพกพาเพียงวิธีเดียวในการโทร tar คือโทรโดยไม่ใช้ - และหากคุณเคยพบการใช้งาน "tar" ที่ไม่ยอมรับสิ่งต่าง ๆ โดยไม่ใช้นี่ไม่ใช่ tar
schily

3

มีบางโปรแกรมใน UNIX ที่ไม่เป็นไปตามมาตรฐานตัวเลือกปัจจุบัน

หนึ่งคือddแต่ dd มาจากโปรแกรมเมนเฟรมของ IBM DDR(Disk Dump and Restore)

หนึ่งคือarและอื่น ๆ tarคือ จากข้อมูลของฉัน tar ต้องการให้คล้ายกับเท่

การใช้งาน tar ทั้งหมดทำงานโดยไม่มี - และไม่จำเป็นต้องมีการใช้งาน - ดังนั้นหากคุณต้องการเขียนสคริปต์แบบพกพาให้ตรวจสอบมาตรฐาน SUSv2 และใช้ commandline ที่เข้ากันได้กับ SUSv2 เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.