Merknad: Denne artikkelen er KI-generert for å teste siden. Endelig innhold kommer senere.
Noen terminalkommandoer løser vanskelige problemer. Andre gjør en helt vanlig oppgave om til en scene fra en middels dyr techno-thriller.
Dette er en samling fra den andre kategorien. Alle eksemplene gjør reelt arbeid og viser ekte data fra maskinen din. De bare ser langt mer alvorlige ut enn resultatet tilsier.
Kjør dem i en mappe du kjenner, les kommandoen før du trykker Enter, og bruk Ctrl+C når forestillingen har vart lenge nok.
1. yes: verdens mest entusiastiske program
GNU-programmet yes skriver samme tekst om og om igjen helt til det blir stoppet. Uten argumenter skriver det bokstaven y. Det er nyttig når et annet program ber om samme bekreftelse mange ganger, men først og fremst er det imponerende hvor mye selvtillit én kort kommando kan ha.
Ikke start med en ubegrenset strøm. La head stoppe etter 30 linjer:
yes 'kompilerer fortsatt...' | head -n 30
Pipen sender teksten fra yes til head. Når head har fått 30 linjer, avslutter det. Resultatet ligner en hektisk byggeprosess, men datamaskinen har i realiteten kopiert den samme setningen 30 ganger.
Det er på en måte også det mange statusmøter gjør.
2. Et dashbord som oppdaterer seg selv
På mange Linux-systemer kan watch kjøre en kommando med jevne mellomrom:
watch -n 2 'date; printf "\n"; du -sh .; find . -type f | wc -l'
Hvert andre sekund viser den klokkeslett, estimert diskbruk og antall filer under gjeldende mappe. Dette er ekte målinger, selv om ingen av dem sannsynligvis endrer seg mens du stirrer på dem.
watch er ikke installert som standard på alle systemer. Denne enkle Bash-løkken gir omtrent samme effekt:
while true; do
clear
date
printf '\nDiskbruk: '
du -sh .
printf 'Filer: '
find . -type f | wc -l
sleep 2
done
Avslutt med Ctrl+C. Nå har du et operasjonssenter for en mappe med fire forelesningsnotater og ett bilde av en katt.
3. Start en webserver på fem sekunder
Python har en enkel HTTP-server i standardbiblioteket:
python3 -m http.server --bind 127.0.0.1 8000
Åpne http://127.0.0.1:8000 i nettleseren, så får du se filene i mappen der kommandoen ble startet. Terminalen logger forespørslene mens du klikker rundt. Plutselig er du både utvikler, driftstekniker og personen som må forklare hvorfor favicon.ico mangler.
Bindingen til 127.0.0.1 gjør serveren tilgjengelig bare fra din egen maskin. Pythons dokumentasjon advarer om at http.server ikke er laget for produksjon. Bruk den til lokal testing, ikke som vert for neste store norske nettjeneste.
4. Tell kodelinjer som om tallet betyr alt
Hvor stort er prosjektet? Det mest dramatiske svaret er naturligvis et sortert regnskap over alle Python-filene:
find . -type f -name '*.py' -exec wc -l {} + | sort -n | tail
find finner Python-filer. -exec ... {} + sender mange filnavn til wc -l, som teller linjer. Til slutt sorterer sort resultatet numerisk, og tail viser de siste linjene.
Tallet sier ingenting om koden er god. Én ryddig funksjon kan være mer verdt enn 800 linjer med panikk. Men en stigende totalsum ser utmerket ut på en skjerm når noen går forbi.
Vil du telle Markdown i stedet, bytter du bare mønsteret:
find . -type f -name '*.md' -exec wc -l {} + | sort -n | tail
5. Spør internett om bare overskriftene
curl kan hente data over HTTP. Med -I ber du om responsens headere i stedet for selve innholdet:
curl -I https://example.com
Du får typisk statuskode, innholdstype, cacheinformasjon og andre metadata. Det ser ut som du forhandler direkte med internett, men du har egentlig bare spurt et nettsted om hvordan det ville ha svart.
Prøv to målinger hvis du vil se tidsdata:
curl -o /dev/null -s \
-w 'status=%{http_code} total=%{time_total}s\n' \
https://example.com
-o /dev/null kaster responskroppen, -s demper fremdriftsmåleren, og -w skriver ut de valgte måleverdiene. Nå er dramatikken i det minste kvantifisert.
6. Følg en logg som du lager selv
tail -f viser slutten av en fil og venter på nye linjer. Lag en ufarlig logg:
printf '[start] demo kjører\n' > demo.log
tail -f demo.log
Åpne et nytt terminalvindu i samme mappe og legg til hendelser:
printf '[info] kaffe funnet\n' >> demo.log
printf '[warn] motivasjon under 20 prosent\n' >> demo.log
printf '[ok] oppgave levert\n' >> demo.log
Det første vinduet oppdateres umiddelbart. Dette er den samme grunnideen som brukes når utviklere følger logger fra en tjeneste, bare med betydelig lavere konsekvensnivå.
7. Mål hvor lenge ingenting tar
Skallets time måler hvor lang tid en kommando bruker. Kombiner det med et reelt søk:
time find . -type f -name '*.md' > /dev/null
Søket går gjennom katalogtreet, men resultatet sendes til /dev/null. Du sitter igjen med tidsmålingen. På en liten mappe er den sannsynligvis nær null, som er skuffende effektivt.
For en mer synlig demonstrasjon:
time sleep 2
Maskinen arbeider ikke. Den venter profesjonelt i to sekunder og leverer deretter et detaljert tidsregnskap.
Bonus: et ærlig mini-operasjonssenter
Vi kan samle noen av kommandoene i status.sh:
#!/usr/bin/env bash
set -u
while true; do
clear
printf 'LOCAL OPS // %s\n' "$(date '+%H:%M:%S')"
printf '%s\n' '--------------------------------'
printf 'Mappe: %s\n' "$PWD"
printf 'Filer: '
find . -type f | wc -l
printf 'Bruk: '
du -sh . | cut -f1
printf '\nCtrl+C avslutter\n'
sleep 2
done
Kjør det slik:
chmod +x status.sh
./status.sh
Det ser passe viktig ut, men det lyver ikke. Klokken, stien, filtallet og diskbruken kommer fra maskinen din. Den eneste overdrevne delen er presentasjonen, og presentasjon er som kjent halvparten av informatikk.
Hva lærte vi egentlig?
Bak teateret ligger noen nyttige konsepter:
- En pipe kobler utdata fra ett program til input i et annet.
findkan kombinere tester og handlinger over hele katalogtrær.tail -fgjør en vanlig fil til en strøm av hendelser.curlkan vise både innhold og metadata fra HTTP.- Python-moduler kan ha et kommandolinjegrensesnitt via
python -m. Ctrl+Cer en viktig del av brukergrensesnittet.
Terminalen blir mindre mystisk når du ser at de mest dramatiske skjermbildene ofte består av små, forståelige programmer som er koblet sammen. Resten er mørk bakgrunn og god timing.