Skip Navigation
45 comments
  • practice. practice. practice. Just keep at it. Compile the things you need from source and work through the problems until they are solved. Most CLI programs follow a common set of conventions which you just have to build an intuition for over time. You are learning a new language and immersion is key. Also, the CLI is merely the interface. The system is akin to the culture. There are whole set of idioms which have to be learned over time.

  • Just... Use it more, really the only way to get better at something is to do it more.

  • The trick is to xdotool the cursor around the screen and to simulate keystrokes.

  • Get use to navigating the file system. Know where you are, where you want to go and how to get there. After that, start following guides on installing things manually just for fun. I can't tell you how many times I've installed Arch Linux in a VM from scratch for fun. Lol. The Arch Wiki is your friend and can be used even if you stop using arch for certain things.

  • Start using it more frequently and favor it over GUI apps. For instance, use cd and ls over the file manager. Launch applications I using the command line. Figure out ways to do in the CLI what you used to do using GUI. Over time you should get more comfortable with the environment.

  • Just use the programs in the terminal more and more. You're literally just running programs with some arguments to make them do exactly what you want. Even scripts are just a list of commands to run.

  • My biggest suggestion is to use cli tools, read man pages, start with man man, install info pages and use a tool like tldr.

    Like everything else one wants to learn, the best ist to practice and learn through finding better solution for own made failures.

  • Someone already mentioned The art of command-line. It's a start.

    And just use it... you'll get better at it with time and practice.

    Also, make sure your use of the CLI enhances your workflow, or it won't work.

  • I do most things on the command-line and for me, the trick is not having a lot of scripts laying around. If it's a common action I do a lot (like running the local test bed), I rely on shell history. Beyond that I just start chaining stuff together on the fly. It forces me to keep knowledge of the utilities fresh, and also keeps me from having a ~/bin folder full of outdated crap that almost does what I want.

  • Learn to like not having to use your mouse. Only use your mouse as a last resort. One strength of CLI is almost never having to move your hands off of the homerow. Fuzzy finding is your friend.

    For example:

    • Instead of using a desktop app like GNOME, where you click on stuff to open them on a visual desktop -> Use a window manager like i3. In i3 configs, set a keyboard shortcut to fuzzy find your installed applications and open them. Now, your process for opening Firefox goes from clicking on a desktop icon or scrolling through menus, to pressing a keyboard shortcut and typing in the first few characters of Firefox and pressing enter. Desktops are bloat, you can get all of the functionality of a desktop with just the i3 rust status bar extension and CLI.
    • Instead of typing out and remembering long CLI commands with a bunch of flags, use fzf to fuzzy find through your bash history. Fzf uses Ctrl-R for this, and it makes CLI interfaces much faster to navigate once you've already used those commands. It also makes searching files and navigating directories in CLI faster.
    • Mac and Windows lack keyboard shortcuts to fully manage the layout of things on your screen. I know they have some shortcuts, but they can't do everything without a mouse. Once again, I recommend a tiling window manager like i3 for moving tiles around, resizing, etc, all from the keyboard.
    • Learn vim or similar text editors which not only use the keyboard for typing characters, but also for navigating and editing text. Instead of moving your mouse to the end character of a long word you want to delete and hitting the backspace key 20 times -> In vim, type '/' and the first few characters of the word, press enter, and type 'dw' to delete the entire word. Vim mode is also available in bash and a bunch of extensions for other apps, you just have to configure them.
  • Use it everyday and you just pick things up over time, you don't need to know everything. Make your terminal pretty colours. Fetishize about keyboards and the simplicity of plain text.

  • This is a bit of a pointless question. Also, not quite making sense.... because 'workflow' can mean absolutely anything.

    I enjoy using Dolphin (KDE) because I have a terminal window at the bottom (F4 toggles it) which is tied to the GUI - so if I do 'zi' to jump to one of my video, or document folders, then the GUI follows... best of both worlds... and it means I can manage almost as well without the GUI, though not quite so well without the terminal.

    You should aim to do things the most efficient way, without predetermined ideas about whether to use GUI or terminal. I use terminal to listen to radio, but not to edit pictures or videos.

    When you get to your desktop, certainly start with a terminal open... I like Kitty - easy tabbing and splitting means I can do tons of stuff in the one window.

    You learn by using, researching, and learning. That's how you can get better. You can also do a lot by trying different shells - for example, I run Konsole (with ZSH) and Kitty with FISH - so they're quite different to use, and each has benefits.

45 comments