พารามิเตอร์ -f ทำอะไรในคำสั่ง tar


19

เมื่อใช้tarฉันมักจะรวม-fไว้ในพารามิเตอร์ แต่ฉันไม่รู้ว่าทำไม

ฉันเงยหน้าขึ้นมองชายคนนั้นและมันก็พูดว่า;

-f, --file [HOSTNAME:]F

use archive file or device F (default
"-", meaning stdin/stdout)

แต่พูดตามตรงฉันไม่รู้ว่ามันแปลว่าอะไร ทุกคนสามารถหลั่งน้ำตาแสงบนมันได้หรือไม่

คำตอบ:


20

-fตัวเลือกที่บอกว่าอาร์กิวเมนต์ต่อไปคือชื่อไฟล์ของข้อมูลที่เก็บหรือออกมาตรฐานถ้ามันเป็นtar-


โอ้โห! ฉันสันนิษฐานว่าชื่อไฟล์จะต้องปรากฏขึ้นต่อไปดังนั้น -f นี้กำลังทำอะไรที่พิเศษกว่านี้!
Toby

6
@Toby: ฉันสงสัยว่านี่เป็นเพราะเหตุผลทางประวัติศาสตร์ "tar" ย่อมาจาก "tape archive" และสันนิษฐานว่ารุ่นดั้งเดิมไม่ได้มองเห็นคนที่ใช้ไฟล์ดิสก์สำหรับเก็บถาวรทั้งหมดที่มักจะ
David Thornley

8

ค่อนข้างง่าย หากคุณไม่ใช้-fพารามิเตอร์เอาต์พุตจะถูกส่งไปยัง stdout:

gammy@denice:/tmp/demo$ tar -c a b c
a0000644000175000017500000000000011435437117010223 0ustar  gammygammyb0000644000175000017500000000000011435437117010224 0ustar  gammygammyc0000644000175000017500000000000011435437117010225 0ustar  gammygammygammy@denice:/tmp/demo$ ls
a  b  c
gammy@denice:/tmp/demo$ 

... ช่างเป็นเรื่องยุ่งเหยิง!

- -fพารามิเตอร์ (ตามที่คุณอ้างถึง) คาดว่าชื่อไฟล์ (และชื่อโฮสต์ทางเลือก) ดังนั้นอาร์กิวเมนต์แรกหลังจากมันคือชื่อไฟล์เอาต์พุต:

gammy@denice:/tmp/demo$ tar -cf output.tar a b c
gammy@denice:/tmp/demo$ ls
a  b  c  output.tar
gammy@denice:/tmp/demo$ 

5
> หากคุณบีบบังคับพารามิเตอร์ -f ผลผลิตจะถูกส่งไป stdout นี่เป็นเรื่องจริงกับ GNU tar แต่ฉันจำได้ว่าใน Solaris ค่าเริ่มต้นคืออุปกรณ์เทป ( /dev/rmt0หรืออะไรทำนองนี้)
Cristian Ciupitu

* ละเว้น (ไม่ใช่ "oppress")
Mr Ethernet

1
แม้แต่ GNU ก็tarให้เกียรติTAPEตัวแปรที่ไม่มีเอกสารอีกต่อไป ตัวอย่างเช่นลองแล้วTAPE=/tmp/tape.tar tar cv /etc/h* ls -l /tmp/tape.tar
roaima

2

ช่วยให้คุณระบุไฟล์หรืออุปกรณ์ที่คุณจะใช้งานได้ ไม่ว่าจะสร้างอัปเดตหรือแยกสิ่งต่าง ๆ ขึ้นอยู่กับธงอื่น ๆ ที่ให้มา ตัวอย่างเช่น:

# Create a tar file with the contents of somepath/
tar -cvf filename.tar somepath/

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