Om du är en Linux-kommandoradsanvändare, håller du med om att det finns tillfällen då du inte vill ha vissa kommandon som du kör för att spelas in i kommandoradshistoriken. Det kan finnas många orsaker till detta. Du har till exempel en viss position i ditt företag, och du har några privilegier att du inte vill att andra ska missbruka. Eller det finns några kritiska kommandon som du inte vill springa av misstag medan du bläddrar i historiklistan.

Men finns det ett sätt att kontrollera vad som går in i historiklistan och vad gör det inte? Eller, med andra ord, kan vi aktivera ett webbläsare-liknande incognito-läge i Linux-kommandoraden? Svaret är ja, och det finns många sätt att uppnå detta, beroende på vad du vill ha. I den här artikeln kommer vi att diskutera några av de populära lösningarna som finns tillgängliga.

Obs! Alla kommandon som presenteras i denna artikel har testats på Ubuntu.

Olika sätt tillgängliga

De två första sätten vi beskriver här har redan blivit täckta i en av våra tidigare artiklar. Om du redan är medveten om dem kan du hoppa över dessa. Men om du inte är medveten, rekommenderas du att gå igenom dem noggrant.

1. Sätt in mellanslag före kommando

Ja, du läste det korrekt. Infoga ett mellanslag i början av ett kommando, och det kommer att ignoreras av skalet, vilket innebär att kommandot inte kommer att spelas in i historiken. Det finns dock ett beroende - den här lösningen fungerar bara om HISTCONTROL-miljövariabeln är inställd på "ignorespace" eller "ignoreboth", som i de flesta fall är standard.

Så ett kommando som följande:

 [space] echo "detta är en topphemlig" 

Kommer inte att visas i historiken om du redan har gjort det här kommandot:

 exportera HISTCONTROL = ignorespace 

Nedanstående skärmdump är ett exempel på detta beteende.

Det fjärde "echo" -kommandot noterades inte i historien eftersom det kördes med ett utrymme i början.

2. Inaktivera hela historiken för den aktuella sessionen

Om du vill inaktivera hela historiken för en session kan du enkelt göra det genom att avbryta miljövariabeln HISTSIZE innan du börjar med ditt kommandoradsarbete. För att avaktivera variabeln, kör följande kommando:

 export HISTFILE = 0 

HISTFILE är antalet rader (eller kommandon) som kan lagras i historiklistan för en pågående bash-session. Som standard har denna variabel ett inställt värde - till exempel 1000 i mitt fall.

Så kommer kommandot som nämns ovan att ställa in miljövariabelns värde till noll och följaktligen lagras inget i historiklistan tills du stänger terminalen. Tänk på att du inte heller kan se tidigare körningskommandon genom att trycka på uppåtpilen eller köra history .

3. Radera hela historiken när du är klar

Detta kan ses som ett alternativ till lösningen som nämns i föregående avsnitt. Den enda skillnaden är att i det här fallet kör du ett kommando efter att du är klar med allt ditt arbete. Thh följande är kommandot i fråga:

 historia -cw 

Som redan nämnts kommer detta att ha samma effekt som ovanstående HISTFILE-lösning.

4. Stäng av historiken endast för det arbete du gör

Medan lösningarna (2 och 3) som beskrivs ovan gör tricket, raderar de hela historien, något som kan vara oönskat i många situationer. Det kan finnas fall där du vill behålla historiklistan fram till den punkt du startar på kommandoradsarbetet. För situationer som dessa måste du köra följande kommando innan du börjar med ditt arbete:

 [space] set + o history 

Obs! [Space] representerar ett tomt utrymme.

Ovanstående kommando kommer att inaktivera historiken tillfälligt, vilket betyder vad du än gör efter att ha kört detta kommando kommer inte att spelas in i historiken, även om alla saker som körs före ovanstående kommando kommer att finnas där som det finns i historiklistan.

För att aktivera historiken, kör följande kommando:

 [Space] set -o historia 

Detta ger saker tillbaka till vanligt igen, vilket innebär att kommandoradsarbete som utförts efter det att kommandot ovan kommer att dyka upp i historien.

5. Ta bort specifika kommandon från historiken

Antag nu att historiklistan redan innehåller några kommandon som du inte vill spela in. Vad kan man göra i detta fall? Det är enkelt. Du kan gå vidare och ta bort dem. Följande är hur man åstadkommer detta:

 [space] historia | grep "del av kommandot du vill ta bort" 

Kommandot ovan kommer att mata ut en lista över matchande kommandon (som finns i historiklistan) med ett nummer [num] före varje av dem.

När du har identifierat det kommando du vill ta bort, kör bara följande kommando för att ta bort den angivna posten från historiklistan:

 historia -d [num] 

Följande skärmdump är ett exempel på detta.

Det andra "echo" -kommandot togs bort framgångsrikt.

Alternativt kan du bara trycka på uppåtpilknappen för att ta en promenad tillbaka genom historiklistan, och när kommandot av ditt intresse visas på terminalen, tryck bara på "Ctrl + U" för att helt blanka linjen och ta bort den effektivt från lista.

Slutsats

Det finns flera sätt att manipulera Linux-kommandoradshistoriken som passar dina behov. Tänk på att det vanligtvis inte är en bra metod att dölja eller ta bort ett kommando från historien, men det är inte heller fel i sig, men du borde vara medveten om vad du gör och vilka effekter det kan ha.