Rubrik i den Rätta (Re)Riktning

Om du har tagit tid att få kläm på terminalen grunderna, du är förmodligen på den punkt där du vill börja att sätta ihop till vad du lärt dig. Ibland utfärdar kommandon ett i taget är tillräckligt, men det finns fall då det kan vara jobbigt att ange kommandot efter kommandot bara att utföra en enkel uppgift. Det är där den extra symboler på tangentbordet kommer in.

För skal -, terminal-kommando tolk, dessa symboler är inte slösas bort nycklar-de är kraftfulla aktörer som kan länka information tillsammans, dela isär, och mycket mer. Ett av de enklaste och mest kraftfulla skal verksamhet är omdirigering.

3 Strömmar

För att förstå hur omdirigering, det är viktigt att veta vilka källor av data ditt skal kan dirigera. I Linux finns det tre olika “strömmar” av data. Den första är “standard input,” numrerade från ditt system som ström 0 (eftersom datorer räkna från 0). Det består av information eller anvisningar som lämnats in till shell för utvärdering. De flesta av tiden, detta kommer från användaren skriva in saker i terminalfönstret.

Den andra, “standard output,” är numrerade som stream 1. Som du kan tänka, det är den ström av data som skal utgångar efter att ha utfört vissa processen, oftast till terminal-fönstret under kommando.

Den slutliga ström, “standard fel” numrerade ström 2, är liknande till standard ut i att det i allmänhet sker i form av data dumpad i terminal fönstret. Men det är konceptuellt åtskilda från standard output, så att strömmar kan hanteras självständigt om så önskas. Detta är användbart när du har ett kommando som är verksamma på massor av data i ett komplicerat, tidskrävande operation, och du inte vill att de uppgifter och fel som produceras för att bli dumpad i samma fil.

Som ni säkert har gissat, omdirigering innebär att man tar dessa strömmar och transportera dem från deras vanliga destination till en annan. Detta sker med hjälp av “>” och ” efter kommandot och före namnet på målfilen (med ett utrymme på vardera sidan).

Med omdirigering, oavsett fil är angiven efter “- > ” är över, så om du är säker på att du kommer inte att förlora någonting viktigt, det är bäst att ge ett nytt namn, i vilket fall en fil med det namn som kommer att skapas. Låt oss kalla det “date.txt” (file extension efter den period som vanligtvis inte är viktigt, men det hjälper oss människor med organisation). Vårt kommando då ser ut så här:

$ date > date.txt

Detta är inte särskilt användbart, men vi kan bygga vidare på det genom att köra ytterligare ett steg. Låt oss säga att du försöker att övervaka hur rutten din trafik går över Internet ändras från dag till dag. “Traceroute” – kommandot kommer att berätta för oss varje router, inklusive infrastruktur och kära i ryggraden av Internet, att vår anslutning går från källa till destination, den sistnämnda är en URL anges som ett argument.

Eftersom vi redan har en fil med ett datum på det, det skulle vara praktiskt, bara att slå på data från vår skanna till slutet av filen (“date.txt”). För att lyckas med det måste vi helt enkelt använda två ” > ” – tecken bredvid varandra (“>>”). Vår nya omdirigering ser ut så här:

$ traceroute google.com >> date.txt

Nu är allt vi behöver göra är att ändra namn på filen till något mer beskrivande, med hjälp av “mv” kommando med dess ursprungliga namn som det första argumentet och det nya namnet som det andra, så här:

$ mv date.txt trace1.txt

Genom att använda “”, vi kan omdirigera standard input genom att ersätta en fil för det.

Låt oss säga att du har två filer “list1.txt” och “list2.txt”, som vart och ett innehåller en osorterad lista. Medan varje lista innehåller artiklar som den andra inte, det finns en viss överlappning. Vi kan hitta de linjer som är i gemensam användning “comm” – kommandot, men bara om listan är sorterad.

Det finns en “typ” – kommandot, men även om det kommer tillbaka en sorterad lista till terminalen, det kommer inte permanent sortera listan, vilket gör att vi är tillbaka på ruta ett. Vi skulle kunna spara en sorterad version av varje lista till sin egen fil med “>” och sedan köra “comm”, men denna metod skulle kräva två kommandon när vi kan åstadkomma samma sak med (och utan överblivna filer).

Istället kan vi använda “de” (eftersom standardavvikelsen är ström 2), vilket innebär att bara standard output tillbaka till terminal-fönstret:

$ find / -name trådlöst 2> denied.txt

Vad händer om du ville spara giltiga resultat till sin egen fil, utan att belamra fel fil? Sedan strömmar kan styras oberoende av varandra, vi kan bara lägga till vår standard output omdirigering till slutet av vår kommandot så här:

$ find / -name trådlöst 2> denied.txt > found.txt

Observera att den första “>” är numrerade medan den andra inte är det. Detta beror på standard output är ström 1 och “>” omdirigera tar ström 1 om ingen siffra anges.

Slutligen, om du ville ha alla uppgifter från detta kommando — fel och framgångsrik finner — deponeras på samma ställe, kan du omdirigera både strömmar till samma ställe med hjälp av “&>” följande:

$ find / -name trådlöst &> results.txt

Detta är bara en grundläggande beskrivning av hur omdirigering i skalet fungerar, men dessa byggstenar är tillräckligt för att aktivera oändliga möjligheter. Som allt annat på terminalen, men det bästa sättet att få en smak av vad det kan göra är att försöka göra det själv.

Jonathan Terrasi har varit en ECT News Network krönikör eftersom 2017. Hans huvudsakliga intressen är dator säkerhet (framför allt med Linux på skrivbordet), kryptering och analys av politik och aktuella frågor. Han är en heltid frilansande författare och musiker. Hans bakgrund innefattar tillhandahållande av tekniska kommentarer och analyser i de artiklar som publiceras av Chicago Kommitté för att Försvara Bill of Rights.


Date:

by