İlk önce disk üzerinde oluşturmadan bir program çıktısından bir tar arşivine dosya eklemeye çalışıyorum. Oluşturma komut dosyası çalıştırıldığında, otomatik olarak oluşturulan bir dosya VERSION
düşünün. Bu çalıştı ama dereferenced sembolik bağı normal bir dosya sadece bir adlandırılmış kanal, değil: Sonuç tar arşiv içinde bir zaman damgası içeren bir dosyayı VERSION
olmalıdırTarla arşivine başka bir dosya olarak stdin'i ekleyin
$ date +%s | \
tar cf test.tar \
--dereference \
--transform="s#/proc/self/fd/0#VERSION#" \
/proc/self/fd/0 \
other_files \
and_folders/
w/yerel bir dosya oluşturulurken o:
$ tar tf test.tar
VERSION
other_files
and_folders
Teşekkürler! Temelde şu an bunu yapıyorum. 'Mktemp' yapmak, '--transform = s/tempfile/VERSION/'ile arşive ekleyerek ve sonra da silerek. Bu adımı, bir çeşit boru büyüsü ile biraz daha özlü hale getirmeyi umuyordum. – Boldewyn
Bunu yapmanın tek yolu budur; çünkü TAR'e dosya adı ve içeriği boru yoluyla veremezsiniz. '/ proc/self/fd/0',' tar' arşivlerini içeriklerini genişletmek yerine özel dosyalar olarak arşivlediğinden çalışmaz. Ben de bu durumda ''dereference''ın bunu değiştirmemesine şaşıyorum. –
Eh, '--dereference' bir etkiye sahip: Yok, paketlenmiş'/proc/self/fd/0' bir sembolik bağlantı olarak kalıyor, yani adlandırılmış bir boru ('ls -F' türü bir' | 'to). Ancak paketlenmiş bir borunun kullanımı sınırlı ... – Boldewyn