“ -” หมายถึงอะไรเป็นอาร์กิวเมนต์ของคำสั่ง?


9

ฉันพบลิงค์นี้เกี่ยวกับวิธีการเปิด tgz ในขั้นตอนเดียว

gzip -dc target.tar.gz | tar xf -

'-' หมายถึงอะไร


1
นอกจากนี้ tar ส่วนใหญ่รองรับ gzip และ bzip ด้วย สำหรับไฟล์ tar gzip-ed tar xfz target.tar.gzและสำหรับ bziptar xfj target.tar.bz2
บัญชีถูกลบ

คำตอบ:


18

มันเป็นเรื่องธรรมดาที่จะใช้-ในการโต้แย้งชื่อไฟล์เพื่อความหมายstdinหรือstdout; tarปฏิบัติตามอนุสัญญาเดียวกัน จากหน้าคน:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)

1
นี่เป็นเพียงการประชุมเท่านั้น คุณต้องอ่าน manpage สำหรับคำสั่งเฉพาะเพื่อดู-ว่ามันมีความหมายอย่างไร Stdin / stdout เป็นความหมายที่พบได้บ่อยที่สุด แต่ก็ยังมีบางอย่าง ตัวอย่างเช่นสำหรับบางรุ่นenvมันหมายถึง "เริ่มต้นด้วยสภาพแวดล้อมที่ว่างเปล่า"
cjm

0

ระเบียบแบบอื่นคือใช้ '-' เพื่อระบุจุดสิ้นสุดของแฟล็กและจุดเริ่มต้นของชื่อไฟล์ พฤติกรรมนั้นมีอยู่ใน getopt (3) บน RedHat 4 อย่างน้อย ฉันไม่พบหน้าคนหมวกแดงที่ใช้ '-' เพื่อระบุจุดสิ้นสุดของการขัดแย้งพวกเขาทั้งหมดดูเหมือนจะใช้ '-' เพื่อทำเช่นนั้น หน้าเว็บ awk มี '-' ในบริบทนั้นดังนั้นคำสั่ง "heirloom" Unix หรือ Solaris ที่เก่าอาจใช้ '-' เป็นอาร์กิวเมนต์ - ตัวคั่นชื่อไฟล์


3
--ส่งสัญญาณการสิ้นสุดของตัวเลือกดังนั้นทุกอย่างที่เกิดขึ้นหลังจากนั้นจะเป็นตัวถูกดำเนินการ -ไม่ใช่ตัวเลือกดังนั้นมันและทุกอย่างที่เกิดขึ้นหลังจากนั้นคือตัวถูกดำเนินการ นี่คือพฤติกรรมมาตรฐาน สำหรับคำสั่งเป็นจำนวนมากเช่นtar, ถูกดำเนินการ-หมายความว่าเข้ามาตรฐานหรือเอาท์พุท ในหลาย ๆ shell set - -aนั้นเทียบเท่าset -- -aและในเชลล์ Bourne เก่าบางตัวset - -aเป็นรูปแบบที่ยอมรับเท่านั้น แต่นี่เป็นข้อยกเว้นของsetbuilt-in
Gilles 'หยุดความชั่วร้าย'

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