Als u een Linux-opdrachtregelgebruiker bent, gaat u ermee akkoord dat het soms voorkomt dat bepaalde opdrachten die u uitvoert, worden opgenomen in de opdrachtregelhistorie. Daar kunnen veel redenen voor zijn. U bevindt zich bijvoorbeeld op een bepaalde positie in uw bedrijf en u hebt bepaalde rechten die u niet wilt dat anderen misbruik maken. Of er zijn enkele kritieke opdrachten die u niet per ongeluk wilt uitvoeren terwijl u door de geschiedenislijst bladert.

Maar is er een manier om te controleren wat er in de geschiedenislijst gaat en wat niet? Of, met andere woorden, kunnen we een webbrowser-achtige incognitomodus in de Linux-opdrachtregel inschakelen? Het antwoord is ja, en er zijn veel manieren om dit te bereiken, afhankelijk van wat je precies wilt. In dit artikel bespreken we enkele populaire oplossingen die beschikbaar zijn.

Opmerking : alle opdrachten in dit artikel zijn getest op Ubuntu.

Verschillende manieren beschikbaar

De eerste twee manieren die we hier zullen beschrijven, zijn al behandeld in een van onze vorige artikelen. Als u al bekend bent, kunt u deze overslaan. Als u zich echter niet bewust bent, wordt u geadviseerd deze zorgvuldig door te nemen.

1. Plaats spatie voor opdracht

Ja, je leest het goed. Voeg een spatie toe aan het begin van een opdracht en deze wordt genegeerd door de shell, wat betekent dat de opdracht niet in de geschiedenis zal worden opgenomen. Er is echter een afhankelijkheid - de genoemde oplossing werkt alleen als de omgevingsvariabele HISTCONTROL is ingesteld op "ignorespace" of "ignoreboth", wat in de meeste gevallen standaard is.

Dus een commando zoals het volgende:

 [spatie] echo "dit is een topgeheim" 

Wordt niet in de geschiedenis weergegeven als u deze opdracht al hebt uitgevoerd:

 HISTCONTROL exporteren = ignorespace 

De screenshot hieronder is een voorbeeld van dit gedrag.

Het vierde "echo" -commando werd niet opgenomen in de geschiedenis omdat het in het begin met een spatie werd uitgevoerd.

2. Schakel de volledige geschiedenis voor de huidige sessie uit

Als u de hele geschiedenis van een sessie wilt uitschakelen, kunt u dat eenvoudig doen door de HISTSIZE-omgevingsvariabele uit te schakelen voordat u begint met uw opdrachtregel. Om de variabele uit te schakelen, voert u de volgende opdracht uit:

 HISTFILE exporteren = 0 

HISTFILE is het aantal regels (of opdrachten) dat kan worden opgeslagen in de geschiedenislijst voor een lopende bash-sessie. Standaard heeft deze variabele een ingestelde waarde, bijvoorbeeld 1000 in mijn geval.

Dus de hierboven genoemde opdracht zal de waarde van de omgevingsvariabele op nul zetten en bijgevolg zal er niets in de geschiedenislijst worden opgeslagen totdat u de terminal sluit. Houd er rekening mee dat u de eerder uitgevoerde opdrachten ook niet kunt zien door op de pijltoets omhoog te drukken of door de opdracht history voeren.

3. Wis de volledige geschiedenis nadat u klaar bent

Dit kan worden gezien als een alternatief voor de oplossing die in de vorige paragraaf werd genoemd. Het enige verschil is dat u in dit geval een opdracht uitvoert NADAT u klaar bent met al uw werk. Het volgende commando is het volgende:

 geschiedenis -cw 

Zoals eerder vermeld, heeft dit hetzelfde effect als de hierboven genoemde HISTFILE-oplossing.

4. Schakel de geschiedenis alleen uit voor het werk dat u doet

Terwijl de hierboven beschreven oplossingen (2 en 3) de slag slaan, wissen ze de hele geschiedenis, iets dat in veel situaties ongewenst zou kunnen zijn. Er kunnen zich gevallen voordoen waarin u de geschiedenislijst wilt behouden tot het punt waarop u uw opdrachtregel start. Voor situaties zoals deze moet je de volgende opdracht uitvoeren voordat je met je werk begint:

 [spatie] set + o geschiedenis 

Opmerking : [spatie] vertegenwoordigt een lege ruimte.

Het bovenstaande commando zal de geschiedenis tijdelijk uitschakelen, wat betekent dat wat je ook doet na het uitvoeren van dit commando niet in de geschiedenis zal worden opgenomen, hoewel alle dingen die voorafgaand aan het bovenstaande commando zijn uitgevoerd, er zijn zoals het in de geschiedenislijst staat.

Voer de volgende opdracht uit om de geschiedenis opnieuw in te schakelen:

 [Spatie] set -o geschiedenis 

Hierdoor worden de zaken weer normaal, wat betekent dat elk opdrachtregelwerk dat wordt uitgevoerd nadat het bovenstaande commando in de geschiedenis zal verschijnen.

5. Verwijder specifieke opdrachten uit de geschiedenis

Stel nu dat de geschiedenislijst al enkele opdrachten bevat die u niet wilde opnemen. Wat kan in dit geval worden gedaan? Het is makkelijk. Je kunt doorgaan en ze verwijderen. Het volgende is hoe dit te bereiken:

 [spatie] geschiedenis | grep "deel van het commando dat u wilt verwijderen" 

De opdracht hierboven geeft een lijst met overeenkomende opdrachten (die zich in de geschiedenislijst bevinden) met een nummer [num] dat aan elk van hen voorafgaat.

Zodra u de opdracht die u wilt verwijderen hebt geïdentificeerd, voert u de volgende opdracht uit om die specifieke vermelding uit de geschiedenislijst te verwijderen:

 geschiedenis -d [num] 

De volgende schermafbeelding is hiervan een voorbeeld.

De tweede opdracht 'echo' is met succes verwijderd.

U kunt ook op de pijl-omhoogtoets drukken om terug te lopen door de geschiedenislijst en zodra de opdracht van uw interesse op de terminal verschijnt, drukt u gewoon op "Ctrl + U" om de regel helemaal leeg te maken, waardoor u deze effectief uit de lijst verwijdert. lijst.

Conclusie

Er zijn meerdere manieren waarop u de Linux-opdrachtregelhistorie kunt aanpassen aan uw behoeften. Houd er echter rekening mee dat het meestal geen goede gewoonte is om een ​​opdracht uit de geschiedenis te verbergen of te verwijderen, maar het is ook niet per se verkeerd, maar je moet je bewust zijn van wat je doet en welke effecten het kan hebben.