3 Linux-kommandoer du har oversett for lenge (men som du kan huske på sekunder)

Oppdag kraften i tre undervurderte Linux-kommandoer: tac for å lese filer baklengs, shuf for å randomisere linjer og timeout for å administrere kommandoer effektivt.

Linux er pakket med verktøy, men de fleste bruker bare et knippe. Bakliggende kommandoer som tac, shuf og timeout åpner opp for morsomme og nyttige muligheter. De løser vanlige oppgaver på én linje og er enkle å lære. Et solid tillegg til ditt verktøyskrin.

tac — Les filer i revers

Snu filer slik at nyeste linjer kommer først

Navnet sier det meste. tac, cat skrevet baklengs, viser filens linjer fra bunn til topp. Det er en del av GNU coreutils og finnes i de fleste Linux-distribusjoner.

Hvorfor bruke det? For loggfiler, så klart. De fleste logger vokser nederst, noe som betyr at relevant informasjon ligger på slutten av en fil med tusenvis av linjer. Kjør tac /var/log/syslog | less for å se de nyeste oppføringene øverst, så slipper du å scrolle.

Det fungerer bra med andre verktøy, også. Pipe det til grep med -m flagget, som i tac access.log | grep -m 5 "404", for å få de fem nyeste treffene uten heftige søk. Siden tac både leser fra file og standardinput, kan det enkelt integreres i alle pipelines og reversere utdataene fra andre kommandoer, som seq 1 5 | tac.

-s flagget lar deg spesifisere en annen separator, perfekt for data uten linjeskift. Med -r kan du bruke et regulært uttrykk for separatoren, noe som gir deg kontroll over rekkefølgen i strukturerte tekster.

Begrensninger finnes. tac reverserer linjer, men ikke tegn – se til rev for å snu teksten i hver linje. Det må også lese hele input før det skriver ut noe, så uendelige strømmer passer dårlig. For bare de siste linjene, er tail raskere. På macOS og BSD mangler tac ofte, men tail -r gir lignende resultater.

shuf — Randomiser dine inputs

Plukk, bland og sample linjer uten å skrive skript

shuf genererer tilfeldige permutasjoner. Gi den en fil, så stokker den linjene. Eksempel: shuf names.txt. Som tac er den del av GNU coreutils og fungerer både med filer og i pipelines.

Sampling er hvor det virkelig skinner. Med -n kan du begrense antall linjer, så shuf -n 1 quotes.txt plukker ett tilfeldig sitat, mens shuf -n 10 dataset.csv trekker ut ti linjer fra en stor fil. Utmerket for alle som håndterer data, spesielt for å sjekke filer uten å åpne regneark.

-e gjør det mulig å bruke kommandolinjeargumenter som input. Slik kan du for eksempel stokke ord: shuf -e pizza sushi tacos -n 1 løser middagskonflikter på et blunk. Med -i kan du generere tall, som shuf -i 1-100 -n 5 for å trekke unike tall mellom 1 og 100. Legg til -r for repetisjoner, og nå er du klar for å kaste terninger.

Praktisk for skripting. Et shell-skript kan velge tilfeldig bakgrunn fra en mappe ved å pipe ls inn i shuf -n 1, spille en spilleliste i tilfeldig rekkefølge, eller lage variert testdata. For å stokke en fil på stedet, bruk -o for å spesifisere utdatafilen. Dette gir deg mer fleksibilitet enn bare omdirigering.

Håndterer situasjonen der input og output er identiske på en sikker måte.

Men det er en hake. Standardinnstillingen for shuf henter fra systemets tilfeldige kilde. Dette er fint for daglig bruk, men ikke egnet for kryptografiske oppgaver som passord- eller nøkkelgenerering. For repeterbare resultater, bruk --random-source.

Det lar deg levere en fil med byte for å gjenskape den samme blandingen.

timeout — Sett en klokke på kommandoer

Stopp rømte kommandoer før de henger terminalen

timeout kjører en kommando og avslutter den hvis den overskrider en angitt tidsgrense. Syntaksen er enkel: varigheten først, deretter kommandoen, som i timeout 10 ping eksempel.com. Standard varighet er sekunder, men du kan bruke suffikser: m for minutter, h for timer, og d for dager.

Hvorfor betyr dette noe? Kommandoer har en tendens til å henge. En nettverksforespørsel venter på en uresponsiv server, et skript står fast ved låste ressurser, eller en sikkerhetskopieringsjobb tar mye lenger tid enn forventet. I en interaktiv terminal kan du rette opp med Ctrl+C. Men i en cron-jobb eller et automatisert skript er ingen der for å rydde opp, og en låst prosess kan blokkere alt bak. Ved å pakke risikable kommandoer inn i timeout holder skriptet flytende.

Noen programmer ignorerer TERM-signalet som timeout sender når tiden går ut, varsler dem om å avslutte. -k alternativet gir en ekstra tid etter hvilken timeout så sender KILL-signalet, umulig å ignorere. Eksempel: timeout -k 5 30 ./long-task.sh gir skriptet tretti sekunder, pluss fem til for en orden før det tvangsavsluttes. -s alternativet lar deg velge et annet signal.

Utgangsstatusen er like viktig som cut-off. Når en kommando avsluttes fordi den overskrider grensen, returnerer timeout status 124. Skript kan bruke denne verdien til å skille mellom en timeout og en ordinær feil, for så å prøve igjen eller logge en advarsel. --preserve-status lar timeout returnere kommandoens egen utgangsstatus.

Vær oppmerksom på at timeout som standard kjører kommandoer i en bakgrunnsprosessgruppe, noe som kan føre til merkelige aktiviteter fra interaktive programmer som forventer tastaturinnspill. --foreground alternativet løser dette, og det er lurt å teste alt som kommuniserer med terminalen før du stole på det.

Tre små kommandoer som sparer tid hver dag

Tac, shuf og timeout utfører hver sin spesifikke oppgave. Å lese logger bakover, trekke tilfeldige linjer, og begrense hengekommandoer forekommer ofte. Alle tre er allerede installert på de fleste Linux-systemer, så det er ingenting å sette opp før bruk.

Hvis du vil lese flere artikler som 3 Linux-kommandoer du har oversett for lenge (men som du kan huske på sekunder), kan du besøke kategorien Linux.

Index
  1. tac — Les filer i revers
    1. Snu filer slik at nyeste linjer kommer først
  2. shuf — Randomiser dine inputs
    1. Plukk, bland og sample linjer uten å skrive skript
  3. timeout — Sett en klokke på kommandoer
    1. Stopp rømte kommandoer før de henger terminalen
    2. Tre små kommandoer som sparer tid hver dag

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Go up