Tips en Trucs 2026

cURL: Internet vanaf de terminal

De curl opdracht is één van de handigste en meest veelzijdige programma's die je kunt leren. Dankzij zijn veelzijdigheid en uitgebreide HTTP-implementatie kan curl, als er een URL voor is, alles aan.

Curl installeren

Curl is beschikbaar in de standaard softwarebronnen van Debian Trixie en installeer je in de terminal met de volgende opdracht:

dany@pindabook:~$ sudo apt install curl
Installeren:                               
 curl

Samenvatting:
 Opwaarderen: 0, Installeren: 1, Verwijderen: 0, Niet opwaarderen: 0
 Downloadgrootte: 270 kB
 Benodigde ruimte: 506 kB / 84,3 GB beschikbaar

Ophalen:1 http://deb.debian.org/debian trixie/main amd64 curl amd64 8.14.1-2+deb13u2 [270 kB]
270 kB opgehaald in 0s (3.949 kB/s)
Voorheen niet geselecteerd pakket curl wordt geselecteerd.
(Database wordt ingelezen ... 206767 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../curl_8.14.1-2+deb13u2_amd64.deb wordt voorbereid...
Bezig met uitpakken van curl (8.14.1-2+deb13u2) ...
Instellen van curl (8.14.1-2+deb13u2) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...

Een webpagina ophalen

In zijn meest eenvoudige vorm haalt curl een URL op en geeft de inhoud ervan weer op de terminal:

dany@pindabook:~$ curl info.cern.ch
<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header>

<h1>http://info.cern.ch - home of the first website</h1>
<p>From here you can:</p>
<ul>
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
<li><a href="http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html">Browse the first website using the line-mode browser simulator</a></li>
<li><a href="http://home.web.cern.ch/topics/birth-web">Learn about the birth of the web</a></li>
<li><a href="http://home.web.cern.ch/about">Learn about CERN, the physics laboratory where the web was born</a></li>
</ul>
</body></html>

Wat je precies te zien krijgt, hangt af van het inhoudstype van de URL. Als je een webpagina opvraagt, zie je de HTML-broncode ervan.

Je kunt de uitvoer ook omleiden naar een bestand om een webpagina op te slaan:

dany@pindabook:~$ curl info.cern.ch > info.cern.ch.html
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100   646  100   646    0     0  10697      0 --:--:-- --:--:-- --:--:-- 10766

Een URL kan tekens bevatten die een speciale betekenis hebben voor de shell, zoals ? of #. Je moet dus voorzichtig zijn om problemen te voorkomen die hierdoor kunnen ontstaan. Zorg er daarom voor dat je URL's tussen enkele aanhalingstekens plaatst als ze speciale tekens bevatten. Als je twijfelt, wees dan voorzichtig en plaats ze altijd tussen aanhalingstekens:

dany@pindabook:~$ curl 'info.cern.ch'
<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header>

<h1>http://info.cern.ch - home of the first website</h1>
<p>From here you can:</p>
<ul>
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
<li><a href="http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html">Browse the first website using the line-mode browser simulator</a></li>
<li><a href="http://home.web.cern.ch/topics/birth-web">Learn about the birth of the web</a></li>
<li><a href="http://home.web.cern.ch/about">Learn about CERN, the physics laboratory where the web was born</a></li>
</ul>
</body></html>

Een bestand downloaden

Als je curl gebruikt om een binair bestand te downloaden, zoals een afbeelding of een LibreOffice document, krijg je een foutmelding te zien met de tekst Warning: Binary output can mess up your terminal. Dit komt doordat curl het ontvangen bestand als tekst naar de terminal stuurt. In het geval van een afbeelding is dit vrijwel zeker niet wat je wilt.

dany@pindabook:~$ curl  https://placecats.com/neo/300/200
Warning: Binary output can mess up your terminal. Use "--output -" to tell curl to output it to your terminal anyway, or consider "--output <FILE>" to save to a file.

De foutmelding vermeldt de optie --output, waarmee je een bestand kunt opgeven om de uitvoer in op te slaan in plaats van deze weer te geven. Je kunt ook -o gebruiken als korter equivalent:

dany@pindabook:~$ curl -o neo-the-cat.jpg https://placecats.com/neo/300/200
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100 11900  100 11900    0     0  28927      0 --:--:-- --:--:-- --:--:-- 28953

Hiermee wordt het bestand op die URL in de huidige map opgeslagen. In plaats van het weergeven van de bestandsinhoud zal curl nu details weergeven over de tijd die het downloaden in beslag neemt. Als je in plaats daarvan een eenvoudige voortgangsbalk wilt, gebruik je de optie -# of --progress-bar:

dany@pindabook:~$ curl --progress-bar -o neo-the-cat.jpg https://placecats.com/neo/300/200
###################################################################################### 100.0%

Voor een volledig overzicht van de opties, gebruik je naar gewoonte de --help optie:

Curl

Door de vele mogelijkheden van curl maakt de --help optie gebruik van categorieën, waardoor alles een stuk overzichtelijker blijft.

Software installeren

Soms kom je installatie-instructies tegen waarin je wordt gevraagd om curl te gebruiken. Atuin, een vervanging voor de history opdracht, heeft bijvoorbeeld de volgende installatie-instructie.

Waarschuwing
Het uitvoeren van een script dat je van internet hebt gedownload, is riskant omdat je niet precies weet wat het doet. Je moet niet alleen de bron vertrouwen, maar ook zeker weten dat je beschermd bent tegen man-in-the-middle-aanvallen. HTTPS kan dit risico helpen verminderen, maar als je extra voorzichtig wilt zijn, kun je overwegen om de pipe te laten vallen, het bestand te downloaden en te controleren of het veilig is om uit te voeren voordat je dat doet.

Als je de installatie-URL in een webbrowser opent, wordt het script dat de installatie en configuratie uitvoert weergegeven. Je kunt het downloaden en handmatig uitvoeren als je dat wilt, maar de shell-oneliner is gewoon een snellere manier. Merk op dat de uitvoer – de inhoud van dit script – wordt doorgestuurd naar sh, dat het als een shellscript uitvoert.

dany@pindabook:~$ curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
_______  _______  __   __  ___   __    _
|   _   ||       ||  | |  ||   | |  |  | |
|  |_|  ||_     _||  | |  ||   | |   |_| |
|       |  |   |  |  |_|  ||   | |       |
|       |  |   |  |       ||   | |  _    |
|   _   |  |   |  |       ||   | | | |   |
|__| |__|  |___|  |_______||___| |_|  |__|

Magical shell history

Atuin setup
https://github.com/atuinsh/atuin
https://forum.atuin.sh

Please file an issue or reach out on the forum if you encounter any problems!

===============================================================================

downloading atuin 18.12.1 x86_64-unknown-linux-gnu
installing to /home/dany/.atuin/bin
 atuin
 atuin-update
everything's installed!

To add $HOME/.atuin/bin to your PATH, either restart your shell or run:

   source $HOME/.atuin/bin/env (sh, bash, zsh)
   source $HOME/.atuin/bin/env.fish (fish)

Atuin installed successfully!

Would you like to import your existing shell history into Atuin? [Y/n] n
Skipping history import. You can always run 'atuin import auto' later.

Sync your history across all your machines with Atuin Cloud:

 - End-to-end encrypted — only you can read your data
 - Access your history from any device
 - Never lose your history, even if you wipe a machine

Sign up for a sync account? [Y/n] n

Already have an account? Log in with 'atuin login'.
You can also run 'atuin register' any time to create one.

_______  __   __  _______  __    _  ___   _    __   __  _______  __   __
|       ||  | |  ||   _   ||  |  | ||   | | |  |  | |  ||       ||  | |  |
|_     _||  |_|  ||  |_|  ||   |_| ||   |_| |  |  |_|  ||   _   ||  | |  |
 |   |  |       ||       ||       ||      _|  |       ||  | |  ||  |_|  |
 |   |  |       ||       ||  _    ||     |_   |_     _||  |_|  ||       |
 |   |  |   _   ||   _   || | |   ||    _  |    |   |  |       ||       |
 |___|  |__| |__||__| |__||_|  |__||___| |_|    |___|  |_______||_______|

Thanks for installing Atuin! I really hope you like it.

If you have any issues, please open an issue on GitHub or visit our forum (https://forum.atuin.sh)!

If you love Atuin, please give us a star on GitHub! It really helps ⭐

Het voorgestelde curl-gebruik in het atuin-voorbeeld maakt gebruik van de volgende opties:

Om atuin terug te verwijderen, voer je volgende verwijder opdracht uit.

dany@pindabook:~$ rm -r .atuin .config/atuin .local/share/atuin

Het installatiescript van atuin wordt ook automatisch opgestart bij het opstarten van de shell. Dit gedrag verwijder je met de volgende opdrachten:

dany@pindabook:~$ sed -i '/atuin init/d' .bashrc
dany@pindabook:~$ sed -i '/.atuin/d' .bashrc
dany@pindabook:~$ sed -i '/.atuin/d' .profile  

Het openbaar IP-adres weergeven

Deze praktische toepassing van curl is een snelle en eenvoudige manier om het openbare IP-adres van het thuisnetwerk (router) te achterhalen, dankzij de service van ifconfig.co:

dany@pindabook:~$ curl ifconfig.co
2a02:2350:5:10a:53:7474:1df2:5792
dany@pindabook:~$ curl -4 ifconfig.co
109.30.80.10

De eerste opdracht geeft het IPv6 adres weer. Dit is natuurlijk enkel het geval indien jouw provider IPv6 ondersteunt. Met de tweede opdracht forceren we met de optie -4 het gebruik en dus de weergave van het openbare IPv4 adres.

De standaarduitvoer is platte tekst, waardoor het een uitstekende bron is voor automatisering. Je zult merken dat je een heel ander resultaat krijgt als je naar dezelfde URL in je webbrowser gaat.

Dit komt doordat de site zich anders gedraagt op basis van de user agent. Standaard stuurt curl iets als curl/8.14.1 in de User-Agent-header. Als je dit ooit op iets anders moet instellen, bijvoorbeeld voor testdoeleinden, gebruik dan de optie -A/--user-agent:

dany@pindabook:~$ curl -s --user-agent "mijn nepbrowser" ifconfig.co | head
<!DOCTYPE html>
<html lang="en">
 <head>
   <meta charset="utf-8" />
   <title>What is my IP address? &mdash; ifconfig.co</title>
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <meta
     name="description"
     content="ifconfig.co • What is my IP address? &mdash; The best tool to find your own IP address, and information about it."
   />

Nu reageert de ifconfig-site met HTML-code, net zoals in een webbrowser.

Respons- of Request Headers weergeven

Soms wil je alleen de Respons Headers van een URL ophalen. Misschien ben je bezig met het opsporen van een fout of controleer je gebufferde (cache) Headers om te zien of je een bestand opnieuw moet downloaden. Om alleen de Respons Headers te bekijken, gebruik je -I/--head:

dany@pindabook:~$ curl -I https://setup.atuin.sh
HTTP/2 200  
date: Sun, 08 Mar 2026 15:40:29 GMT
content-type: text/plain; charset=utf-8
cache-control: max-age=0, private, must-revalidate
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
vary: accept-encoding
x-request-id: GJrn8gHH1MfzuDYAMF1D
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ylPSNGC%2B96Ub%2FNxfs0DWbKPAcCNiV8XAZXTRT9wdX31YzGxFu%2BH0wsihBStHPsuJb8LwhGl1ei5yvA0APOBK5%2Bfcknb%2F46wBiunf7NsXA3bMMVh5kenF"}]}
cf-cache-status: DYNAMIC
server: cloudflare
cf-ray: 9d92f04eaf14b9bd-BRU

Hiermee wordt een HEAD-verzoek (request) verzonden, wat niet door alle webservers wordt ondersteund. Als je bij deze methode een foutmelding krijgt, kun je curl opdracht geven om een GET-verzoek te verzenden en alleen de headers weer te geven:

dany@pindabook:~$ curl -I -X GET https://setup.atuin.sh
HTTP/2 200  
date: Sun, 08 Mar 2026 15:43:45 GMT
content-type: text/plain; charset=utf-8
cache-control: max-age=0, private, must-revalidate
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=kFOG2c%2F0OJmgR83pd3dbsuNv2O9Cq3BbYugDkU1DbhOioJl0SU%2FfhA43pbujyn4lLohnwf4fX3glNtnTgWwmeGDWTdMgqVdD3SGnbYOfH06uQlX%2B%2FL59hQQ%3D"}]}
vary: accept-encoding
x-request-id: GJroH4x_4R50pzABFzAB
cf-cache-status: DYNAMIC
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
server: cloudflare
cf-ray: 9d92f513a8c5ad3f-BRU

Als je de Request Headers wilt zien die curl verstuurt, gebruik je de --verbose/-v optie:

dany@pindabook:~$ curl -I -verbose https://setup.atuin.sh
* Host setup.atuin.sh:443 was resolved.
* IPv6: 2606:4700:20::681a:4a, 2606:4700:20::ac43:45c3, 2606:4700:20::681a:14a
* IPv4: 104.26.1.74, 172.67.69.195, 104.26.0.74
*   Trying [2606:4700:20::681a:4a]:443...
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=atuin.sh
*  start date: Feb 26 21:56:31 2026 GMT
*  expire date: May 27 22:56:29 2026 GMT
*  subjectAltName: host "setup.atuin.sh" matched cert's "setup.atuin.sh"
*  issuer: C=US; O=Google Trust Services; CN=WE1
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA256
*   Certificate level 1: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 2: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384
* Connected to setup.atuin.sh (2606:4700:20::681a:4a) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://setup.atuin.sh/
* [HTTP/2] [1] [:method: HEAD]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: setup.atuin.sh]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
* [HTTP/2] [1] [referer: rbose]
> HEAD / HTTP/2
> Host: setup.atuin.sh
> User-Agent: curl/8.14.1
> Accept: */*
> Referer: rbose
>  
* Request completely sent off
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200  
HTTP/2 200  
< date: Sun, 08 Mar 2026 15:45:52 GMT
date: Sun, 08 Mar 2026 15:45:52 GMT
< content-type: text/plain; charset=utf-8
content-type: text/plain; charset=utf-8
< cache-control: max-age=0, private, must-revalidate
cache-control: max-age=0, private, must-revalidate
< nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
< vary: accept-encoding
vary: accept-encoding
< x-request-id: GJroPR7PvePV2JMAp2IC
x-request-id: GJroPR7PvePV2JMAp2IC
< report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=L8E%2BYJHtjEiYI1gbGj53qjlsqlA2vw%2FYqceVNmHygCGrlSGKVT2lRaW7PqcQR7IqrG3mHY%2FkSXjgDyBTX0loKsLwPVFB0d6Pl82kvlhJVnKjw%2BtZ0F5a"}]}
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=L8E%2BYJHtjEiYI1gbGj53qjlsqlA2vw%2FYqceVNmHygCGrlSGKVT2lRaW7PqcQR7IqrG3mHY%2FkSXjgDyBTX0loKsLwPVFB0d6Pl82kvlhJVnKjw%2BtZ0F5a"}]}
< cf-cache-status: DYNAMIC
cf-cache-status: DYNAMIC
< server: cloudflare
server: cloudflare
< cf-ray: 9d92f82d6f8cba7c-BRU
cf-ray: 9d92f82d6f8cba7c-BRU
<  

* Connection #0 to host setup.atuin.sh left intact

Toegang tot een API

Als je met een API werkt, kan een goede client zoals Postman of Posting je helpen bij het automatiseren en debuggen van de taak. Maar curl kan net zo nuttig zijn om te onderzoeken hoe een API werkt.

De DummyJSON-service is een goede plek om te beginnen. Deze site biedt een voorbeeld-API met dummy gegevens die je kunt gebruiken om client-apps en jouw eigen programma's te testen. Je kunt verschillende eindpunten gebruiken om omleidingen te controleren, autorisatie te testen en vertragingen of willekeurige reacties te simuleren.

Het uitproberen van de service met curl is heel eenvoudig: je hoeft alleen maar het juiste eindpunt door te geven:

dany@pindabook:~$ curl https://dummyjson.com/test
{"status":"ok","method":"GET"}dany@pindabook:~$ ^C

Zoals je merkt, werd op het einde van de uitvoer geen nieuwe regel (Carriage Return) gestuurd. Plaats de prompt aan het begin van de volgende regel met de sneltoets Ctrl+c.

Je krijgt een eenvoudig JSON-document als antwoord, met twee eigenschappen. De methode-eigenschap geeft de HTTP-methode van het verzoek weer:

Zodra je gegevens uit een API hebt opgehaald, kun je deze eenvoudig verwerken met behulp van standaard opdrachten. Je kunt bijvoorbeeld JSON-gegevens verwerken met jq. Onderstaande opdracht haalt productgegevens op met curl en geeft deze vervolgens door aan jq om het eerste product te extraheren:

dany@pindabook:~$ curl https://dummyjson.com/products | jq '.products[0]'
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100 44090    0 44090    0     0   751k      0 --:--:-- --:--:-- --:--:--  755k
{
 "id": 1,
 "title": "Essence Mascara Lash Princess",
 "description": "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects. Achieve dramatic lashes with this long-lasting and cruelty-free formula.",
 "category": "beauty",
 "price": 9.99,
 "discountPercentage": 10.48,
 "rating": 2.56,
 "stock": 99,
 "tags": [
   "beauty",
   "mascara"
 ],
 "brand": "Essence",
 "sku": "BEA-ESS-ESS-001",
 "weight": 4,
 "dimensions": {
   "width": 15.14,
   "height": 13.08,
   "depth": 22.99
 },
 "warrantyInformation": "1 week warranty",
 "shippingInformation": "Ships in 3-5 business days",
 "availabilityStatus": "In Stock",
 "reviews": [
   {
     "rating": 3,
     "comment": "Would not recommend!",
     "date": "2025-04-30T09:41:02.053Z",
     "reviewerName": "Eleanor Collins",
     "reviewerEmail": "eleanor.collins@x.dummyjson.com"
   },
   {
     "rating": 4,
     "comment": "Very satisfied!",
     "date": "2025-04-30T09:41:02.053Z",
     "reviewerName": "Lucas Gordon",
     "reviewerEmail": "lucas.gordon@x.dummyjson.com"
   },
   {
     "rating": 5,
     "comment": "Highly impressed!",
     "date": "2025-04-30T09:41:02.053Z",
     "reviewerName": "Eleanor Collins",
     "reviewerEmail": "eleanor.collins@x.dummyjson.com"
   }
 ],
 "returnPolicy": "No return policy",
 "minimumOrderQuantity": 48,
 "meta": {
   "createdAt": "2025-04-30T09:41:02.053Z",
   "updatedAt": "2025-04-30T09:41:02.053Z",
   "barcode": "5784719087687",
   "qrCode": "https://cdn.dummyjson.com/public/qr-code.png"
 },
 "images": [
   "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"
 ],
 "thumbnail": "https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp"
}

Een RSS-feed ophalen

Wil je een shell-gebaseerde RSS-client maken. De kern daarvan kan door curl verzorgt worden, omdat deze zo handig is en alle low-level HTTP-bewerkingen ondersteunt die je nodig hebt. Je kunt bijvoorbeeld een RSS-feed ophalen en de inhoud ervan bekijken met curl:

dany@pindabook:~$ curl -s https://linux.pindanet.be/rss.xml
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Pindanet Linux Nieuws</title>
<link>https://linux.pindanet.be/</link>
<description>De pas verschenen artikels op deze site.</description>
<image>
 <url>https://linux.pindanet.be/rss/icon.gif</url>
 <title>Pindanet Linux Nieuws</title>
 <link>https://linux.pindanet.be</link>
</image>
<language>nl-be</language>
<!-- Import in facebook: http://www.facebook.com/editnotes.php?import (moet ingelogd zijn bij facebook).
    date-time   =  [ day "," ] date time        ; dd mm yy
                                                ;  hh:mm:ss zzz
    day         =  "Mon"  / "Tue" /  "Wed"  / "Thu"
                /  "Fri"  / "Sat" /  "Sun"
    date        =  1*2DIGIT month 2DIGIT        ; day month year
                                                ;  e.g. 20 Jun 82
    month       =  "Jan"  /  "Feb" /  "Mar"  /  "Apr"
                /  "May"  /  "Jun" /  "Jul"  /  "Aug"
                /  "Sep"  /  "Oct" /  "Nov"  /  "Dec"
    time        =  hour zone                    ; ANSI and Military
    hour        =  2DIGIT ":" 2DIGIT [":" 2DIGIT]                                                              min twee uur (zomer) min één uur (winter)
                                                ; 00:00:00 - 23:59:59
    zone        =  "UT"  / "GMT"                ; Universal Time
                                                ; North American : UT
                /  "EST" / "EDT"                ;  Eastern:  - 5/ - 4
                /  "CST" / "CDT"                ;  Central:  - 6/ - 5
                /  "MST" / "MDT"                ;  Mountain: - 7/ - 6
                /  "PST" / "PDT"                ;  Pacific:  - 8/ - 7
                /  1ALPHA                       ; Military: Z = UT;
                                                ;  A:-1; (J not used)
                                                ;  M:-12; N:+1; Y:+12
                / ( ("+" / "-") 4DIGIT )        ; Local differential
                                                ;  hours+min. (HHMM) -->
<item>
       <title>Kitty Terminal Emulator</title>
       <link>https://linux.pindanet.be/faq/tips26/kitty.html</link>
       <pubDate>Sat, 07 Mar 2026 15:38:05 +0000</pubDate>
       <description>Kitty is een GPU-aangedreven terminalemulator die OpenGL gebruikt voor verwerking en op meerdere platforms draait. Dit betekent dat het een GPU gebruikt voor rendering (weergeven van de
uitvoer) in plaats van een CPU. Daardoor is het van nature extreem snel en efficiënt....</description>
</item>
<item>
       <title>De read opdracht</title>
       <link>https://linux.pindanet.be/faq/tips26/read.html</link>
       <pubDate>Sat, 28 Feb 2026 13:57:05 +0000</pubDate>
       <description>De read opdracht is een ingebouwde functie van de Bash-shell die gebruikersinvoer vastlegt en toewijst aan variabelen, waardoor het essentieel is voor interactieve scripts. Veelvoorkome
nde gebruikssituaties zijn onder meer het vragen om gebruikersnamen en wachtwoorden, het regel voor regel verwerken van CSV-bestanden, het implementeren van bevestigingsdialoogvensters en het bouwen van men
ugestuurde interfaces. Aan het einde van deze tip ben je in staat om enkelvoudige en meervoudige invoeren vast te leggen, gevoelige gegevens veilig te verwerken, tijdslimieten te implementeren, bestanden ef
ficiënt te verwerken en veelvoorkomende valkuilen op te lossen....</description>
</item>
<item>
       <title>3D Pinball - Space Cadet</title>
       <link>https://linux.pindanet.be/faq/tips26/pinball.html</link>
       <pubDate>Sat, 21 Feb 2026 14:45:05 +0000</pubDate>
       <description>In 2020 begon ontwikkelaar Muzychenko Andrey met het decompileren en reverse-engineeren van de Space Cadet-only versie van het spel dat bij Windows werd geleverd, en porteerde het onoff
icieel naar C++ bovenop Simple DirectMedia Layer. Hierdoor kon het spel worden gespeeld op meerdere platforms, waaronder macOS, Linux en recente Windows versies, naast browsers, Android, LG webOS, Wii, Wii
U, 3DS en PlayStation Vita....</description>
</item>
<item>
       <title>Werken met RAM-schijven</title>
       <link>https://linux.pindanet.be/faq/tips26/ramdisk.html</link>
       <pubDate>Sat, 14 Feb 2026 14:37:05 +0000</pubDate>
       <description>Veel Linux-gebruikers proberen altijd zoveel mogelijk prestaties uit hun systeem te halen. Een grote bottleneck voor de systeemprestaties komt vaak voort uit de snelheid van bestandsove
rdracht, dat wil zeggen de lees- en schrijftijden van het systeem. Hoewel recente schijftechnologieën zoals SSD's (Solid State Drives) en NVMe (Non Volatile Memory Express) de overdrachtstijden aanzienlijk
hebben versneld ten opzichte van traditionele harde schijven, kan geen enkele technologie tippen aan de snelle prestaties van een RAM-schijf....</description>
</item>
<item>
       <title>Schermafbeeldingen maken met Spectacle</title>
       <link>https://linux.pindanet.be/faq/tips26/spectacle.html</link>
       <pubDate>Sat, 07 Feb 2026 13:41:05 +0000</pubDate>
       <description>De KDE Plasma-desktopomgeving is zonder twijfel het indrukwekkendste dat er te vinden is. Het is niet alleen het mooiste, maar ook het meest consistente, het meest professioneel ogende
en het heeft de meeste opties en aanpassingsmogelijkheden. Het wordt geleverd met een behoorlijk solide bundel KDE-programma's, waarvan de meeste volwassen, elegant en krachtig zijn. Eén van die programma's
is Spectacle, een applicatie voor het maken van schermafbeeldingen....</description>
</item>
<item>
       <title>Omgevingslicht meten met webcam</title>
       <link>https://linux.pindanet.be/faq/tips26/lumos.html</link>
       <pubDate>Sat, 31 Jan 2026 15:37:05 +0000</pubDate>
       <description>Vandaag demonstreren we de voordelen van Open Source met een praktijkvoorbeeld. We maken kennis met het GitHub project Lumos. Daarna passen we de broncode aan om er een lichtmeter van t
e maken....</description>
</item>
<item>
       <title>Zed: een moderne in RUST ontwikkelde open source code-editor met AI</title>
       <link>https://linux.pindanet.be/faq/tips26/zed.html</link>
       <pubDate>Sat, 24 Jan 2026 15:21:05 +0000</pubDate>
       <description>Code-editors zijn een essentieel onderdeel van het arsenaal voor softwareontwikkelaars. Ze bieden hen een betrouwbare omgeving voor het schrijven, bewerken en debuggen van allerlei soor
ten code.
Ze staan bekend om hun superieure codeverwerking, omdat ze beschikken over geavanceerde debuggingtools, syntaxisaccentuering, automatische aanvulling, extensies en tal van andere functies.
Enkele populaire namen zijn Vim, Kate, VS Code en Sublime Text.
Er is nog een andere editor die steeds populairder wordt; deze is ontwikkeld door de makers van Atom en Tree-sitter. Deze editor heet Zed Editor en is een open-source code-editor die je zeker eens moet uitp
roberen....</description>
</item>
<item>
       <title>De prullenbak in de terminal met gtrash</title>
       <link>https://linux.pindanet.be/faq/tips26/gtrash.html</link>
       <pubDate>Sat, 17 Jan 2026 09:16:05 +0000</pubDate>
       <description>Heb je ooit meegemaakt dat je per ongeluk belangrijke bestanden van je Linux-systeem in de terminal hebt verwijderd? Dat is ons allemaal wel eens overkomen. De rm opdracht kan behoorlij
k meedogenloos zijn: als iets éénmaal is verwijderd, is het voorgoed verdwenen.
       Maar maak je geen zorgen, er is een oplossing: maak kennis met gtrash! Dit is de veiligere, gebruiksvriendelijkere manier om bestanden in Linux te verwijderen, zodat je je geen zorgen hoeft te maken
....</description>
</item>
<item>
       <title>Handige sneltoetsen in KDE Plasma</title>
       <link>https://linux.pindanet.be/faq/tips26/shortcut.html</link>
       <pubDate>Sat, 10 Jan 2026 15:13:05 +0000</pubDate>
       <description>KDE Plasma draait helemaal om flexibiliteit en efficiëntie. Met de juiste sneltoetsen kunnen dagelijkse bureaubladtaken veel eenvoudiger worden. Laten we eens kijken hoe het beheersen v
an deze sneltoetsen de KDE Plasma-ervaring kan verbeteren....</description>
</item>
<item>
       <title>De Yazi terminal bestandsbeheerder</title>
       <link>https://linux.pindanet.be/faq/tips26/yazi.html</link>
       <pubDate>Sat, 03 Jan 2026 14:41:05 +0000</pubDate>
       <description>Yazi wordt aangeprezen als een razendsnelle TUI-bestandsbeheerder met asynchrone ondersteuning. Yazi is een geschreven in Rust en heeft als doel om een efficiënte, gebruiksvriendelijke
en aanpasbare ervaring op het gebied van bestandsbeheer te bieden....</description>
</item>
<item>
       <title>CPU-snelheidslimieten instellen met cpupower-gui</title>
       <link>https://linux.pindanet.be/faq/tips25/cpupower.html</link>
       <pubDate>Sat, 27 Dec 2025 13:43:05 +0000</pubDate>
       <description>Computers moeten tegenwoordig snel, zuinig en tegelijk stil zijn. Computersystemen waarbij de processor op volle snelheid werkt, verbruiken veel en produceren veel warmte. Vooral bij co
mputers die werken op batterijen is het verbruik belangrijk. De geproduceerde warmte wordt door luidruchtige ventilators afgevoerd. Daarenboven zorgen hoge temperaturen voor een kortere levensduur van zowel
de ventilators als de elektronica....</description>
</item>
<item>
       <title>De exit status code van opdrachten</title>
       <link>https://linux.pindanet.be/faq/tips25/exit.html</link>
       <pubDate>Sat, 20 Dec 2025 14:25:05 +0000</pubDate>
       <description>$? is een ingebouwde variabele die de shell (bijv. Bash) gebruikt om de exitstatuscode van de laatst uitgevoerde opdracht als een geheel getal te onthouden en die ongewijzigd blijft tot
dat de volgende opdracht wordt uitgevoerd....</description>
</item>
<item>
       <title>Experimenteren met Firefox</title>
       <link>https://linux.pindanet.be/faq/tips25/geckium.html</link>
       <pubDate>Sat, 13 Dec 2025 15:12:05 +0000</pubDate>
       <description>Het gebruik van het pakketbeheerprogramma van jouw distributie is een handige manier om Firefox te installeren, maar je kunt het installatieprogramma ook rechtstreeks downloaden van de
website van Mozilla. Dit is wellicht ideaal voor gebruikers die zeker willen zijn dat ze de allernieuwste versie van de browser krijgen. Bovendien kun je dan een andere taal kiezen. Dit is ook zeer handig o
m iets uit te proberen, zonder het risico te lopen om jouw standaard gebruikte Firefox te beïnvloeden....</description>
</item>
<item>
       <title>Smartcard experimenten</title>
       <link>https://linux.pindanet.be/faq/tips25/smartcard.html</link>
       <pubDate>Sat, 06 Dec 2025 15:33:05 +0000</pubDate>
       <description>Deze tip is een vervolg van vorige week (eID), waarbij we experimenteren met smartcards. We gebruiken daarbij dezelfde hardware (eID reader) om ook andere smartcards zoals bankkaarten t
e lezen. Smartcards bevatten naast allerlei gegevens hoofzakelijk een unieke beveiligingssleutel en heb je in allerlei vormen, naast eID en bankkaarten bestaan er USB (CryptoIdentity, Digipass), SIM (kaart
of eSIM), NFC (Near-field communication), Windows TPM (Trusted Platform Module), Apple's Secure Enclave, Android Titan M2, Samsung Knox, enz. Veel van deze Smartcards zijn tegenwoordig ingebouwd in apparate
n zoals computers, smartphones waardoor je deze aparaten ook kunt gebruiken voor identificatie via apps. Met de ingebouwde unieke sleutel kan je ondubbelzinnig geïdentificeerd worden, maar de sleutels worde
n ook gebruikt om gegevens te versleutelen....</description>
</item>
<item>
       <title>eID voor overheidstoepassingen</title>
       <link>https://linux.pindanet.be/faq/tips25/eid.html</link>
       <pubDate>Sat, 29 Nov 2025 14:18:05 +0000</pubDate>
       <description>Met een eID krijg je veilig en eenvoudig toegang tot diverse online overheidsdiensten zoals Tax-on-web, MyPension, MyMinfin en nog veel meer. Of je nu je pensioengegevens wil raadplegen
of je belastingaangifte wil indienen, met een eID en kaartlezer klaar je de klus....</description>
</item>
</channel>
</rss>dany@pindabook:~$ ^C

Als je libxml hebt geïnstalleerd, kun je de XML-uitvoer verwerken met xmllint:

dany@pindabook:~$ curl -s https://linux.pindanet.be/rss.xml | xmllint --xpath '//channel/title/text()' -
Pindanet Linux Nieuws

Deze opdracht gebruikt xmllint om een XPath-expressie te evalueren die gegevens uit XML haalt, in dit geval de titel van het kanaal.

cURL in programma's gebruiken

Het cURL-project omvat meer dan alleen de curl opdracht. Het omvat ook een bibliotheek, libcurl, die ook door curl zelf wordt gebruikt. Deze bibliotheek is zeer overdraagbaar en beschikbaar voor alle soorten besturingssystemen, waaronder Linux, Windows, macOS en Android. libcurl wordt geleverd met een C API, maar er zijn bindingen voor veel andere talen, zoals C++, Python, Rust en Go.

De bibliotheek komt grotendeels overeen met wat de opdracht doet, met name wat betreft de opties en hun gedrag. Hier volgt een eenvoudig voorbeeld met PHP.

Start je favoriete editor (hier nano):

dany@pindabook:~$ nano curl.php

Gebruik de volgende PHP-code:

 GNU nano 8.4                                   curl.php *                                           
<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://info.cern.ch");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>


^G Hulp       ^O Opslaan    ^F Zoeken     ^K Knippen    ^T Opdracht   ^C Positie    M-U Terugdraaien
^X Afsluiten  ^R Inlezen    ^\ Vervangen  ^U Plakken    ^J Uitvullen  ^/ Naar regel M-E Herdoen

De functie curl_init() start een sessie en zorgt voor een verwijzing (handle) waarmee je toegang kunt krijgen tot de sessie. Je kunt het gedrag van de bibliotheek regelen met behulp van de opties die curl ondersteunt via curl_setopt(). curl_exec() verzendt het verzoek daadwerkelijk, terwijl curl_error() (niet gebruikt) en curl_close() nuttige beheerfuncties zijn.

In dit voorbeeld wordt de optie CURLOPT_RETURNTRANSFER gebruikt om het antwoord naar een variabele te schrijven. Wat vergelijkbaar is met --output de optie van curl.

Na het opslaan van de PHP code (Ctrl+s) en het verlaten van de nano editor (Ctrl+x), kan je het PHP uitvoeren en testen:

dany@pindabook:~$ php curl.php  
<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header>

<h1>http://info.cern.ch - home of the first website</h1>
<p>From here you can:</p>
<ul>
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
<li><a href="http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html">Browse the first website using the line-mode browser simulator</a></li>
<li><a href="http://home.web.cern.ch/topics/birth-web">Learn about the birth of the web</a></li>
<li><a href="http://home.web.cern.ch/about">Learn about CERN, the physics laboratory where the web was born</a></li>
</ul>
</body></html>

cURL verwijderen

Verwijder het geïnstalleerde softwarepakket:

dany@pindabook:~$ sudo apt remove curl
[sudo] wachtwoord voor dany:  
VERWIJDEREN:                               
 curl

Samenvatting:
 Opwaarderen: 0, Installeren: 0, Verwijderen: 1, Niet opwaarderen: 0
 Vrijgemaakte ruimte: 506 kB

Doorgaan? [J/n]  
(Database wordt ingelezen ... 206779 bestanden en mappen momenteel geïnstalleerd.)
curl (8.14.1-2+deb13u2) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...

Om echt schijfruimte vrij te maken, verwijderen we ook de niet langer gebruikte afhankelijke pakketten met:

dany@pindabook:~$ sudo apt autoremove
Samenvatting:                              
 Opwaarderen: 0, Installeren: 0, Verwijderen: 0, Niet opwaarderen: 0

Wat hier niet eens noodzakelijk was. De door curl aangemaakte bestanden en het PHP script verwijder je met:

dany@pindabook:~$ rm curl.php info.cern.ch info.cern.ch.html neo-the-cat.jpg