Verwijder specifieke regel uit Zsh-geschiedenis

Ik wil een specifieke vermelding in mijn Zsh-geschiedenis verwijderen.

Zsh’s fcen historyhebben geen opties om items te verwijderen. Ik heb geprobeerd te zoeken naar de ~/.zhistorymaar die bestaat niet. Hoe kan ik de locatie van het geschiedenisbestand vinden en het item verwijderen?


Antwoord 1, autoriteit 100%

U zoekt in het verkeerde bestand. Kijk naar ~/.zsh_historyniet ~/.zhistory Om te zien in welk bestand je geschiedenis is opgeslagen

echo $HISTFILE

En

rm $HISTFILE

Antwoord 2, autoriteit 49%

Zsh-geschiedenis wissen (oh-my-zsh)


  • iTerm sluiten, afsluiten en opnieuw openen
  • voer nano .zsh_history
  • uit

  • gebruik de arrow keysom naar het deel van je geschiedenis te gaan dat je wilt verwijderen.
  • gebruik de delete-toets om alle ongewenste geschiedenislogboeken te verwijderen.
  • Zodra je alles hebt verwijderd dat je wilt verwijderen, selecteer je control Xom Exitte gebruiken.
  • U wordt gevraagd om de wijzigingen Savete maken. Als u tevreden bent met uw wijzigingen, klikt u op shift Y.
  • U wordt gevraagd waar u uw wijzigingen wilt opslaan. Selecteer control Tom to Fileop te slaan.
  • navigeer naar uw .zsh_profilemet uw arrow keysen druk op enter.
  • Sluit iTerm af en herstart.
  • typ historyom de verwijderingen te bevestigen.
  • Je hebt je Zsh-geschiedenis gewist.


Antwoord 3, autoriteit 32%

Wis zsh-geschiedenis op unix-systemen.

echo "" > ~/.zsh_history & exec $SHELL -l

Antwoord 4, autoriteit 9%

  1. open ~/.zshrc
  2. voeg de volgende regel toe

    alias clear_history='echo "" > ~/.zsh_history & exec $SHELL -l'
    
  3. Bewaar het bestand en sluit het

  4. Sluit de console of typ zsh
    als je het resultaat direct wilt zien, maar dit opent een andere zsh-shell in de oude
  5. Je kunt nu de console wissen door clear_history
  6. te typen

Alle eerdere antwoorden zijn goed, dit is gewoon de oplossing die voor mij werkte.


Antwoord 5, autoriteit 8%

TL;DR

cat /dev/null > ~/.zsh_history


Antwoord 6, autoriteit 5%

Je kunt deze commando’s gebruiken om de geschiedenis van het zsh-commando te openen (wanneer je in de home- of ~-directory bent) en aannemen dat je weet hoe je vimen nanomoet gebruiken:

nano ~/.zsh_history
vim ~/.zsh_history
open ~/.zsh_history

dan kunt u de gewenste regels handmatig verwijderen en het bestand opslaan.


Antwoord 7, autoriteit 5%

  1. Typ en voer uit op de zsh-opdrachtregel, open ~/.zsh_history (Hiermee wordt TextEdit op mijn Mac geopend.)
  2. Verwijder alle regels in het bestand
  3. Bewaar het bestand en sluit het
  4. Sluit/sluit de Zsh volledig af en start de Zsh opnieuw (deze stap is belangrijk!)
  5. Open nu zsh en het geschiedeniscommando toont niet de regels die je hebt verwijderd

Antwoord 8, autoriteit 3%

Gebruik voor een uitgebreide, kant-en-klare oplossing mijn Zsh Hist-plug-in.

Anders verwijdert deze functie elke gewenste regel uit je Zsh-geschiedenis, zonder dat er vragen worden gesteld:

# Accepts one history line number as argument.
# Alternatively, you can do `dc -1` to remove the last line.
dc () {
  # Prevent the specified history line from being saved.
  local HISTORY_IGNORE="${(b)$(fc -ln $1 $1)}"
  # Write out the history to file, excluding lines that match `$HISTORY_IGNORE`.
  fc -W
  # Dispose of the current history and read the new history from file.
  fc -p $HISTFILE $HISTSIZE $SAVEHIST
  # TA-DA!
  print "Deleted '$HISTORY_IGNORE' from history."
}

Als u bovendien wilt voorkomen dat alle dc-opdrachten naar de geschiedenis worden geschreven, voegt u het volgende toe aan uw ~/.zshrc-bestand:

zshaddhistory() {
 [[ $1 != 'dc '* ]]
}

Antwoord 9

Bijvoorbeeld met vimkun je eenvoudig de laatste nregels als volgt verwijderen:

  1. Bestand openen: vim ~/.zsh_history
  2. Ga naar de onderkant van het bestand: G
  3. Markeer regels: V-> ga omhoog met de pijltjestoets
  4. Verwijderen: d
  5. Schrijf & afsluiten: :wq

Of je kunt gewoon met de cursor navigeren en een bepaalde regel verwijderen met dd


Antwoord 10

Voor ZSH

Om het geschiedenisbestand te vinden:

echo $HISTFILE
  • Bewerk vervolgens het bestand en verwijder alle regels die u wilt verwijderen zoals u zou doen met history -d id.
  • Bewaar het bestand.
  • Open een nieuwe terminal en je zou moeten zien dat er niets meer te zien is!

Ik ben echter verbaasd dat history -dniet bestaat. Als het bestaat, is het goed verborgen.


Antwoord 11

Open .zsh_historymet je favoriete editor en sla toetsaanslagen op.

bijv. subl .zsh_historyopent de geschiedenis in de Sublime-editor en verwijdert vervolgens wat je maar wilt.
Je kunt ook TextEdit of andere editors gebruiken.


Antwoord 12

Dit werkte voor mij:
LC_ALL=C sed -i '' '/line/d' $HISTFILE

Vervang “regel” door wat u wilt verwijderen.

Van dit antwoord:
https://stackoverflow.com/posts/13661794/revisions

Other episodes