ฉันพบลิงค์นี้เกี่ยวกับวิธีการเปิด tgz ในขั้นตอนเดียว
gzip -dc target.tar.gz | tar xf -
'-' หมายถึงอะไร
ฉันพบลิงค์นี้เกี่ยวกับวิธีการเปิด tgz ในขั้นตอนเดียว
gzip -dc target.tar.gz | tar xf -
'-' หมายถึงอะไร
คำตอบ:
มันเป็นเรื่องธรรมดาที่จะใช้-ในการโต้แย้งชื่อไฟล์เพื่อความหมายstdinหรือstdout; tarปฏิบัติตามอนุสัญญาเดียวกัน จากหน้าคน:
-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)
-ว่ามันมีความหมายอย่างไร Stdin / stdout เป็นความหมายที่พบได้บ่อยที่สุด แต่ก็ยังมีบางอย่าง ตัวอย่างเช่นสำหรับบางรุ่นenvมันหมายถึง "เริ่มต้นด้วยสภาพแวดล้อมที่ว่างเปล่า"
ระเบียบแบบอื่นคือใช้ '-' เพื่อระบุจุดสิ้นสุดของแฟล็กและจุดเริ่มต้นของชื่อไฟล์ พฤติกรรมนั้นมีอยู่ใน getopt (3) บน RedHat 4 อย่างน้อย ฉันไม่พบหน้าคนหมวกแดงที่ใช้ '-' เพื่อระบุจุดสิ้นสุดของการขัดแย้งพวกเขาทั้งหมดดูเหมือนจะใช้ '-' เพื่อทำเช่นนั้น หน้าเว็บ awk มี '-' ในบริบทนั้นดังนั้นคำสั่ง "heirloom" Unix หรือ Solaris ที่เก่าอาจใช้ '-' เป็นอาร์กิวเมนต์ - ตัวคั่นชื่อไฟล์
--ส่งสัญญาณการสิ้นสุดของตัวเลือกดังนั้นทุกอย่างที่เกิดขึ้นหลังจากนั้นจะเป็นตัวถูกดำเนินการ -ไม่ใช่ตัวเลือกดังนั้นมันและทุกอย่างที่เกิดขึ้นหลังจากนั้นคือตัวถูกดำเนินการ นี่คือพฤติกรรมมาตรฐาน สำหรับคำสั่งเป็นจำนวนมากเช่นtar, ถูกดำเนินการ-หมายความว่าเข้ามาตรฐานหรือเอาท์พุท ในหลาย ๆ shell set - -aนั้นเทียบเท่าset -- -aและในเชลล์ Bourne เก่าบางตัวset - -aเป็นรูปแบบที่ยอมรับเท่านั้น แต่นี่เป็นข้อยกเว้นของsetbuilt-in
--การแยกตัวเลือกจากการขัดแย้ง
tar xfz target.tar.gzและสำหรับ bziptar xfj target.tar.bz2