7 ms·
Trick to find commands in the terminal quickly
- ashenke 2y agoFor these commands I want to rerun, but not often enough, I add a comment to the command like `yay - Sc # clear pacman and yay caches` so it's easier to search in the future
- jstanley 2y ago> Instead of icons you could use text which you can grep later easily. An obvious improvement! And if you're using text you don't even need to be watching out to recognise it, you can search with Ctrl-R.
- Gualdrapo 2y agoThen I'd spend even more time looking for an icon I'd think represents best the command, and then looking for that icon in the emoji selector
- psxuaw 2y agoI just add " ###" to the end of commands run frequently. It makes easier to identify important commands with atuin, fzf or plain bash/fish history search.
- __MatrixMan__ 2y agoI prefix them with comments # sometag the --actual --command "Bashtags" I call them, despite not actually being in bash these days.
- andrelaszlo 2y agoSame, but as a suffix
- Duanemclemore 2y agoClever approach, but one extra step for me. I made a shell script "hg" which stands for "history | grep." So "hg .wine" brings up all commands in the bash command history buffer with the string .wine in them, say "1601 ls .wine" To run one of course you just enter ! and the number of the command. So like... !1601. Whole process is extremely ergonomic. Although - if anyone wants to write a shell extension that always runs the command output in a separate panel and keeps the parent panel (or tab) to just the commands entered that would be cool too.
- plasticchris 2y agoYou can search the history with ctrl-r and then type the search. To make it even better use fzf as well.
- vitus 2y ago> I made a shell script "hg" which stands for "history | grep." Not a Mercurial user, I take it? (hg is the standard command for Mercurial.)
- adamredwoods 2y agoI love making little bash scripts to improve my workflow, and I think everyone should do it, but-- on their own. For example I have 'glast' to list the 5 previous git branches. Or I have 'phelp' that basically lists the available commands in a package file.
- deleted 2y ago[deleted]
- ralgozino 2y agoInstall "fzf" [0] and set it up to be used with control+r, there's no going back. You get as a bonus the chance to use fzf in a lot of other places :) I guess that more advance tool would be "atuin" [1], but it is too much for my use case. [0] https://github.com/junegunn/fzf https://github.com/junegunn/fzf [1] https://github.com/atuinsh/atuin https://github.com/atuinsh/atuin
- noman-land 2y agoI switched to atuin and it's a huge step up from native Ctrl + R and fzf because you can press Ctrl + R again and again and it switches between searching through directory, session, host, or global history.
- bencornia 2y agoI listened to an interview with the creator of atuin on the changelog podcast. It seems like a compelling idea. The only thing that makes me consider switching from the fzf/ctr-r combo is syncing my history between tmux sessions. But I don't spend enough time in the terminal to really justify the time to set it up.
- nelsonfigueroa 2y agoNever heard of atuin but it looks awesome. I'm going to try it out.
- worldsayshi 2y agoOh, looked at the feature set. Sounds interesting. "Sync your shell history to all of your machines, wherever they are" That sounds like a potential security issue though.
- noman-land 2y agoJust a note that this is an optional add-on that I don't use.
- 2y ago
- pjmlp 2y agoCtrl+R followed by key parts of it.
- ckastner 2y agoYes, this. For example, `Ctrl+R makedo` would go back in history to the first command that matches this, to use the ` ./scripts/makedocs.sh` example from the article.
- k3vinw 2y agoAnd Ctrl+s goes forward in history, but if you don’t have flow control disabled you might think your terminal became frozen in time. Ctrl+q will resume the flow in that case. Also got to watch out for Ctrl+d on qwerty kb layouts where s and d keys live side by side.
- deleted 2y ago[deleted]
- jmholla 2y agoYup. Then if you want to run the commands that you ran after it last time, hit `Ctrl+O` instead of `Enter` and the next command you ran will be pre-filled on the prompt.
- IshKebab 2y agohttps://github.com/cantino/mcfly https://github.com/cantino/mcfly https://github.com/atuinsh/atuin https://github.com/atuinsh/atuin You're welcome.
- codetrotter 2y agoatuin is the G.O.A.T.
- mb7733 2y ago+1 for autin, and in case anyone is wondering, it works on windows with e.g. git bash too. You just need to build it yourself.
- will_wright 2y agocame here to add atuin!
- noman-land 2y agoatuin forever. I'm never going back. My shell history will be curated in a sqlite db for the rest of my life.
- louiskottmann 2y agoHeavy user and I moved to Atuin because of the shell history scoping issue with regular bash history. No matter my config it would always glitch. Atuin is backed by a global sqlite db: problem solved. And unlimited history. I don't use sync though, commands sent to 3rd party servers are a no-go.
- bilekas 2y agoCtrl+R for reverse search is okay but can get a bit tedious when looking for variations on the command.
- chasil 2y agoIf you "set -o vi" then (Esc)/ becomes reverse search. Like vi in reverse, n goes further back, but N goes forward. The "set -o vi" option is a POSIX optional feature, and should work in any compliant shell.
- bilekas 2y agoI’ll give it a try, might see if could integrate it into telescope for vim too because I find myself a bit slow when there using harpoon at the moment.
- TZubiri 2y agoCtrl shift R
- TeMPOraL 2y agoInteresting. For me, C-r is sufficient (and/or M-r in Emacs, where C-r by default does reverse interactive search on the text in buffer; it's nice to have both at the same time, actually). However, I must have skipped some education about shell history and/or its default settings, because half the time I need it, the command I want isn't there to be found. I also observed the following kinds of behaviors: - Sometimes, shell history seems to be scoped (or reacting to) current working directory; - Sometimes, commands executed on remote machines end up being saved in local history; - When the shell gets killed (e.g. when Emacs crashes and takes down the shells open inside with it), or the system crashes, sometimes the history gets saved, and sometimes nothing remains from a session that spanned multiple days; - When I have multiple terminals open, it's a coin toss whether only one will have history saved or all of them, and then another toss as to whether histories will be CWD-sensitive or not. Is there a good primer/community consensus on how to configure shell so all history gets saved in sensible manner (including continuously, so it survives a crash)?
- cjauvin 2y ago> Is there a good primer/community consensus on how to configure shell so all history gets saved in sensible manner (including continuously, so it survives a crash)? I find that zsh is quite good at addressing some of the issues you mention.
- worldsayshi 2y agoInstall fzf and ctrl-r will become much better.
- abuani 2y agoFzf has been a district before and after type tool for me. There's so many use cases for it, and the fuzzy search in history is amazing.
- worldsayshi 2y agoYeah, for example I've started looking at making tui:s in go using tview and here fzf-tmux works great as a (multi-)select fuzzy find popup.
- 1oooqooq 2y agosligthly ontopic of emoji commands on shell for dyslexics and/or visual people, here's one i use often https://github.com/gcb/emojihash.sh?tab=readme-ov-file https://github.com/gcb/emojihash.sh?tab=readme-ov-file
- mooreds 2y agoThe first thing I add to my shell RC file is 'set -o vi' Then I can use the vi/vim search keys - escape - '/' - <type words> - hit n or N to move back and forth Way way easier than using the up or down arrow.
- SoftTalker 2y agoUnless you use emacs, then the shell history keys seem normal
- chasil 2y agoPOSIX outlines vi mode, but emacs is not mentioned. "vi - Allow shell command line editing using the built-in vi editor. Enabling vi mode shall disable any other command line editing mode provided as an implementation extension." https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V...
- mooreds 2y agoFair fair. I guess the most important thing is that you pick one style of efficient command line searching and editing and run with it.
- seiferteric 2y agoI made a tool some years ago to store commands in a dot files https://github.com/seiferteric/clamp https://github.com/seiferteric/clamp
- SoftTalker 2y agoIf you have a command you run over and over, make an alias for it. That way if your shell history gets clobbered you still have it.
- hakcermani 2y ago.. another cheap trick .. when juggling different projects i keep a separate history file for each under ~/.histories/ .. shameless plug to my gist .. bash script that launches gnome-terminal with a named history file .. https://gist.github.com/appsmatics/ff27e885460bd345eabe1c5f70c4438b https://gist.github.com/appsmatics/ff27e885460bd345eabe1c5f7...
- jasonpeacock 2y agoOr use the right tools, like atuin[1] and hoard[2], to manage your shell history and preserve frequent/favorite commands. [1] https://terminaltrove.com/atuin/ https://terminaltrove.com/atuin/ [2] https://terminaltrove.com/hoard/ https://terminaltrove.com/hoard/
- VeejayRampay 2y agoI use television (https://github.com/alexpasmantier/television https://github.com/alexpasmantier/television) with shell integration so basically I end up doing ctrl-r, then fuzzy find the command and run it
- deleted 2y ago[deleted]
- mettamage 2y agoEmojis are underutilized in so many ways. THis is a fun way. Are there other ways? Sure. This is one of them.
- oriettaxx 2y agogenius! bravo! you can also search with grep, I did not know! ``` history | grep ICON ```
- oriettaxx 2y agoespecially for many, like me, who cannot change shell... since we are not working with our pc, but we are SSH connecting to plenty of different servers
- ethan-j 2y agozsh-autosuggestions is very useful!
- ajmurmann 2y agoI always found it most useful to have up and down arrows search through history for what I've already typed. So to run my tests via Gradle, I usually just type ’.g‘ followed by up arrow. I think I set it up with ‘‘‘ "\e[A": history-search-backward "\e[B": history-search-forward ’’’ (Not near a computer right now to confirm) I find this somehow much faster than C-r
- nandkeypull 2y agoUsing C-r is a little too much navigation overhead for me personally. For things that I'll need long-term, I just use a pair of aliases to add a new alias to my .bashrc and source it (alias vib='vim ~/.bashrc' and alias .b='source ~/.bashrc'). I also have 'vit' and 'viv' aliases to do the same thing for my .tmux.conf and .vimrc. For short-term stuff, I use https://github.com/dp12/fastdiract https://github.com/dp12/fastdiract to save frequently used commands and run them instantly with a two-key combo (f0-f9).
- k3vinw 2y agoVisual cues are welcome and can be very nice when applied effectively. For example, Readline has support for color highlighting: https://wiki.archlinux.org/title/Readline https://wiki.archlinux.org/title/Readline I haven’t played with emojis in the terminal before. Wouldn’t this emoji trick depend on font support?
- wetpaws 2y ago[dead]
- kazinator 2y agoIn the TXR Lisp repl, I implemented a feature I hadn't seen anywhere: submit a command recalled from history, and then move onto the next command in history. I assigned it to Ctrl-X Enter. Turns out, Korn shell had this first: Ctrl-O. And newer Bash has it also. You can repeat sequences of multiple commands in your history without having to navigate back to each one individually. Just find the first one and submit one by one with Ctrl-O.
- roydivision 2y ago$ <some long command I will probably need later> # <some memorable name> Later, search for <some memorable name>
- deleted 2y ago[deleted]
- stuaxo 2y agoI wish history would differentiate between non commands errors and commands that ran without error. Most of the time I don't need the rubbish I typed along the way in my history.
- ZoomZoomZoom 2y agoIn fact, there's a system already in place, it's just that almost no one uses it and there's no codified convention. Error code 22 is EINVAL, "invalid argument". If most of the CLI frameworks agreed to use it on invalid commands, shells could diferrentiate user errors and program errors and keep histories clean. Adding this to POSIX Utility Conventions and GNU Coding Standards would be a great kickstart. https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/V1_chap12.html https://pubs.opengroup.org/onlinepubs/9699919799.2018edition... https://www.gnu.org/prep/standards/html_node/index.html#Top https://www.gnu.org/prep/standards/html_node/index.html#Top
- kevincox 2y agoThe icon idea is cool. I do something similar but optimized for searching rather than identifying. I put a "tag" in front of my commands. Then I can type the command and press up. For example mc= sexec nix-shell -p jdk17 prismlauncher --run 'exec prismlauncher -l 1.19.4 -s mc.example' Will start the right version of Minecraft with the right version of Java. I just type mc<Up> to find it. I use this for commands that I know I will want to reuse, but not frequent enough to always be near the top of my history. In this case I could probably search for "prism" and it would be good enough but for things like specific ffmpeg incantations it is hard to remember a unique part, so the tagging lets me give my own name to the command.
- wang_li 2y agoThe tool this guy is looking for is called "make". You build a makefile with the appropriate targets then you type "make check", "make build", "make debug", "make tag".
- kittikitti 2y agoI usually copy and paste my bash history to a LLM and ask questions. But I also use Ctrl (Cmd) + R for a exact keyword search.