Linux Users
Linux Users
Linux Users
You have to be a linux user to use the console now?
I just use mcfly
Not sure I understand the point of mcfly. zsh and fish have this functionality built in, where pressing Up with a command partially typed will give auto-completions to that partial match.
Ctrl R
The number of people who don’t reverse-I-search is too damn high
It was quite a while before I realised that was possible.
Then not long after starting to use it, that I got fed up and just started opening up the history file and searching in it.
CTRL+R for those unitiated
reverse-i-search + fzf = <3
...until you press up one too many times and enter the same command but with a typo. Again.
There is an option you can set in .zshrc or .bashrc which only includes lines that exit 0 (success)
Been there, done that.
I've been using ctrl + R
more now :3.. though I definitely used to ↑↑↑↑↑↑↑
check out fzf (install fzf and add (assuming bash) eval "$(fzf --bash)"
to your .bashrc)
Makes ctrl+r a superpower
It's awesome until you want to put the cursor in a specific spot of a previous command.
$ rm -f delete-me.txt ctrl-r "me", ctrl-b, ctrl-k $ rm -f delete
But I still use fzf because while I used to do the above, fzf offered more advantage that made switching worth it.
I'll try it if I don't forget it by the next time I have access to my PC lol :3
Ctrl + r with fzf and you’ll never go back.
I feel like there should be a cursed "long way round" for this that involves needlessly copying .bash_history to a "text file", running it through an asciibetical sorter (for "efficiency"), using sed to null out any command which doesn't match the search term...
^r
and whenever you forget to sudo:
sudo !!
You need this: https://github.com/nvbn/thefuck
I’ve probably done that for ls
Too many people still use Bash.
history | grep then !cmd no
Relevant xkcd: https://xkcd.com/1168/
tar --help
tar -xvf
<archive-name>
but only because I had to look it up twice so now my brain has committed it to memory
I don't even know what it does
You don't even need the hyphen!
Mind = blown.
i just use unar (unarchive) nowadays, since that works with all file formats iirc
Extract a tarball with verbose output from the specified file.
And learn how to use the 'z' option
$ history | grep 'gre[p]' | less -S
Does fuck all when you can't remember even a piece of the command lol
Then how well you know which command it is when scrolling. At that point it's googleing how do I move a file or whatever your looking for.
This is the answer
O(n) access, very efficient.
No, I do not care to share the value of n
Being able to just enter a partial command, and hit [up] to jump to prior commands that started in the same way in zsh is a godsend.
I use vim keybindings and have ESC,/
to do a reverse command search.
If you ever have to go back to bash, it supports it as well. In my bashrc:
bind '"\C-p":history-search-backward'
That's ctrl-p, but I'm sure the up arrow is possible too.
taptaptaptap.... taptaptaptap.... taptaptaptap taptaptaptap taptaptaptap
.... taptaptaptap
... tap ...
... shit I was on a different user when I typed it.
Or "shit, I did in tmux last time so I could close the terminal window."
...Yeah, you got me.
https://github.com/atuinsh/atuin is a great tool to manage and search your shell history. I especially enjoy it being able to search commands based on the working directory I was in when I ran them.
It also has more features (which I don't use) to manage dotfiles and sync shell history across hosts/devices.
I was going to talk about it too ! Even though I'm on fish (which helps a lot with history search) atuin really changed my habits and made my life easier !
fish has "directory-aware" autocomplete with inlay hints and a fantastic history
command. I do not suffer from such weakness
In fish
, you can enter part of the command, and then press up to search for it. It's kinda awesome.
yeah I ONLY just recently switched to fish after using zsh and oh my zsh for so long - pretty much since first starting linux cause I once saw someone using it on unixporn and I thought "that's cool"
when I switched to NixOS zsh with all the plugins was a total slog. switched to fish and it just HAS everything that zsh/oh my zsh and the various plugins had but baked in.
so yeah in Fish it's just starting to type something and hoping it's still in the history.
The one people see me doing that gets a "huh?" Is:
~$ !find find -type f -name '*blah*' -print0 | xargs -0 gzip ~$
"Wait! What did you do?" "Oh. Do you not know about bang?"
I love the excitement of using !?
Did I remember correctly what command sequence I last used that pattern with? Will my data be gone? Will I send a vulgar email to my boss? Who knows, let's find out!
That's why you can add ":p" to the end just to print it.
I don't understand people who have the confidence to just blindly run the last matching command like that. Like, are you 100% sure that the last time you ran find was that one, not the one that piped to xargs rm
?
At least with zsh you can tab to complete the !find
and verify it's what you want before running it. And, AFAIK by default, the shell option hist_verify
is set, so if you do just type !find
and hit enter, it doesn't run the command, it loads the command into the editing buffer so you can look it over first. Maybe I just have a weak memory, but I really appreciate the footgun prevention. At worst I have to hit enter twice. At best, I save myself a lot of grief.
Normally the use case is
It's in my recent memory, but maybe there's been 10 or so commands of me fixing stuff in-between.
Substring completion on ZSH. Type in a small part of the command you want to find and then press up.
bash supports this feature too btw
Added to my mental toolbox, thanks!
Or, just type the command “history”, find the index number of the desired command, then type “!
<index number>
”, then<enter>
.That's way more mental effort than pressing up a bunch of times.
Ctrl-R if you know part of the command.
Holy cow!! I didn’t know that. I have been using history > history.txt to find “that one command for that one thing” I only need once every other month or so. Thanks, now I can just do that.
Wow this is really validating for me to read. I’ve been using Linux for a few years but I’m definitely not a computer expert and am intimidated by the command line.
I’ve always felt like googling every command and arrowing up to find an old entry rather than just googling it again marked me as a fake Linux user, not a real one.
Nah, fuck the gatekeepers, you're all good.
Lol don't feel bad, I can do advanced crazy shit with Linux like pivoting the running OS into RAM so I can unmount the boot drive to do whatever without ever rebooting
But I still [Web Search] commands a shit ton of the time LMAO
You can use Ctrl-R and Ctrl-Shift-R to search through your history instead of having to push up a bajillion times.
I think that actually makes you a real Linux user...
Featherpad, copy, paste. Extra work, but you get a work log
I'm in this picture, and I didn't like it....
I accidentally found out one day that I could use a wildcard operator in the terminal instead of a full file or folder name due to always doing this.
cd Pho* or cd /documents/Pho*
Will for example open my "Photo Examples" folder in the working directory or based on the path
With ZSH there's something called "path-completion" that makes that even easier.
Say you want to go to "/usr/local/share/fonts" but that's too much to type out, you can instead type "cd /u/l/s/f" and hit tab. If every path element is unambiguous it will just expand it to "/usr/local/share/fonts". In this case though, "/u/l/" can expand to "/usr/local" or "/usr/lib" so when you hit tab it moves the cursor to just after the "l" to indicate it needs you to distinguish between "/usr/local/" and "/usr/lib". If you just type "o" and hit tab again, it will know that there's only one match for "/usr/lo" and expand that to "/usr/local/" Then there's only one match for "s" which is "share", and only one match for "f" which is "fonts".
That avoids the danger of executing a command with an asterisk wildcard.
This only works until you grow an addiction to making pho at home and start documenting your progress.
cd "Pho Recipes and Pictures"
You can use ||
between two commands as well. If the first command returns exit code != 0, the second command will run.
I.e. which ansible || pip install ansible
.
Or && for if you only want the second command to run if the first command succeeded.
cd /
sudo rm -rf *
Basically the Linux version of deleting system32 but idk I'm not a super Linux nerd yet.
The fun thing is that you can create a file named "-rf *" and hope an admin tried to delete it!
also when they see this post
I wish this wasn't so painfully true.
I always go past it because I go way to fast.
I have more then once gave up on pressing up, hit ctrl + c to reset only to see the command I wanted briefly flash up as I am hitting ctrl + c
grep | history [search term]
I think you meant
history | grep [search term]
(which was id 1003 for me btw)
I do this all the time for that one long command I use monthly like for cert renewals.
alias hf='history|grep'
Oops, but yes that's what I meant.
Oh come on! I at least type the beginning so that it filters the history
zsh tab completion also looks through history wich is pretty nice.
This is why I like atuin, I can just press up and start typing part of the command and it will likely find it in my history.
You could already do that with just "Ctrl-R" but without atuin redrawing your screen.
Linux Recall
history | fzf
alias cat="bat --plain --theme=gruvbox-dark"