Terminal Icon


The preferred computing interface for many hackers around the world.
96 Stories
All Topics

Git github.com

A fast terminal UI for Git

Here’s the motivation behind this Rust-based TUI:

I do most of my git work in a terminal but I frequently found myself using git GUIs for some use-cases like: index, commit, diff, stash, blame and log.

Unfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable.

GitUI provides you with the user experience and comfort of a git GUI but right in your terminal while being portable, fast, free and open source.

A fast terminal UI for Git

Terminal github.com

Hacking GitHub Copilot in to the terminal

So you got tired of AI just suggesting code edits, and now you want it to help you run code, too. Silly human, you have come to the right place. This will take five steps.

This gets an A+ for creativity. Fire up your shell, then launch Neovim. Then shell out with :VimShell to get back to where you started, but with Copilot suggestions.

My guess is the ergonomics of this are… bad. But a cool hack, regardless!

Terminal rhodesmill.org

Start all of your commands with a comma

Brandon Rhodes’s solution to conflicts between his ~/bin scripts and system binaries: the humble comma

I heartily recommend this technique to anyone with their own ~/bin/ directory who wants their command names kept clean, tidy, and completely orthogonal to any commands that the future might bring to your system. The approach has worked for me for something like a decade, so you should find it immensely robust. And, finally, it’s just plain fun.

Opensource.com Icon Opensource.com

The only Linux command you need to know

Cheeky title, but they’re talking about cheat, which is different than man and info in that it’s entirely example based and community maintained.

The cheat system cuts to the chase. You don’t have to piece together clues about how to use a command. You just follow the examples. Of course, for complex commands, it’s not a shortcut for a thorough study of the actual documentation, but for quick reference, it’s as fast as it gets.

Josh Comeau joshwcomeau.com

The frontend developer's guide to the terminal

This guide by Josh Comeau is Josh doing what Josh does so well: taking complex/arcane/technical topics and making them approachable & fun for his audience.

It takes years of practice to become a terminal guru, but here’s the good news: we can take a shortcut. We don’t really need to know 98% of the stuff you can do with a terminal. If we focus on the most-important critical fundamentals, we should be able to become comfortable with the command line in a remarkably short amount of time. ✨

That’s what this blog post is all about.

Terminal browsix.org

Browsix – Unix in a browser tab

Your first thought when reading that headline might’ve been _WebAssembly. Mine was! But no, that is not how Browsix does its thing:

Browsix is a framework that bridges the considerable gap between conventional operating systems and the browser, enabling unmodified programs expecting a Unix-like environment to run directly in the browser. Browsix does this by mapping low-level Unix primitives, like processes and system calls, onto existing browser APIs, like Web Workers and postMessage.

They have examples of this tech enabling a terminal in the browser, a Latex editor, and even a client/server-based meme generator written in JS and Go.

Terminal vitalyparnas.com

Clever uses of pass, the Unix password manager

Turns out the pass command on your local Linux box can be used for a bunch of encryption-related things in addition to what most of us use it for: managing a user’s password.

One cool example is you can hide API keys from shoulder surfers (and history’s memory) by storing the key encrypted on disk and using pass to access it at runtime:

curl -H "API-Key: $(pass provider/api_key)" ...

Productivity github.com

A simple script to print the last 10 commands you ran in this directory

What was I doing the last time I was here?

We’re linking to the repo, but the idea is where it’s at. The code is a one-liner (if you’re using zsh)

grep -v "jog" ~/.zsh_history_ext | grep -a --color=never "${PWD}   " | cut -f1 -d"|" | tail

Then you add this to your .zshrc

function zshaddhistory() {
	echo "${1%%$'\n'}|${PWD}   " >> ~/.zsh_history_ext

Now you’re all set for the next time you need to jog your memory!

freeCodeCamp Icon freeCodeCamp

Learn the 50 most-used linux & terminal commands

I’m sharing this because I’m watching this course, so learn with me as I learn from Colt Steele. It’s awesome because it has chapters so you can easily jump to the sections that interest you most.

Touch cat tail. Find man head. Who?

The previous seven words are common Linux commands. If you are a programmer, you are likely going to need to use Linux and terminal commands at some point.

All these commands work on Linux, macOS, WSL, and anywhere you have a UNIX environment.

Pairs well with Modern Unix tools and Oh my! Zsh. 🍷

Learn the 50 most-used linux & terminal commands

Terminal arp242.net


Martin Tournoij lays out a bunch of ways he finds zsh more compelling than bash.

There are many more things. I’m not going to list them all here. None of this is new; much (if not all?) of this has around for 20 years, if not longer. I don’t know why bash is the de-facto default, or why people spend time on complex solutions to work around bash problems when zsh solves them. I guess because Linux used a lot of GNU stuff and bash was came with it, and GNU stuff was (and is) using bash. Not a very good reason, certainly not one 30 years later.

Smashing Magazine Icon Smashing Magazine

How to build your own mouseless development environment

I’ve never gone full mouseless (nor do I necessarily recommend it), but there’s extreme productivity wins to be mined by keeping your hands on the home row as much as possible.

Building a development environment with the shell as a keystone offers multiple benefits. You can use tools that fit nicely with each other, you can customize everything depending on your own needs, and the biggest of all, you can control your entire development environment with your keyboard. This can save a lot of cognitive energy as well as deliver a pleasant user experience.

This is an excellent walk-through on Smashing Mag for those ready to level up their terminal game:

Today, I’d like to share with you these tools so that you too can increase your efficiency and your comfort in your daily job. They work well together — shaping what I call my Mouseless Development Environment. More precisely, we’ll discuss:

  • Why using the Linux shell can be very powerful when working with plain text (including code);
  • Why using the dreaded Arch Linux;
  • The advantage of a tiling window manager;
  • How to have a great terminal experience with URxvt, tmux, and tmuxp;
  • Why Vim can become your best friend.

Tom Payne github.com

Easy, secure dotfiles management with chezmoi

Here’s how Tom Payne describes his project:

chezmoi is a popular dotfile manager (currently over 4.5K stars on GitHub and increasing quickly). chezmoi helps you get your prefered environment synchronized across multiple machines (e.g. your home desktop, your work laptop, and a temporary development container in the cloud) while easily coping with differences from machine to machine and keeping all your secrets safe either with your password manager or encryption. Using chezmoi feels very much like using git (and indeed it builds on git). chezmoi is easy to install, quick to start with, runs everywhere, and scales from managing a handful of files on one machine to complex multi-machine set-ups with hundreds of dotfiles and plugins.

Getting a new machine set up looks like:

$ sh -c "$(curl -fsLS git.io/chezmoi)" -- init --apply <github-username>

My dotfiles “manager” is just a combination of git clone and setup.sh, but if I used many machines I’d probably reach for something more robust like this. If you’re already using a manager for yours, here’s a comparison guide of how chezmoi stacks up to other popular options.

0:00 / 0:00