På vej i den Rigtige (Re)Retning

Hvis du har taget tid til at få hænge af terminal grundlæggende, så er du nok på det punkt, hvor du ønsker at begynde at samle, hvad du har lært. Nogle gange at udstede kommandoer på en gang er nok, men der er tilfælde, hvor det kan være trættende at indtaste kommando efter kommando bare for at udføre en simpel opgave. Dette er, hvor den ekstra symboler på tastaturet kommer i.

For shell, terminal kommando tolk, disse symboler, er ikke spildt nøgler — de er magtfulde aktører, som kan samle oplysninger sammen, deler det ud, og meget mere. En af de enkleste og mest magtfulde shell operationer er omdirigering.

3 Vandløb

For at forstå funktionen af omdirigering, det er vigtigt at vide, hvilke kilder til data i din shell kan omdirigere. I Linux er der tre “strømme” af data. Den første er “standard input,” nummereret af dit system, som stream 0 (da computere tæller fra 0). Det består af information eller instruktioner, der er indgivet til shell for evaluering. De fleste af tid, det kommer fra de brugere, der skriver ting ind i den terminal vindue.

Den anden, “standard output” er nummereret som stream 1. Som du kunne forestille dig, at det er den strøm af data, at shell udgange efter udførelse af en proces, som regel til terminal-vindue under kommando.

Den endelige stream, “standard-fejl” nummereret stream 2, svarer til standard output i, at det generelt tager form af data dumpet i terminal vindue. Det er dog konceptuelt adskilt fra standard output, således at vandløb kan håndteres uafhængigt af hinanden, hvis det ønskes. Dette er nyttigt, når du har en kommando, der opererer på masser af data i et kompliceret, fejlbehæftet drift, og du ikke ønsker, at de data og fejl fremstillet for at få dumpet i den samme fil.

Som du nok har gættet, omlægning indebærer, at tage disse strømme, og omdirigerer dem fra deres sædvanlige destination til en anden. Dette opnås ved hjælp af “>” og “efter” – kommando, og før navnet på destinationsfilen (med et mellemrum på hver side).

Med omdirigering, enhver fil, der er angivet efter “>” er overskrevet, så medmindre du er sikker på, at du ikke mister noget vigtigt, er det bedst at give et nyt navn, i hvilket tilfælde en fil med dette navn bliver oprettet. Lad os kalde det “date.txt” (den file extension efter den periode, der normalt ikke er vigtigt, men hjælper os mennesker med organisation). Vores kommando, så ligner denne:

$ date > date.txt

Dette er ikke særlig hensigtsmæssig, men vi kan bygge videre på det ved at udføre endnu et skridt. Lad os sige, at du forsøger at overvåge, hvordan din rute trafikken tager over Internettet ændrer sig fra dag til dag. “Traceroute” kommando vil fortælle os hver router, herunder de infrastrukturelle dem i rygraden af Internettet, at vores forbindelsen går igennem, fra kilde til destination, hvor sidstnævnte er en URL som argument.

Da vi allerede har en fil med en dato på det, ville det være praktisk blot at hæfte på data fra vores scan til udgangen af denne fil (“date.txt”). For at gøre dette, skal vi blot bruge to “>” tegn ved siden af hinanden (“>>”). Vores nye omdirigering ser ud som dette:

$ traceroute google.com >> date.txt

Nu er alt vi behøver at gøre, er at ændre filnavnet til noget mere beskrivende, ved hjælp af “mv” kommando med det originale navn som første argument og det nye navn som den anden, som så:

$ mv date.txt trace1.txt

Ved hjælp af en “”, vi kan omdirigere standard-input ved at erstatte en fil til det.

Lad os sige, at du har to filer, “list1.txt” og “list2.txt”, der hver indeholder en usorteret liste. Mens hver listen indeholder elementer, som de andre ikke, der er en vis overlapning. Vi kan finde de linjer, der er i fælles hjælp “comm” kommando, men kun hvis listerne er sorteret.

Der er en “slags” kommandoen, men selv om det vil returnere en sorteret liste til den terminal, er det ikke permanent sortere listen, som sætter os tilbage ved square one. Vi kunne spare den sorterede version af hver liste til sin egen fil ved hjælp af “>” og derefter køre “comm”, men denne fremgangsmåde vil kræve to kommandoer, når vi kunne opnå det samme med en (og uden rester filer).

I stedet for kan vi bruge “” (da standard fejl er stream 2), som efterlader kun standard output vendte tilbage til vinduet terminal:

$ find / -name wireless 2> denied.txt

Hvad hvis du ønsker at gemme valide resultater til deres egen fil, uden at fylde fejl-fil? Da vandløb kan blive omdirigeret uafhængigt af hinanden, vi kan blot tilføje vores standard output omdirigering til slutningen af vores kommando som så:

$ find / -name wireless 2> denied.txt > found.txt

Bemærk, at den første “>” er nummererede, mens den anden er ikke. Dette skyldes, at standard output stream 1 og “>” redirect påtager sig stream 1, hvis der ikke er angivet.

Endelig, hvis du ønskede, at alle data fra denne kommando — fejl og vellykket finder — deponeret på samme sted, kan du omdirigere både vandløb til det samme sted ved hjælp af “&>” som følger:

$ find / -name wireless &> results.txt

Dette er blot en grundlæggende beskrivelse af, hvordan omdirigering i shell arbejder, men disse byggesten er nok til at give uendelige muligheder. Som alt andet på terminalen, men den bedste måde at få en smagsprøve på, hvad det kan gøre, er at prøve det selv.

Jonathan Terrasi har været en ECT News Network klummeskribent, da 2017. Hans største interesser er computer security (især med Linux desktop), kryptering og analyse af politik og aktuelle anliggender. Han er en fuldtids freelance forfatter og musiker. Hans baggrund omfatter levering af tekniske kommentarer og analyser i artikler, der er offentliggjort af Chicago Udvalg til at Forsvare den “Bill of Rights”.


Date:

by