Saya telah belajar menggunakan tar tanpa '-' untuk opsi, seperti tar cvfz dir.tar.gz Directory/
tapi saya baru saja menemukan tar -czvf
sintaks yang sedikit berbeda (saya pikir 'f' harus menjadi pilihan terakhir dalam kasus ini).
Keduanya bekerja di linux dan Mac OS. Apakah ada sintaks yang disarankan, dengan ou tanpa '-' yang lebih portabel menurut rasa unix?
tar
options
portability
ascobol
sumber
sumber
-f
harus menjadi opsi terakhir adalah karena dibutuhkan argumen dan argumen itu dapat diberikan menyentuh opsi.tar -cvfz dir.tar.gz Directory
berarti membuat arsip bernamaz
yang berisi filedir.tar.gz
danDirectory
.Jawaban:
tar
adalah salah satu perintah kuno dari hari-hari ketika sintaksis opsi tidak distandarisasi. Karena semua doa yang bergunatar
mengharuskan Anda menentukan operasi sebelum memberikan nama file apa pun, sebagian besartar
implementasi menafsirkan argumen pertama mereka sebagai opsi meskipun itu tidak dimulai dengan a-
. Sebagian besar implementasi saat ini menerima-
; satu-satunya pengecualian yang saya ketahui adalah Minix .Versi POSIX dan Single Unix yang lebih lama menyertakan
tar
perintah tanpa-
sebelum specifier operasi. Single Unix v2 memiliki kedua pengarsip tradisionalcpio
dantar
, tetapi sangat sedikit bendera dapat distandarisasi karena implementasi yang ada terlalu berbeda, sehingga standar memperkenalkan perintah barupax
,, yang merupakan satu-satunya pengarsip standar sejak Single Unix v3 . Jika Anda ingin kepatuhan standar, gunakanpax
, tetapi berhati-hatilah karena banyak distribusi Linux tidak memasukkannya dalam instalasi basis mereka, dan tidak adapax
dalam Minix . Jika Anda ingin mudah dibawa dalam praktik, gunakantar cf filename.tar
.sumber
pax
, biasanya hadir dengan implementasi pax yang paling dikenal (GNU pax) yang harus dihindari karena banyak bug.ps
perintah memiliki perilaku yang sama, Anda dapat menghilangkan opsi-
untuk.ps
jangan biarkan Anda menghilangkan-
. Versi Linux memiliki opsi dengan dan tanpa-
, tetapi sebagian besar memiliki arti yang berbeda (BSD vs System V kompatibilitas).ps aux
... Jadi, saya mungkin (sebagian) salah. Maaf.Saya mungkin dinosaurus, tetapi saya pikir bahwa terbiasa menggunakan "cvf" dan bukannya "-cvf" mungkin lebih portabel. Saya membayangkan sebagian besar distro Linux menggunakan tar GNU, dan saya kira * BSD juga melakukannya, tetapi Anda akan menemukan Unix berpemilik yang masih menggunakan tar SysV lama, yang dulu mengharuskan Anda untuk tidak menggunakan tanda '-' pada opsi .
Saya tidak menggunakan "-cvf" (atau "-xf" atau apa pun) dan saya tidak memiliki masalah bahkan dengan pendarahan Arch linux.
Dan sebagai catatan tambahan, saya pikir Anda dapat menggunakan opsi perintah "jar" standar Sun dengan atau tanpa tanda '-' juga.
sumber
Ada beberapa program di UNIX yang tidak mengikuti standar opsi saat ini.
Salah satunya adalah
dd
, tetapi dd berasal dari program mainframe IBMDDR
(Disk Dump and Restore).Yang satu
ar
dan yang lainnyatar
. Dari informasi saya, tar ingin mirip dengan ar.Semua implementasi tar bekerja tanpa - dan tidak ada implementasi yang berguna membutuhkan -. Jadi, jika Anda ingin menulis skrip portabel, periksa standar SUSv2 dan hanya gunakan baris perintah yang kompatibel dengan SUSv2.
sumber