Yazdır (Write out)

--write-out veya kısaca -w, bir transfer tamamlandıktan sonra metin ve bilgi çıktılar (yazdırır). Çıktıya dahil edebileceğiniz, değerlerle ve transferden gelen bilgilerle ayarlanmış çok sayıda değişken sunar.

Bu seçeneğe düz metin ileterek curl'den bir dize çıktılamasını isteyin:

curl -w "formatted string" http://example.com/

…ve dizeyi '@' ile öncelerseniz curl'ün o dizeyi verilen bir dosyadan okumasını da sağlayabilirsiniz:

curl -w @filename http://example.com/

…veya dosya adı olarak '-' kullanırsanız curl'ün dizeyi stdin'den okumasını bile sağlayabilirsiniz:

curl -w @- http://example.com/

Değişkenler

Mevcut olan değişkenlere dizeye %{degisken_adi} yazılarak erişilir ve bu değişken doğru değerle değiştirilir. Düz bir % çıktılamak için %% olarak yazarsınız. Ayrıca \n kullanarak yeni bir satır, \r ile satır başı ve \t ile bir sekme boşluğu çıktılayabilirsiniz.

Örnek olarak, bir HTTP transferinden Content-Type'ı ve yanıt kodunu, yeni satırlarla ve bunun gibi bazı ekstra metinlerle ayrılmış olarak çıktılayabiliriz:

curl -w "Type: %{content_type}\nCode: %{response_code}\n" \
  http://example.com

Çıktı varsayılan olarak stdout'a gönderilir, bu nedenle indirilen içeriği de stdout'a göndermediğinizden emin olmak isteyebilirsiniz, aksi takdirde verileri ayırmakta zorlanabilirsiniz; veya çıktıyı stderr'e göndermek için %{stderr} kullanın.

HTTP başlıkları

Bu seçenek ayrıca, en son transferden gelen HTTP yanıt başlıklarının içeriğini çıktılamanın kolay bir yolunu da sağlar.

Dizede %header{isim} kullanın; burada isim, başlığın büyük/küçük harfe duyarlı olmayan adıdır (sondaki iki nokta üst üste olmadan). Çıktı başlık içerikleri daha sonra ağ üzerinden gönderildiği gibi tam olarak gösterilir, baştaki ve sondaki boşluklar kırpılır. Şöyle:

curl -w "Server: %header{server}\n" http://example.com

Çıktı

Varsayılan olarak, bu seçenek seçilen verilerin stdout'ta çıktılamasını sağlar. Bu yeterince iyi değilse, %{stderr} sözde değişkeni (aşağıdaki) kısmı stderr'e yönlendirmek için kullanılabilir ve %{stdout} onu tekrar stdout'a getirir.

curl 8.3.0'dan itibaren, kullanıcıların write-out çıktısını bir dosyaya göndermesine olanak tanıyan bir özellik vardır: %output{dosyaadı}. Takip eden veriler daha sonra o dosyaya yazılır. curl'ün dosyayı sıfırdan oluşturmak yerine o dosyaya eklemesini tercih ederseniz, dosya adının önüne >> ekleyin. Şöyle: %output{>>dosyaadı}.

Bir write-out argümanı, kullanıcının uygun gördüğü şekilde stderr, stdout ve dosyalara çıktı içerebilir.

Windows

NOT: Windows'ta % sembolü, ortam değişkenlerini genişletmek için kullanılan özel bir semboldür. Toplu işlem (batch) dosyalarında, bu seçeneği kullanırken düzgün bir şekilde kaçmak için tüm % oluşumları iki katına çıkarılmalıdır. Bu seçenek komut isteminde (command prompt) kullanılırsa % kaçılamaz ve istenmeyen genişletme mümkündür.

Mevcut --write-out değişkenleri

Bu değişkenlerin bazıları gerçekten eski curl sürümlerinde mevcut değildir.

DeğişkenAçıklama
certsEn son TLS el sıkışmasından sertifika zincirini çıktılar - ayrıntılarla birlikte. (7.88.0'da tanıtıldı)
conn_idTransfer tarafından en son kullanılan bağlantı tanımlayıcısı. Bağlantı kimliği, aynı bağlantı önbelleğini kullanan tüm bağlantılar arasında benzersiz bir sayıdır. (8.2.0'da tanıtıldı)
content_typeİstek yapılan belgenin Content-Type'ı, eğer varsa.
errormsgTransferden gelen hata mesajı. Hata oluşmadıysa boş. (7.75.0'da tanıtıldı)
exitcodeTransferden gelen sayısal çıkış kodu. Hata oluşmadıysa 0. (7.75.0'da tanıtıldı)
filename_effectivecurl'ün yazdığı nihai dosya adı. curl'e --remote-name veya --output seçeneğiyle bir dosyaya yazması söylendiğinde pratiktir. En çok --remote-header-name seçeneğiyle birlikte kullanıldığında yararlıdır.
ftp_entry_pathUzak FTP sunucusunda oturum açıldığında curl'ün son bulduğu ilk yol.
header_jsonSon transferden gelen tüm HTTP yanıt başlıklarını içeren bir JSON nesnesi. Değerler diziler olarak sağlanır, çünkü birden fazla başlık olması durumunda birden fazla değer olabilir. (7.83.0'da tanıtıldı)
http_codeArtık response_code olarak bilinen şeyin eski değişken adı.
http_connectBir curl CONNECT isteğine (bir vekil sunucudan) son yanıtta bulunan sayısal kod.
http_versionKullanılan HTTP sürümü.
jsonTek bir JSON nesnesi olarak tüm write-out değişkenleri. (7.72.0'da tanıtıldı)
local_ipEn son kullanılan bağlantının yerel ucunun IP adresi - IPv4 veya IPv6 olabilir
local_portEn son kullanılan bağlantının yerel port numarası
methodEn son isteğin kullandığı HTTP yöntemi. (7.72.0'da tanıtıldı)
num_certsEn son TLS el sıkışmasındaki sertifika sayısı. (7.88.0'da tanıtıldı)
num_connectsSon transferde yapılan yeni bağlantıların sayısı.
num_headersSon yanıttaki yanıt başlıklarının sayısı
num_redirectsİstekte takip edilen yönlendirme sayısı.
num_retries--retry kullanıldığında gerçekten gerçekleştirilen yeniden deneme sayısı. (8.9.0'da tanıtıldı)
onerrorTransfer bir hatayla sonuçlandıysa, dizenin geri kalanını göster, aksi takdirde burada dur. (7.75.0'da tanıtıldı)
proxy_ssl_verify_resultBir vekil sunucuyla iletişim kurarken istenen SSL eş sertifika doğrulamasının sonucu. 0, doğrulamanın başarılı olduğu anlamına gelir.
proxy_usedÖnceki transfer bir vekil sunucu kullandıysa 1, aksi takdirde 0 döndürür. Örneğin, bir NOPROXY deseninin ana bilgisayar adıyla eşleşip eşleşmediğini belirlemek için kullanışlıdır. (8.7.0'da tanıtıldı)
redirect_urlYönlendirmeleri takip etmek için -L olmadan bir HTTP isteği yapıldığında bir yönlendirmenin sizi götüreceği gerçek URL.
refererReferer: başlığı, eğer varsa. (7.76.0'da tanıtıldı)
remote_ipEn son kullanılan bağlantının uzak IP adresi — IPv4 veya IPv6 olabilir.
remote_portEn son yapılan bağlantının uzak port numarası.
response_codeSon transferde bulunan sayısal yanıt kodu.
schemeÖnceki URL'de kullanılan şema
size_downloadİndirilen toplam bayt sayısı.
size_headerİndirilen başlıkların toplam bayt sayısı.
size_requestHTTP isteğinde gönderilen toplam bayt sayısı.
size_uploadYüklenen toplam bayt sayısı.
speed_downloadcurl'ün tam indirme için ölçtüğü saniyedeki bayt cinsinden ortalama indirme hızı.
speed_uploadcurl'ün tam yükleme için ölçtüğü saniyedeki bayt cinsinden ortalama yükleme hızı.
ssl_verify_resultİstenen SSL eş sertifika doğrulamasının sonucu. 0, doğrulamanın başarılı olduğu anlamına gelir.
stderrÇıktının geri kalanının stderr'e yazılmasını sağlar.
stdoutÇıktının geri kalanının stdout'a yazılmasını sağlar.
time_appconnectBaşlangıçtan uzak ana bilgisayara SSL/SSH/vb. bağlantı/el sıkışma tamamlanana kadar geçen saniye cinsinden süre.
time_connectBaşlangıçtan uzak ana bilgisayara (veya vekil sunucuya) TCP bağlantısı tamamlanana kadar geçen saniye cinsinden süre.
time_namelookupBaşlangıçtan isim çözümleme tamamlanana kadar geçen saniye cinsinden süre.
time_pretransferBaşlangıçtan dosya transferi başlamak üzere olana kadar geçen saniye cinsinden süre. Bu, ilgili protokol(ler)e özgü tüm transfer öncesi komutları ve görüşmeleri içerir.
time_redirectSon işlem başlamadan önce isim arama, bağlanma, transfer öncesi ve transfer dahil tüm yönlendirme adımları için geçen saniye cinsinden süre. time_redirect birden fazla yönlendirme için tam yürütme süresidir.
time_starttransferBaşlangıçtan ilk bayt transfer edilmek üzere olana kadar geçen saniye cinsinden süre. Bu, time_pretransfer'i ve ayrıca sunucunun sonucu hesaplamak için ihtiyaç duyduğu süreyi içerir.
time_totalTam işlemin sürdüğü saniye cinsinden toplam süre. Süre mikrosaniye çözünürlüğüyle görüntülenir.
urlTransferde kullanılan URL. (7.75.0'da tanıtıldı)
url_effectiveEn son getirilen URL. Bu, curl'e Location: başlıklarını takip etmesini söylediyseniz ( -L ile) özellikle anlamlıdır.
urlnumTransferde kullanılan URL'nin 0 tabanlı sayısal dizini. (7.75.0'da tanıtıldı)
xfer_idYapılan son transferin sayısal tanımlayıcısı. Tanıtıcı için henüz bir transfer başlatılmadıysa -1. Transfer kimliği, aynı bağlantı önbelleğini kullanarak gerçekleştirilen tüm transferler arasında benzersizdir. (8.2.0'da tanıtıldı)

curl 8.1.0'da, url veya url_effective değişkenlerinin istediğinizden fazlasını gösterdiği durumlar için yalnızca belirli URL bileşenlerini çıktılama değişkenleri eklendi.

DeğişkenAçıklama
url.fragmentGetirilen URL'nin bölüm (fragment) kısmı.
url.hostGetirilen URL'nin ana bilgisayar adı kısmı.
url.optionsGetirilen URL'nin seçenekler kısmı. Yalnızca bazı şemalar için geçerlidir.
url.passwordGetirilen URL'nin parola kısmı.
url.pathGetirilen URL'nin yol (path) kısmı.
url.portGetirilen URL'nin port numarası.
url.queryGetirilen URL'nin sorgu kısmı.
url.schemeGetirilen URL'nin şema kısmı.
url.userGetirilen URL'nin kullanıcı kısmı.
url.zoneidGetirilen URL'nin bölge kimliği (zone id) kısmı. Yalnızca ana bilgisayar adı bir IPv6 adresiyse mevcuttur.
urle.fragmentGetirilen etkili (son) URL'nin bölüm kısmı.
urle.hostGetirilen etkili (son) URL'nin ana bilgisayar adı kısmı.
urle.optionsGetirilen etkili (son) URL'nin seçenekler kısmı. Yalnızca bazı şemalar için geçerlidir.
urle.passwordGetirilen etkili (son) URL'nin parola kısmı.
urle.pathGetirilen etkili (son) URL'nin yol kısmı.
urle.portGetirilen etkili (son) URL'nin port numarası.
urle.queryGetirilen etkili (son) URL'nin sorgu kısmı.
urle.schemeGetirilen etkili (son) URL'nin şema kısmı.
urle.userGetirilen etkili (son) URL'nin kullanıcı kısmı.
urle.zoneidGetirilen etkili (son) URL'nin bölge kimliği kısmı. Yalnızca ana bilgisayar adı bir IPv6 adresiyse mevcuttur.