På vei i Riktig (Re)Retning

Hvis du har tatt tid å få taket på terminal grunnleggende, er du sannsynligvis på det punktet der du ønsker å begynne å sette sammen det du har lært. Noen ganger utstedelse av kommandoer, ett av gangen er nok, men det er tilfeller når det kan være kjedelig å skrive inn kommandoen etter kommandoen bare å utføre en enkel oppgave. Dette er hvor den ekstra symboler på tastaturet kommer i.

For shell, terminalens kommandotolken, disse symbolene er ikke bortkastet tastene — de er mektige aktører som kan koble informasjon sammen, dele den opp i stykker, og mye mer. En av de enkleste og mest effektive shell operasjoner er omdirigering.

3 Bekker

For å forstå driften av omdirigering, er det viktig å vite hvilke kilder av data skallet kan omadressere. I Linux er det tre “bekker” av data. Den første er “standard input,” nummerert av systemet som stream 0 (siden datamaskiner telle fra 0). Det består av informasjon eller anvisninger som er sendt til shell for evaluering. Mesteparten av tiden, denne kommer fra brukeren om å skrive ting inn i terminalvinduet.

Den andre, “standard output,” er nummerert som stream 1. Som du kan forestille deg, det er strømmen av data som skallet utganger etter at du har utført noen prosess, vanligvis til terminal-vinduet under kommando.

Den endelige stream, “standard error,” nummerert stream 2, er lik standard output i at det tar vanligvis form av data dumpet i terminalvinduet. Men, det er konseptuelt skille fra standard utgang, slik at elvene kan håndteres uavhengig av hverandre hvis det er ønskelig. Dette er nyttig når du har en kommando som opererer på store mengder data i et komplisert, utsatt for feil bruk, og du ikke ønsker at informasjonen og feil produsert for å få dumpet i samme fil.

Som du sikkert har gjettet, omdirigering innebærer å ta disse bekker og omdirigere dem fra sine vanlige destinasjon til en annen. Dette gjøres med “>” og “” etter kommandoen og før navnet på destinasjonen fil (med et mellomrom på hver side).

Med omdirigering, uansett fil er spesifisert etter “>” er skrevet over, så med mindre du er sikker på at du ikke mister noe viktig, det er best å gi et nytt navn, i hvilket tilfelle en fil med det navnet vil bli opprettet. La oss kalle det “date.txt” (den file extension etter den perioden som vanligvis ikke er viktig, men hjelper oss mennesker med organisasjonen). Vår kommando så ser ut som dette:

$ dato > date.txt

Dette er ikke veldig nyttig, men vi kan bygge på det ved å kjøre en annen trinn. La oss si at du prøver å overvåke hvordan rute trafikken tar over Internett endringer fra dag til dag. “Traceroute” – kommandoen vil fortelle oss alle ruter, inkludert infrastrukturelle seg i ryggraden i Internett, at forbindelsen går gjennom fra kilde til destinasjon, sistnevnte er en URL gitt som et argument.

Siden vi allerede har en fil med en dato i det, ville det være praktisk bare å tråkle på data fra våre skanning til slutten av filen (“date.txt”). For å gjøre det, vi bare bruker to ” > ” – tegn ved siden av hverandre (“>>”). Vår nye omdirigering ser ut som dette:

$ traceroute google.com >> date.txt

Nå er alt vi trenger å gjøre er å endre navnet på filen til noe mer beskrivende, ved hjelp av “mv” – kommandoen med sin opprinnelige navn som første argument, og det nye navnet som den andre, som så:

$ mv date.txt trace1.txt

Ved hjelp av en “”, vi kan omdirigere standard input ved å erstatte en fil for det.

La oss si at du har to filer, “list1.txt” og “list2.txt”, som hver inneholder en usortert liste. Mens hver liste inneholder elementer som den andre ikke gjør, det er noen overlapping. Vi kan finne linjer som er i vanlig bruk “komm” – kommandoen, men bare hvis listene er sortert.

Det er en “sort” – kommandoen, men selv om det vil returnere en liste sortert til terminalen, er det ikke permanent sortere listen, som setter oss tilbake til square one. Vi kan lagre sortert versjon av hver liste til sin egen fil med “>” og deretter kjøre “komm”, men denne tilnærmingen ville kreve to kommandoer når vi kunne oppnå det samme med en (og uten leftover filer).

I stedet kan vi bruke “” (siden standard feil er stream 2), noe som etterlater bare standard output tilbake til terminal-vinduet:

$ finn / -navn trådløse 2> denied.txt

Hva hvis du ønsket å lagre gyldige resultater til sin egen fil, uten å rote det feil fil? Siden bekker kan bli omdirigert uavhengig av hverandre, kan vi bare legge til våre standard output omdirigering til slutten av vår kommando som f.eks dette:

$ finn / -navn trådløse 2> denied.txt > found.txt

Legg merke til at den første “>” er nummerert, mens den andre er ikke. Dette er fordi standard output stream er 1 og den “>” redirect forutsetter stream 1 hvis et nummer ikke er gitt.

Til slutt, hvis du ønsket alle data fra denne kommandoen — feil og vellykket finner — avsatt på samme sted, kan du omdirigere både bekker til samme sted ved hjelp av “&>” som følger:

$ finn / -navn trådløs &> results.txt

Dette er bare en enkel skisse av hvordan omadressering i skallet fungerer, men disse byggesteinene er nok til å aktivere uendelige muligheter. Som alt annet på terminalen, skjønt, er den beste måten å få en smak av hva det kan gjøre, er å prøve det ut selv.

Jonathan Terrasi har vært en ECT Nyheter Network spaltist siden 2017. Hans hovedinteresser er datasikkerhet (spesielt med Linux desktop), kryptering og analyse av politikk og aktuelle saker. Han er en full-time freelance forfatter og musiker. Hans bakgrunn inkluderer teknisk kommentarer og analyser i artikler publisert av Chicago Komité for å Forsvare Bill of Rights”.


Date:

by