I’m a Windows user of all life. But I love Linux. And these last two years after so many time I started learning it in deep . But one thing is bugging me is that I am those persons that has bad times remembering names, words… imagine commands… Even after using it so much I remember some basics but I’m struggling a lot and I have to go back to notes constantly to do some basic operations. Even worst after trying multiple distro from from different upstreams that commands are … Different. What would be your recommendations to help me. Are there tools to help this issue ? My guess is that A LOT of people happens the same. And it’s one of the reasons Linux has such a slow adption . Because is excellent and full of capabilities.
I partly remember the first letter and press arrow up.
I use ZSH shell with oh-my-zsh. It autofills the rest with history at the point you write. So arrow keys make you scroll through the history which is beginning with the thing you wrote
Same with fish.
Fish is even more advanced with this.
But I still prefer ZSH because of shell language being incompatible with fish. I dislike learning that thing, when I have everywhere new Linux shells with bash
This is my boat with fish shell at the moment, like I started learning how to make scripts with it, and I very quickly realized that it’s definitely a minority shell, and that it’s not worth it to make scripts for, it’s missing functionality that normal bash has and has zero functionality with existing Scripts so I’m finding myself having to switch to bash anyway for most scripting.
I never really tried zsh, I might tinker with it if it does have that functionality as that’s the part I really like about fish
I also heard that the same functions are also possible in bash with plugins.
Maybe start with “oh-my-bash”? :::
I’d never replace bash with fish, but it’s a great tool for when I don’t know or cannot remember a command of argument.
Find a cheat sheet. There are hundreds out there – you probably want one for basic terminal commands, and one for whatever package manager you’re currently using.
The history command is also great if it’s something you do fairly often, but not often enough to remember clearly.
The gorilla bash llm thing has been immensely helpful.
Amazing, thank you
Apart from fzf that helps me find recently used commands and also files and directories easily, I also use tldr that gives you a simple cheat sheet for every command and very often saves you trawling through endless man pages.
Anything you have trouble remembering, or just find yourself doing often, create an alias (or bash script if it constitutes a multi line command). Name the alias something you can easily remember that also lets you know what that command does.
Then, and here’s he trick, don’t rely on the alias. Use it when you can’t remember, say “aww, damn it I had to use the alias again”, and then use
which
followed by the alias name to see what the command was again. Do this over and over and eventually some commands will stick.Ones that you don’t care about or are just super long, just keep using the alias and don’t worry about remembering them. Use aliases as both commands and notes.
I think 90% of the comments here are “write your own notes“ - which is possibly over simplistic.
Everyone’s different but IMHO:
The brain is better for imagination than long term storage. So if you’re stuck trying to remember some obscure command(s), it’s just better to use something else to store that on.
But when the brain understands the core concepts well enough, the details come together as habits (where repetition comes in).
So, if you’re unable to recall something, take some time to think / remind yourself about the underlying concepts and why that’s the command - next time it’ll be easier, eventually it’ll be effortless.
I had to learn some strange concepts for work during a deep technical troubleshooting session on a client’s system and the commands were like just facemashing the keyboard… I’ve no idea what those commands are now (written down), but I can recall what / why I was doing them and that was the key… for me.
(Using computers since '80s)
But when the brain understands the core concepts well enough, the details come together as habits (where repetition comes in). This is the way. Understanding core subjects then is easier to connect and recall stuff.
Around 2012-2014 it was common to have Conky print things like system information or keyboard shortcuts in the desktop.
I think Conky is still around although less popular now. You could look into that though.
This is just an example from an image search for Conky desktop, but it gives you an idea how information can be displayed https://live.staticflickr.com/4062/4543953032_e6d7473206.jpg
That looks pretty tight, thanks
You could make aliases that are easier to remember for you.
If you e.g. had trouble remembering that
mv
does a rename, you couldalias rename=mv
. Ideally just put whatever you would have googled in “linux command to x” as the alias.That’s the power of Linux; you can tweak everything to your preferences and needs.
Wild had no idea—this is so cool. If you do this, does the original command also still function (so like I could rename to something easier for me, but hopefully transition to the real deal at some point/ properly follow help forums or suggested pasted commands)
The originals remain untouched.
It is possible to override existing commands with aliases though. This is useful for setting flags by default. I have
alias ls='ls --color'
for instance such that whenever I runls
, it actually runsls --color
, providing colourful output.Note that aliases are only a concept within your command line shell though. Any other program running
ls
internally won’t have the flag added and wouldn’t be able to use any of the other aliases either (not that it would know about them).It’s very easy to program your own “proper” commands though on Linux. If you had some procedure where you execute multiple commands in some order with some arguments that may depend on the outputs of previous commands, you could write all that as a shell script, give it some custom name, put it in your
$PATH
and run it like any other command.Also very cool—the building in default modifiers to the command. Thanks for the great tips.
repetition…repetition…repetition…repetition…repetition…repetition…repetition…repetition…lol
I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.
~ Bruce Lee
I remember the basic filesystem commands like ls, cp, mv, rm, cat etc, but I generally don’t remember much more than that. Even so, I still use the GUI file manager/software center pretty often, there’s no reason why I have to force myself to use the terminal all the time.
I have an app on my phone to search for commands that I barely use and don’t remember. Don’t worry that much about it if you aren’t a professional system administrator or other such jobs.
My solutions are:
- Just arrow up until you find the command from last.
- Learn to use CTRL-r and search for old commands.
- Bash completion helps with arguments
- Save stuff in shell scripts
you don’t need to remember anything, except commands you use the most often but even then it becomes muscle memory after a while. If you ever need some specific command to use, just look it up online.
Online
Ok but what if my Wi-Fi isn’t working
You can download StackOverflow, Wikipedia, etc very conveniently, cf https://kiwix.org/
I have a local copy that I bring on travels with me and I keep it relatively up to date. Very convenient thanks to having a single file per source and tools to read it (Web server, GUI, etc).
Then use the commands help or read the local man document. In example for grep it would be
grep --help
andman grep
. You don’t need an online connection for this.How do I remember what the command even is? Like how would I discover the grep tool without using the Internet?
Discovering tools is not what the question and solution presented here was. But for that question, I recommend downloading a book about Linux as a reference or something like that. Or a basic tutorial series to read and remember basics about Linux.
You can also just list the
ls /usr/bin
directory to see what programs are there.There is actually a command to search the man pages for terms, to list the commands:
apropos
$ apropos -s 1 search apropos (1) - search the manual page names and descriptions find (1) - search for files in a directory hierarchy flatpak-search (1) - Search for applications and runtimes gamemodelist (1) - search for processes running with gamemode rg (1) - recursively search the current directory for lines matching a pattern zipgrep (1) - search files in a ZIP archive for lines matching a pattern
Note: I cut some parts out in the output to make it shorter. The option
-s 1
means, it will list man pages from section 1 only.
Containers become problematic, some don’t have man pages or other common commands installed. Debugging applications on them requires a wide knowledge of all sorts of primitive commands and workarounds to achieve common tasks. My biggest fear is a container without grep.
use your phone to look up the commands on how to get internet working again
alternatively, connect computer to your router via cable
Unless you want to increase productivity in specific field (say some kinds of software development) you won’t even need to remember anything more than cat, ls etc. In those specific usecases you’ll become habituated to the command you use frequently, nobody becomes a grep ninja on day 0.
Whenever I need something mildly complex with ffmpeg or imagemagick, the right command is just a web search away, I rarely remember syntax of these anyway. I find commands less obvious and harder to find for windows shell (technically powershell is cross platform btw), but maybe that’s because I’m not much familiar with windows-ism’
Tip: whenever you encounter a useful command syntax/one liner, save it with brief description. I find konsole’s built in quick commands quite handy, some other terminals probably have such features too. Otherwise a simple markdown list is enough.
Use ctrl-r a lot (navigate up/down with ctrl-p and ctrl-n) and try to “fuzzy-match” previously used commands. There is a very useful command called
fzf
which, while only a search program at heart, can be configured to complement this nicely.