Curl Komutu

Kelime anlamı ile Client URL manasına gelmektedir. URL'ler üzerinden veri transferi yapabilen bir komut satırıdır. Veri alabilir veya veri gönderebilir.


`curl` Komutunun Temel Kullanımı

      Temel HTTP GET İsteği:

curl http://example.com

İstek atılan DOMAIN alanının geriye verdiği cevabı ekrana yazdırır. Yukarıdaki komutta http://example.com alanına bir GET istek atıldığı için geriye HTML sayfası döndürmüştür.


      HTTP POST İsteği:

curl -X POST -d "param1=value1¶m2=value2" http://example.com

Yukarıdaki örnekte "http://example.com" alanına POST isteği atılmıştır ve geriye yanıt döndürülmüştür. Veriyi POST yöntemiyle göndermek için -d seçeneği kullanılır.


      Başlık Bilgilerini Görüntüleme:

curl -I http://example.com

Yukarıdaki örnekte hedef DOMAIN alanına bir istek atılmış ve geriye sunucunun başlık bilgileri döndürülmüştür. Bunlar (Server: ECAcc (nyd/D193), Content-Length: 1256 vb.) değerlerdir.


`curl` Komutu ile Dosya İndirme

      Dosyayı Orijinal İsmi ile İndirme:

curl -O https://bilimekseni.com/img/pictures/1721820353602-111635092.jpeg

Yukarıdaki örnekte dosya orijinal ismi ile bulunduğu klasöre indirilmiştir. Bu komut çalıştırıldığında hangi klasör açıksa indirme işlemi o klasör içerisine yapılır.


      Dosyayı Belirli Bir İsim ile İndirme:

curl -o resim.jpeg https://bilimekseni.com/img/pictures/1721820353602-111635092.jpeg

Yukarıdaki örnekte, sunucu içerisindeki dosya, resim.jpeg ismiyle indirilmiştir. Dosya, curl komutunun çalıştığı klasöre bu isimle kaydedilmiştir.


`curl` Komutu ile Dosya Yükleme

      HTTP/HTTPS ile Dosya Yükleme:

curl -T dosya.txt http://example.com/upload

Yukarıdaki örnekte dosya.txt dosyası belirtilen URL'ye yüklenmiştir. Bu, `PUT` metodunu kullanarak dosyayı sunucuya yükler.


      Form Verisi ile Dosya Yükleme:

curl -F "file=@dosya.txt" http://example.com/upload

Yukarıdaki örnekte dosya, form verisi olarak yüklenmiştir. Form alanının adı file ve yüklenen dosya dosya.txt'dir.


      Birden Fazla Dosya Yükleme:

curl -F "file1=@dosya1.txt" -F "file2=@dosya2.txt" http://example.com/upload

Yukarıdaki örnekte birden fazla dosya yüklenmiştir. Her bir dosya ayrı bir -F seçeneği ile belirtilmiştir.


      Form Verileri ile Diğer Alanları Gönderme:

curl -F "username=user" -F "file=@dosya.txt" http://example.com/upload

Yukarıdaki örnekte, dosya ile birlikte diğer form verileri de gönderilmiştir. Burada username form alanı user olarak ayarlanmıştır.


      Bir URL'den Dosya Yükleme:

curl -s http://example.com/origin.txt | curl -T - http://example.com/destination

Yukarıdaki örnekte, bir URL'den çekilen dosya, başka bir URL'ye yüklenmiştir. İlk curl komutu veriyi alır, ikinci curl komutu bu veriyi yükler.


      İçerik Türünü Belirtme:

curl -F "file=@dosya.txt" -H "Content-Type: application/octet-stream" http://example.com/upload

Yukarıdaki örnekte dosyanın içerik türü belirtilmiştir. Bu tür genellikle ikili veriler için kullanılır.


Ek Protokoller ve Kullanımlar

      FTP ile Dosya İndirme:

curl -O ftp://ftp.example.com/dosya.txt

      HTTPS ile Dosya Yükleme:

curl -T dosya.txt https://example.com/upload

      JSON Verisi Gönderme:

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com

`curl`, çok sayıda seçenek ve özellik sunduğu için çeşitli veri transferi ve test senaryoları için kullanışlıdır. Detaylı bilgi için man curl komutunu terminalde çalıştırarak curl'ün tüm seçeneklerine erişebilirsiniz.


Eğer `curl` Komutu Yoksa

Sunucular, genel olarak kendi yapılandırmalarımıza açık olarak gelir. Bu nedenle kullandığımız işletim sistemi içerisinde `curl` komutu bulunmayabilir. Eğer böyle bir durum varsa `curl` komutunu indirmek için:

/*Debian ve Ubuntu Tabanlı Sistemler (örn. Ubuntu, Debian, Linux Mint)*/
sudo apt update
sudo apt install curl

/*!Red Hat ve Fedora Tabanlı Sistemler (örn. CentOS, Fedora, RHEL)*/
sudo dnf install curl    // Fedora ve RHEL 8+
sudo yum install curl    // CentOS ve RHEL 7 ve daha eski sürümler


/*Arch Linux Tabanlı Sistemler (örn. Arch Linux, Manjaro)*/
sudo pacman -S curl

/*openSUSE*/
sudo zypper install curl

Yukarıdaki inderme yöntemlerinden kendi işletim sistminize uygun olanı belirleyip gerekli adımları takip etmeniz yeterlidir.