WDYM your terminal isn't a test suite?

sabreW4K3@lemmy.tf to Programmer Humor@programming.dev – 132 points –
29

I legitimately back up my history file. Mostly because it likes to truncate itself randomly (though this may have been fixed in zsh, or my config, because it's been a while). Just a systemd timer that triggers a shell script to copy it by date and rotate anything older than 100 copies.

Edit: WHY DID I SAY ANYTHING? After like 3 months of no problems, my history truncated itself to 3 entries a few minutes ago. I've only ever seen a few days of loss before that lol.

Have you tried Atuin? It's amazing.

I did try it for a bit. IIRC it slowed me down more than I cared for. Maybe worth trying again, though.

I'm annoyed when my thirteen bash instances don't share history, but I'd probably be a lot more annoyed if they did.

That's one thing I like about zsh, or my config at least, because I use i3 and therefore tend to open lots of shells. History is mostly local until I hit return twice (two empty prompts) at which point I can get history from other sessions. It's stuck more global at that point though aside from future history.

I just start every command with a space, don't see the issue.

Was working on a server where I did not want to put some dumb command into the history, so I add a space like you do. Press up. The command is there. The fucking insult I felt.

It's disabled by default, but you can enable it in .bashrc and then delete that edit session using a spaced command.

Edit: brain fart

it also depends on the shell, in zsh it persists on local history but does not get written to history file

Can somebody please tell me what history -c is?

history displays a list of all commands you have run on the terminal since the history list was last cleared. It is invaluable for referring back to a big complex command or set of commands you ran at some point in the past. The -c flag clears that history.

dont you also need history -w to save it?

on ubuntu -c doesnt actually clear it unless you also use -w

Yes, my comment only applies to the shell history in memory. -c clears history immediately, but you can still reload it from disk if you haven't overwritten that with -w. If you tend to close your terminal windows frequently and rely on the history feature between sessions, it would benefit you to learn about the intricacies of the on-disk copy of history and how its affected by writes, appends, clears, crashes, etc. I tend to leave my terminal windows open a long time and copy any complex commands out to my PKM if I need to save them for future sessions, so I generally try not to rely on .bash_history, but it has saved my bacon on more than one occasion.

It lets you clear the bash command history, either completely or selectively. Here's the GNU docs for the history builtin: https://www.gnu.org/software/bash/manual/html_node/Bash-History-Builtins.html#index-history

(I'm not too familiar, someone else can clarify: is this available outside bash?)

What's interesting to me is the -a option, which lets you "flush" the history for the current session without ending the session. I can see that being useful!