Hvis du er en Linux-kommandolinjebruger, accepterer du, at der er tidspunkter, hvor du ikke vil have bestemte kommandoer, du kører for at blive optaget i kommandolinjens historie. Der kunne være mange grunde til dette. For eksempel er du i en bestemt position i din virksomhed, og du har nogle privilegier, som du ikke vil have, at andre misbruger. Eller der er nogle kritiske kommandoer, som du ikke vil løbe ved et uheld, mens du browser på historiklisten.

Men er der en måde at kontrollere, hvad der går ind i historielisten, og hvad gør det ikke? Eller med andre ord kan vi tænde en webbrowser-lignende inkognitomodus i Linux-kommandolinjen? Svaret er ja, og der er mange måder at opnå dette på, afhængigt af hvad du vil have. I denne artikel vil vi diskutere nogle af de tilgængelige tilgængelige løsninger.

Bemærk : Alle kommandoer, der præsenteres i denne artikel, er blevet testet på Ubuntu.

Forskellige måder til rådighed

De to første måder, vi beskriver her, er allerede dækket af en af ​​vores tidligere artikler. Hvis du allerede er opmærksom på dem, kan du springe over disse. Men hvis du ikke er klar over det, anbefales du at gennemgå dem omhyggeligt.

1. Indsæt plads før kommando

Ja, du læste det korrekt. Indsæt et mellemrum i starten af ​​en kommando, og det vil blive ignoreret af skallen, hvilket betyder, at kommandoen ikke bliver optaget i historien. Der er dog en afhængighed - den nævnte løsning virker kun, hvis HISTCONTROL miljøvariablen er sat til "ignorespace" eller "ignoreboth", som i de fleste tilfælde er som standard.

Så en kommando som følgende:

 [plads] ekko "dette er en tophemmelighed" 

Vises ikke i historien, hvis du allerede har gjort denne kommando:

 eksport HISTCONTROL = ignorespace 

Nedenstående skærmbillede er et eksempel på denne adfærd.

Den fjerde "echo" kommando blev ikke optaget i historien, da den blev kørt med et mellemrum i starten.

2. Deaktiver hele historikken for den aktuelle session

Hvis du vil deaktivere hele historikken til en session, kan du nemt gøre det ved at afbryde HISTSIZE-miljøvariablen, før du starter med dit kommandolinjearbejde. For at ophæve variablen køre følgende kommando:

 eksport HISTFILE = 0 

HISTFILE er antallet af linjer (eller kommandoer), der kan gemmes i historiklisten for en igangværende bash-session. Som standard har denne variabel en indstillet værdi - for eksempel 1000 i mit tilfælde.

Så den kommando, der er nævnt ovenfor, vil indstille miljøvariabelens værdi til nul, og der vil derfor ikke blive gemt noget i historiklisten, før du lukker terminalen. Husk, at du heller ikke vil kunne se de tidligere kørende kommandoer ved at trykke på pil op eller køre history kommandoen.

3. Slet hele historikken, når du er færdig

Dette kan ses som et alternativ til løsningen nævnt i foregående afsnit. Den eneste forskel er, at i dette tilfælde løber du en kommando, efter du er færdig med alt dit arbejde. Herefter følger kommandoen:

 historie -cw 

Som allerede nævnt vil dette have samme virkning som ovenstående HISTFILE-løsning.

4. Sluk kun historien for det arbejde, du laver

Mens løsningerne (2 og 3), der er beskrevet ovenfor, gør tricket, sletter de hele historien, noget der kan være uønsket i mange situationer. Der kan være tilfælde, hvor du vil beholde historielisten indtil det punkt du starter din kommandolinjearbejde. I situationer som disse skal du køre følgende kommando inden du begynder med dit arbejde:

 [space] set + o history 

Bemærk : [plads] repræsenterer et tomt mellemrum.

Ovennævnte kommando vil deaktivere historien midlertidigt, hvilket betyder hvad du gør efter at have kørt denne kommando, vil ikke blive optaget i historien, selv om alle de ting, der udføres før den ovennævnte kommando, vil være der som i historiklisten.

For at genaktivere historikken skal du køre følgende kommando:

 [Space] set -o historie 

Dette bringer tingene tilbage til normal igen, hvilket betyder, at et kommandolinjearbejde udføres, efter at ovennævnte kommando vil dukke op i historien.

5. Slet specifikke kommandoer fra historien

Antag nu, at historiklisten allerede indeholder nogle kommandoer, som du ikke ønskede at blive optaget af. Hvad kan der gøres i dette tilfælde? Det er simpelt. Du kan gå videre og fjerne dem. Det følgende er, hvordan man opnår dette:

 [rum] historie | grep "del af kommandoen du vil fjerne" 

Ovennævnte kommando udsender en liste over matchende kommandoer (der er der i historielisten) med et tal [num] forud for hver af dem.

Når du har identificeret den kommando, du vil fjerne, skal du bare køre følgende kommando for at fjerne den pågældende post fra historiklisten:

 historie -d [num] 

Følgende skærmbillede er et eksempel på dette.

Den anden 'echo'-kommando blev fjernet med succes.

Alternativt kan du bare trykke på pil op for at gå en tur tilbage i historiklisten, og når kommandoen af ​​din interesse vises på terminalen, skal du blot trykke på "Ctrl + U" for at helt blanke linjen og effektivt fjerne den fra liste.

Konklusion

Der er flere måder, hvorpå du kan manipulere Linux-kommandolinjens historie, så de passer til dine behov. Husk dog, at det normalt ikke er en god praksis at skjule eller fjerne en kommando fra historien, selvom det heller ikke er forkert i sig selv, men du bør være opmærksom på, hvad du laver og hvilke virkninger det kan have.