Linux-kommandoer

Bash Tac Command

Bash Tac Command
Tac er en av de kommandoene du ikke vet før du allerede har gått og gjort det, gjenoppfunnet hjulet, noe som ikke er uvanlig i programmeringspraksisen om du bare lærer tauene eller er en profesjonell med mange års erfaring å skryte, du er fantastisk. Hvis hendene er rene, så bra for deg; Uansett, du er ute etter en godbit, jeg skal laste ned alt jeg vet om tac-kommandoen og mer. Les videre.

Også kjent som reverse cat, tac et enkelt kommandolinjeverktøy som lar deg reversere linjer i utdata ved hjelp av | innebygd røroperatør og tac. Det vil si at hvis du har en kommando på venstre side (lhs), og vil reversere innholdet i utdataene, er alt du vil gjøre å skrive lhs | tac. Det er det!

Riktignok er det mer å tac enn det som ser ut. Ikke bekymre deg. Vi vil dekke alt i god tid.

Råd om tac

Å bruke eller ikke å bruke, det er spørsmålet. Du vil ikke at du ikke vil tacke når du ikke trenger å. Men hvis du vil spre tac som brød- og smørkommandoen din, er det opp til deg. I mellomtiden er her mitt råd om å ta begge sider for å forbli nøytrale.

Når skal du bruke tac

Det er tider når du skal bruke tac som hjelper deg med å få mer ut av kommandolinjen med mindre kode og tid brukt på å undersøke lhs kommandoalternativer.

Når du ikke er sikker på alternativene til lhs

Mange kommandoer som sort kommer med et alternativ for å reversere utdataene til en kommando. Men hvis du ikke er sikker på om en kommando på venstre side har et -r-alternativ for å reversere utdata, er bruk av tac en sikker måte å reversere utgangslinjene.

Når ytelse ikke betyr noe

Selv om det er ubetydelig, fungerer de fleste kommandoer som brukes i forbindelse med et innebygd alternativ for å reversere utdata, bedre enn å føre utgangen til tac. Så hvis litt ytelsesforsinkelse ikke er noe problem, er det greit å røre i tac for å spille av utgang i omvendt retning.

Når ikke å bruke tac

Det er tider når du kanskje ikke bruker tac fordi du vet bedre. Her er noen å merke seg.

Når du vet, har kommandoen på lhs muligheten til å reversere utgangslinjene

Som jeg sa, “De fleste kommandoer har et alternativ for å reversere utdata.”Hvis du vet at en bestemt lhs-kommando har et alternativ, kan du ikke bruke tac. Tross alt er -r kortere enn - | tac.

Når ytelse betyr noe

Som jeg sa, “Å bruke alternativet omvendt kan utføre bedre enn tac.”Hvis du ønsker å presse ut noen sekunder i et bash-skript eller har å gjøre med større filer som krever tid til å lese, kan du ikke bruke tac.

Tac-hjelp

Å kjøre hjelpekommandoen for tac eller man tac viser bruken sammen med alternativer som kan brukes. Her er hva du kan forvente.

Kommandoer

tac --hjelp

Produksjon

Tac-versjon

Hvilken versjon er jeg?
Du er den siste versjonen av deg selv. Imidlertid, i tilfelle hvilken versjon din tac er, er det et alternativ for det.

Kommandoer

tac - versjon

Produksjon

Merknader

Hvis du bruker tac på FreeBSD eller macOS, er det mulig at det lange alternativet for versjon ikke er tilgjengelig. I så fall kan du prøve -v eller man tac. Gi meg beskjed hvis du har prøvd det. jeg er nysgjerrig. Takk

Tac-alternativer

Foruten hjelp og versjon, har tac ikke mange alternativer. For hva den har, er du sikker på å finne ut at tac ikke er hvilken som helst gammel omvendt katt.

Tac før alternativet

Alternativet -b lar deg endre hvordan separatoren er festet i utdataene. Som standard er den nye linjeseparatoren festet etter hver linje.

Jeg vet at det er forvirrende. La oss bryte det ned med et eksempel.

La oss først se hva produksjonen vår ser ut før vi bruker tac -b.

Kommandoer

seq 10

Produksjon

La oss nå se hva produksjonen vår blir til etter å ha brukt tac uten -b.

Kommandoer

seq 10 | tac

Produksjon

La oss nå se hva produksjonen blir til ved å bruke tac -b.

Kommandoer

seq 10 | tac -b

Produksjon

Tac separator alternativ

Separatoralternativet -s 'bokstavelig streng' lar deg spesifisere tegnet eller sekvensen av tegn som brukes av tac for å skille linjene fra hverandre. Som standard brukes newline-tegnet ('0a' i hex).

Hvordan du bruker tac-separatoralternativet, er ikke åpenbart i begynnelsen. Når du først vet at den er der, er det vanskelig å ikke prøve å bruke den.

Tenk på følgende eksempel, som fungerer på linjer representert i hex.

Kommandoer

seq 20 | xxd -ps | tac -s '0a' | xxd -ps -r

Produksjon

Merknader

(1) Det kan virke trivielt som å bruke sekvens 20 | tac-kommandoen, i så fall brukte vi ikke tid på å jobbe med utgangsstrømmen i hex. Å bruke dette mønsteret er nyttig når det separate ikke er noe trivielt som den nye linjekarakteren, for eksempel nullbyte.

Nå mindre prøve å bruke tac på noe litt mindre rå og mer meta som enkel HTML.

Vurder følgende fil.

Fil

EN
B
C

Kommandoer

fil () ekko -e "A
B
C
";
fil | tac -s "
"

Produksjon

Vi klarte å konvertere HTML-siden

EN
B
C

inn i

C
B
EN

bruker tac.

Anta at du trenger å gjøre noe litt mer komplisert, som å behandle en hvilken som helst tag som en tac-separator. I så fall kommer du ikke til å slippe unna med bare å bruke separatoralternativet alene. Det er der regex-alternativet kommer inn. Kombinert med separatoralternativet, lar det deg gjøre mer med tac-kommandoen enn å reversere en linje i en fil. Dette er hvordan.

Tac regex-alternativ

Regex-alternativet -r -s 'regex' lar deg spesifisere at skillestrengen skal behandles som et vanlig uttrykk.

Hvordan bruke tac regex-alternativet er så enkelt som å legge til -r-alternativet før eller etter skilletegn.

Tenk på det forrige eksemplet ved å bruke regex-alternativet sammen med separatoralternativet. La oss tac behandle en hvilken som helst markeringskode som en skilletegn.

Fil



enkle funksjoner


Funksjonene er enkle i bash. I det minste er det denne. Det setter en streng på skjermen.


Kommandoer


enkel-funksjon
()
ekko
så enkelt som det blir enkel-funksjon

Kilde: https: // temptemp3.github.io / bash-funksjoner

Kommandoer

fil ()

ekko '



enkle funksjoner

Funksjonene er enkle i bash. I det minste er denne. Det setter en
streng på skjermen.

Kommandoer



enkel-funksjon

(
)

ekko så enkelt som det blir

enkel-funksjon
'

fil | tac -r -s "] *."

Produksjon

Vi klarte å konvertere HTML-siden ved å reversere filen ved hjelp av HTML-koder. Hvis du ser på detaljene, vil du legge merke til at det ikke er perfekt ennå.

Tac-kommando i ren bash

Her er en primitiv versjon av tac-implement i ren bash som reverserer linjene som ledes inn av en lhs-kommando. Fremtidige versjoner er igjen som en øvelse.

#!/ bin / bash
## tac
## versjon 0.0.1 - innledende
##################################################################
tac ()
lokal -a arr
lokal -i i
kartfil arr -
i = "$ # arr [@]"
mens [$ i -ge 0]
gjøre
ekko $ arr [i]
la i- = 1
ferdig

##################################################################
tac
##################################################################

Kilde: https: // github.com / temptemp3 / ba.sh / blob / master / tac.sh

Tac-kommando ved hjelp av andre kommandoer

Her er noen primitive versjoner av tac-implementering ved hjelp av andre kommandoer som reverserer linjene som ledes inn av en lhs-kommando. Fremtidige versjoner er igjen som en øvelse.

Før vi begynner, lukk øynene og tenk: “Hva kan brukes til å implementere en primitiv versjon av tac?”
Mange kommandoer kommer til å tenke, men jeg vil fokusere på de vi har plass til.

gawk

I likhet med Tac-kommandoen i rent bash-eksempel, for å implementere tac, lagrer vi først leselinjene som skal spilles omvendt etter at alle linjene er lest. Slik ser det ut med gawk.

 gawk 'line [++ line [0]] = $ (0) END for (i = 0; i

Prøv nå å bruke på lhs-kommandoen seq 10.

 seq 10 | gawk 'line [++ line [0]] = $ (0) END for (i = 0; i

Som du forventer er produksjonen

Øvelser

1. Funksjonen lhs () seq 10; viser heltallene 1 til 10. Skriv ut en rhs-kommando slik at lhs | rhs tilsvarer 10864213579 bare ved å bruke tac (hint: se Tac før alternativeksempel)
2. Omvendt utdata fra rhs () finn -mindepth 1 -maxdepth 1 -print0; ved hjelp av tac (hint: se eksempel på Tac-separatoralternativ)
3. Forleng tac.sh (i Tac-kommandoen i ren bash) for å oppføre seg akkurat som tac. Du må legge til alternativer og sørge for å teste deres oppførsel.
4. Implementere en primitiv versjon av tac i ren bash som en rekursiv funksjon.

TL; DR

Igjen likte jeg å skrive Bash tac-kommandoen. Etter å ha lest håper jeg at du kan være enig i at det er mer å takle enn du trodde. Også, etter å ha prøvd å gjøre ting på den harde måten nær bunnen, håper jeg at du vet hvor nyttig tac-kommandoen kan være. Hvis noen klarer å fullføre noen av øvelsene eller trenger hjelp med leksene, gi meg beskjed. Takk,

Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...
Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...
Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...