ฉันพบลิงค์นี้เกี่ยวกับวิธีการเปิด 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
เป็นรูปแบบที่ยอมรับเท่านั้น แต่นี่เป็นข้อยกเว้นของset
built-in
--
การแยกตัวเลือกจากการขัดแย้ง
tar xfz target.tar.gz
และสำหรับ bziptar xfj target.tar.bz2