Hvis du er en Linux-kommandolinjebruker, vil du være enig i at det er tider når du ikke vil ha bestemte kommandoer du kjører for å bli registrert i kommandolinjens historie. Det kan være mange grunner til dette. Du har for eksempel en bestemt posisjon i firmaet ditt, og du har noen privilegier at du ikke vil at andre skal misbruke. Eller det er noen kritiske kommandoer som du ikke vil løpe ved et uhell mens du surfer på historikklisten.

Men er det en måte å kontrollere hva som går inn i historielisten, og hva gjør det ikke? Eller, med andre ord, kan vi slå på en nettleserlignende inkognitomodus i Linux-kommandolinjen? Svaret er ja, og det er mange måter å oppnå dette, avhengig av hva du vil. I denne artikkelen vil vi diskutere noen av de populære løsningene som er tilgjengelige.

Merk : alle kommandoene som presenteres i denne artikkelen, er testet på Ubuntu.

Ulike måter tilgjengelig

De to første måtene vi beskriver her er allerede dekket i en av våre tidligere artikler. Hvis du allerede er klar over dem, kan du hoppe over disse. Men hvis du ikke er klar, anbefales du å gå gjennom dem nøye.

1. Sett inn plass før kommando

Ja, du leser det riktig. Sett inn et mellomrom i begynnelsen av en kommando, og det vil bli ignorert av skallet, noe som betyr at kommandoen ikke blir registrert i historien. Det er imidlertid en avhengighet - løsningen vil bare fungere hvis HISTCONTROL miljøvariabelen er satt til "ignorespace" eller "ignoreboth", som i de fleste tilfeller er standard.

Så, en kommando som følgende:

 [plass] ekko "dette er en hemmelig" 

Vises ikke i historikken hvis du allerede har gjort denne kommandoen:

 eksporter HISTCONTROL = ignorespace 

Skjermdumpet nedenfor er et eksempel på denne oppførselen.

Den fjerde "ekko" kommandoen ble ikke registrert i historien som den ble kjørt med et mellomrom i begynnelsen.

2. Deaktiver hele historikken for den nåværende økten

Hvis du vil deaktivere hele historien for en økt, kan du enkelt gjøre det ved å deaktivere HISTSIZE-miljøvariabelen før du starter med kommandolinjearbeidet. For å deaktivere variabelen, kjør følgende kommando:

 eksporter HISTFILE = 0 

HISTFILE er antall linjer (eller kommandoer) som kan lagres i historikklisten for en pågående bash-økt. Som standard har denne variabelen en satt verdi - for eksempel 1000 i mitt tilfelle.

Så vil kommandoen nevnt ovenfor sette miljøvariabelenes verdi til null, og derfor vil ingenting bli lagret i historikklisten før du lukker terminalen. Husk at du heller ikke kan se de tidligere kjørte kommandoene ved å trykke på pil opp-tasten eller kjører history kommandoen.

3. Slett hele historien når du er ferdig

Dette kan ses som et alternativ til løsningen nevnt i forrige avsnitt. Den eneste forskjellen er at i dette tilfellet kjører du en kommando etter at du er ferdig med alt arbeidet ditt. Thh følgende er kommandoen i spørsmålet:

 historie -cw 

Som allerede nevnt vil dette ha samme effekt som HISTFILE-løsningen nevnt ovenfor.

4. Slå av historikk bare for arbeidet du gjør

Mens løsningene (2 og 3) som er beskrevet ovenfor gjør tricket, sletter de hele historien, noe som kan være uønsket i mange situasjoner. Det kan være tilfeller der du vil beholde historikklisten til det punktet du starter kommandolinjearbeidet ditt. For situasjoner som disse må du kjøre følgende kommando før du begynner med arbeidet ditt:

 [rom] sett + o historie 

Merk : [mellomrom] representerer et tomt mellomrom.

Kommandoen ovenfor vil deaktivere historien midlertidig, noe som betyr hva du gjør etter at denne kommandoen ikke blir registrert i historien, selv om alle ting som er utført før kommandoen ovenfor, vil være der som det er i historikklisten.

For å gjenopprette historikken, kjør følgende kommando:

 [Space] set -o historie 

Dette bringer ting tilbake til det normale igjen, noe som betyr at en kommandolinje som er utført etter at kommandoen ovenfor kommer opp i historien.

5. Slett spesifikke kommandoer fra historien

Anta at historikklisten allerede inneholder noen kommandoer som du ikke vil spille inn. Hva kan i dette tilfellet gjøres? Det er enkelt. Du kan gå videre og fjerne dem. Følgende er hvordan du oppnår dette:

 [rom] historie | grep "del av kommandoen du vil fjerne" 

Kommandoen ovenfor vil sende en liste over matchende kommandoer (som er der i historikklisten) med et tall [num] foran hver av dem.

Når du har identifisert kommandoen du vil fjerne, bare kjør følgende kommando for å fjerne den aktuelle oppføringen fra historikklisten:

 historie -d [num] 

Følgende skjermbilde er et eksempel på dette.

Den andre ekko-kommandoen ble fjernet med hell.

Alternativt kan du bare trykke på pil opp-tasten for å gå en tur tilbake i historikklisten, og når kommandoen av interesse vises på terminalen, trykker du bare på "Ctrl + U" for å helt tømme linjen, og effektivt fjerne den fra liste.

Konklusjon

Det er flere måter du kan manipulere Linux-kommandolinjens historie til dine behov. Vær imidlertid oppmerksom på at det vanligvis ikke er en god praksis å skjule eller fjerne en kommando fra historien, selv om det heller ikke er feil i seg selv, men du bør være klar over hva du gjør og hvilke effekter det kan ha.