Skip to main content

07 - Terminal & IDE

Shell & Terminal

Bash & Other Shells

  • Bash - An sh-compatible shell that incorporates useful features from the Korn shell (ksh) and the C shell (csh)
    • Line editing - The basic features of the GNU command line editing interface
    • History - The history expansion features of Bash
    • Shell expansions - The process performed on the command line after it has been split into words
    • Pipelines - A sequence of one or more commands separated by one of the control operators ‘|’ or ‘|&’
    • Built-in commands - The commands that are executed within the shell process itself, without forking a new process
    • Special variables - A list of shell variables that are set or used by the shell
    • Built-in job control - The ability to selectively stop (suspend) the execution of processes and continue (resume) their execution at a later time
  • Zsh - A shell designed for interactive use, although it is also a powerful scripting language
  • fish-shell - A smart and user-friendly command line shell for Linux, macOS, and the rest of the family
  • PowerShell - A cross-platform task automation solution made up of a command-line shell, a scripting language, and a configuration management framework
  • nushell - A new type of shell

Shell Utilities

  • General Shell Utilities
    • coreutils = A package of GNU software containing many of the basic tools, such as cat, ls, and rm, needed for Unix-like operating systems
    • GNU parallel - A shell tool for executing jobs in parallel using one or more computers
    • rlwrap - A readline wrapper
    • bash-completion - A collection of programmable completion functions for bash
    • direnv - An extension for your shell that can load and unload environment variables depending on the current directory
    • zoxide - A smarter cd command
  • Search Tools
    • findutils - The basic directory searching utilities of the GNU operating system
    • fzf - A general-purpose command-line fuzzy finder
    • fd - A simple, fast and user-friendly alternative to find
    • grep - A command-line utility for searching plain-text data sets for lines that match a regular expression
    • ripgrep - A line-oriented search tool that recursively searches the current directory for a regex pattern
    • silversearcher-ag - A code-searching tool similar to ack, but faster
  • Shell Frameworks & Customization
    • starship - The minimal, blazing-fast, and infinitely customizable prompt for any shell!
    • oh-my-bash - An open source, community-driven framework for managing your BASH configuration
    • oh-my-zsh - A delightful, open source, community-driven framework for managing your Zsh configuration
    • Zim Framework - The Zsh configuration framework with blazing speed and modular extensions
    • Powerlevel10k - A theme for Zsh
    • Pure - A pretty, minimal and fast ZSH prompt
  • Shell Tutorials
    • LinuxCommand.com - A site containing a book and other material designed to help you learn how to use the Linux command line

Terminal Emulators

  • Terminal Emulators - A computer program that emulates a video terminal within some other display architecture
    • kitty - The fast, feature-rich, GPU based terminal emulator
    • Rio Terminal - A modern terminal for the 21st century
    • Alacritty - A modern terminal emulator that comes with sensible defaults, but allows for extensive configuration
    • Terminator - A terminal emulator like xterm, gnome-terminal, konsole, etc.
    • Windows Terminal - The new Windows Terminal and the original Windows console host
    • Mintty - A terminal emulator for Cygwin, MSYS or Msys2, and derived projects, and for WSL
    • xterm - A terminal emulator for the X Window System
  • Technologies & Protocols
    • Pseudoterminal - A pair of pseudo-devices that provides a terminal-like interface used by programs to emulate a terminal
    • ANSI escape code - A standard for in-band signaling to control the cursor location, color, font styling, and other options on video text terminals
    • kitty keyboard protocol - A protocol for terminals to send keyboard events to applications running in them
    • iTerm2 image protocol - A custom escape code to display images inline in the terminal
  • Fonts
    • Noto Fonts - A global font collection for all modern and ancient languages
    • Nerd Fonts - A project that patches developer targeted fonts with a high number of glyphs
    • Cascadia Code - A fun, new monospaced font that includes programming ligatures

Terminal Utilities

  • Multiplexers & Session Management
    • screen - A full-screen window manager that multiplexes a physical terminal between several processes
    • tmux - A terminal multiplexer
    • byobu - A GPLv3 open source text-based window manager and terminal multiplexer
    • zellij - A terminal workspace with batteries included
    • asciinema - A free and open source solution for recording terminal sessions and sharing them on the web
  • Console File Managers

Linux or Unix-like environments on Windows

  • WSL - A feature of Windows that enables you to run a GNU/Linux environment on your Windows machine without the need for a separate virtual machine or dual booting
  • Git for Windows - A lightweight, native set of tools that bring the full feature set of the Git SCM to Windows
  • MSYS2 - A collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software

Scripting Languages

Python

  • Python - A programming language that lets you work quickly and integrate systems more effectively
    • Core Features
      • Python import system - The mechanism that organizes Python code into modules and packages, facilitating code reuse and structuring large applications
      • Special method names - The methods, identified by leading and trailing double underscores, that allow classes to implement operations invoked by special syntax
      • Type Hints - A standard syntax for type annotations of variables, function parameters, and return values, used for static analysis
        • Mypy - An optional static type checker for Python that aims to combine the benefits of dynamic typing and static typing
      • f-string - A type of string literal, prefixed with 'f' or 'F', which allows embedding expressions inside string constants using minimal syntax
      • with statement - A statement that simplifies exception handling by encapsulating standard uses of try/finally statements for resource management
        • contextlib - A module that provides utilities for common tasks involving the with statement
      • Generators - A simple and powerful way to create iterators, defined using a function with the yield statement
      • Decorators - A syntax using the '@' symbol for transforming functions and methods, often used for modifying or enhancing them non-intrusively
      • Coroutine - A specialized generator function, defined with async def, that can suspend and resume its execution, enabling cooperative multitasking
      • Lambda - A small anonymous function defined using the lambda keyword, restricted to a single expression
      • Data Classes - A module and decorator providing a concise way to create classes primarily used to store data, automatically generating special methods
      • Pattern Matching - A feature providing functionality similar to switch statements, allowing matching of values against complex patterns including sequences, mappings, and object structures
      • Unpacking Operator - The extended usages of the * iterable unpacking operator and ** dictionary unpacking operators to allow unpacking in more positions, an arbitrary number of times, and in additional circumstances
    • Key Libraries
      • pathlib - The module offering classes representing filesystem paths with semantics appropriate for different operating systems
      • dotenv - A library that reads key-value pairs from a .env file and can set them as environment variables
      • Pydantic - A data validation and settings management library for Python

JavaScript & TypeScript

  • JavaScript/ECMAScript - The standard that defines the ECMAScript Language
    • Module System
      • CommonJS - A project with the goal of specifying an ecosystem for JavaScript outside the browser
      • ES modules - The official standard format to package JavaScript code for reuse
      • UMD - The patterns for Universal Module Definition for use in the browser, and in AMD and CommonJS-based systems
    • Core Features
      • Event-driven - A programming paradigm in which the flow of the program is determined by events such as user actions, sensor outputs, or messages from other programs
      • Spread and rest operators - The syntax that allows an iterable such as an array expression or string to be expanded in places where zero or more arguments or elements are expected
      • Generator - An object returned by a generator function and it conforms to both the iterable protocol and the iterator protocol
    • Key Libraries
      • Lodash - A modern JavaScript utility library delivering modularity, performance & extras
      • dax - Cross-platform shell tools for Deno and Node.js inspired by zx
      • Bun Shell - A built-in shell-like interface for running shell scripts
      • zx - A tool for writing better scripts
    • Typescript - A strongly typed programming language that builds on JavaScript, giving you better tooling at any scale
      • Union Types - A way to combine multiple types into one
      • Type Aliases - A name for any type
      • Type Assertions - A way to tell the compiler 'trust me, I know what I’m doing'
      • Mapped Types - A generic type which uses a union of PropertyKeys to iterate through keys of another type to create a new one
      • Nominal typing techniques - A way to simulate nominal types in TypeScript, which by default has a structural type system
      • Declaration Files - The files where you define the types for a library
      • Decorators - A special kind of declaration that can be attached to a class declaration, method, accessor, property, or parameter
    • TS Type Utilities
  • Tutorials & Practices
    • 33 JS Concepts - A repository with articles about 33 concepts every JavaScript developer should know
    • JS Project Guidelines - A set of best practices for JavaScript projects
    • Callback Hell - The nesting of callback functions when dealing with asynchronous logic
    • NodeSchool - A set of open source workshops that teach web software skills
    • Node.js Best Practices - A summary and curation of the top-ranked content on Node.js best practices

Go, Ruby, Perl & Others

  • Go - An open-source programming language supported by Google
    • Core Features
      • Go Modules - The dependency management system for the Go programming language
      • Defer, panic and recover - The powerful but unusual control-flow mechanisms in Go
      • Pointer receiver - A method that operates on a pointer to the type, allowing it to modify the value to which the receiver points
      • Interface - A type defined as a set of method signatures
      • Goroutine - A lightweight thread managed by the Go runtime
      • Channel - A typed conduit through which you can send and receive values with the channel operator, <-
    • Libraries
      • lo - A Lodash-style Go library
      • fp-go - A collection of Functional Programming helpers
      • shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs
    • Tools
    • Tutorials
      • Effective Go - A document that gives tips for writing clear, idiomatic Go code
      • Go by Example - A hands-on introduction to Go using annotated example programs
      • Learn Go with tests - A resource that teaches the fundamentals of Go, including testing, on the first day
  • Ruby - A dynamic, open source programming language with a focus on simplicity and productivity
    • Core Features
      • Percent notation
      • block, yield, proc, lambda
      • Dynamic method definition
      • instance_eval
    • Libraries
      • io-event - The low level cross-platform primitives for constructing event loops
      • Async - A composable asynchronous I/O framework for Ruby based on io-event
  • Perl - A family of two high-level, general-purpose, interpreted, dynamic programming languages
    • Core Features
      • Special variables - The variables that have a special meaning to Perl
      • Built-in regex - The syntax of regular expressions in Perl
      • Context - A property of expressions that determines how they behave when evaluated
      • Scalar values - A single item of data
        • Reference - A scalar data type that 'points' to another piece of data
      • Quote-like operators - A set of generic quoting operators
      • I/O operators - The operators used for input and output operations, such as reading from a filehandle
  • Groovy (for Jenkins/Gradle) - A powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform
  • Lua (for NGINX/Neovim) - A powerful, efficient, lightweight, embeddable scripting language
  • Emacs Lisp - The programming language used to extend and customize the Emacs text editor
    • S-expression - A notation for nested list (tree-structured) data
    • Homoiconicity - A property of some programming languages in which the primary representation of programs is also a data structure in a primitive type of the language itself

CLI/TUI Development

  • Bash
    • built-in getopts etc. - A set of commands that are part of the shell itself
    • tput - A command to initialize a terminal or query the terminfo database
    • dialog - A program that can be used to create nice user interfaces for shell scripts
    • Gum - A tool for glamorous shell scripts
    • FIGlet - A program for making large letters out of ordinary text
    • lolcat - A program that concatenates files, or standard input, to standard output and adds rainbow coloring
    • cfonts - A tool to print sexy fonts in your console
  • Perl
    • Getopt::Long - A module that implements an extended getopt function called GetOptions()
    • Term::ANSIColor - A module to colorize text using ANSI escape sequences
    • Text::ANSITable - A module to create a formatted table using ASCII characters and ANSI colors
  • Python
    • argparse - The module for parsing command-line arguments
    • getopt - The C-style parser for command line options
    • click - A Python package for creating beautiful command line interfaces in a composable way with as little code as necessary
    • Colorama - A simple cross-platform API for printing colored terminal text from Python
    • Typer - A library for building CLI applications that users will love using and developers will love creating
    • Asciimatics - A package that provides a cross-platform, full-screen terminal API for building text-based user interfaces
    • Python Prompt Toolkit - A library for building powerful interactive command line and terminal applications in Python
    • Urwid - A console user interface library for Python
    • Textual - A Rapid Application Development framework for Python, built by Textualize.io
      • Rich - A Python library for rich text and beautiful formatting in the terminal
  • Ruby
    • OptionParser - A class for command-line option analysis
    • colorize - A gem for colorizing text using ANSI escape sequences
    • TTY - A suite of gems that provide a wide range of tools for building interactive command-line applications
    • thor - A toolkit for building powerful command-line interfaces
  • Javascript
    • yargs - A library for building interactive command line tools by parsing arguments and generating an elegant user interface
    • minimist - A tool to parse argument options
    • chalk - A terminal string styling tool
    • cli-progress - An easy to use progress-bar for command-line/terminal applications
    • FIGLet.js - A FIG Driver written in JavaScript which aims to fully implement the FIGfont spec
    • gradient-string - A library for creating beautiful gradients in terminal output
  • Go
    • Fang - The CLI starter kit. A small, experimental library for batteries-included Cobra applications
    • Bubble Tea - A powerful little TUI framework
    • Huh - A simple, powerful, and elegant TUI library for building terminal forms and prompts
    • pflag - A drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags
    • color - A package for Go that lets you use colorized outputs in terms of ANSI escape sequences
    • Cobra - A framework for creating powerful modern CLI applications
    • cli - A simple, fast, and fun package for building command line apps in Go
    • viper - A complete configuration solution for Go applications
    • Wish - A tiny SSH server for your programs
    • Wishlist - An SSH directory for your private hostkeys and favorite SSH commands
  • Rust
    • clap - A full featured, fast Command Line Argument Parser for Rust
    • Ratatui - A Rust library for cooking up delicious terminal user interfaces
    • R3BL - A suite of libraries for building modern terminal apps with Rust
    • Ansic - A modern, efficient and compile time ansi macro and utilities crate for Rust
  • C
    • ncurses - A programming library providing an application programming interface (API) that allows the programmer to write text-based user interfaces in a terminal-independent manner

Integrated Development Environment (IDE)

  • GUI-based
    • Visual Studio Code - A lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux
      • GitLens - An extension that supercharges the Git capabilities built into Visual Studio Code
      • Git Graph - An extension to view a Git Graph of your repository, and perform Git actions from the graph
    • AI Assistance Plugins
      • GitHub Copilot - The AI pair programmer that helps you write code faster and with less work
      • Gemini Code Assist - An AI-powered assistant for the entire development lifecycle
      • Amazon Q Developer - The most capable generative AI-powered assistant for software development
      • Cline - An open source AI coding agent that brings frontier AI models directly to your VS Code editor
    • AI-integrated IDEs
      • Cursor - A new, intelligent IDE, empowered by seamless integrations with AI
      • Winfsurf - Where the work of developers and AI truly flow together, allowing for a coding experience that feels like literal magic
      • Zed - A next-generation code editor designed for high-performance collaboration with humans and AI
  • Terminal-based
    • Vim - A highly configurable text editor built to make creating and changing any kind of text very efficient
      • motion and operators - The commands that move the cursor and the commands used to delete or change text
      • vim-plug - The de-facto standard plugin manager for Vim
      • NERDTree - A tree explorer plugin for vim
    • Neovim - Hyperextensible Vim-based text editor
      • LazyVim - A Neovim setup powered by 💤 lazy.nvim to make it easy to customize and extend your config
        • lazy.nvim - A modern plugin manager for Neovim
      • neo-tree.nvim - A Neovim plugin to manage the file system and other tree like structures
      • colorful-winsep.nvim - A colorful window separator for Neovim
      • mason.nvim - A Neovim plugin that allows you to easily manage external editor tooling such as LSP servers, DAP servers, linters, and formatters through a single interface
      • telescope.nvim - A highly extendable fuzzy finder over lists
      • flash.nvim - A plugin that helps you navigate your code with search labels, enhanced character motions and Treesitter integration
      • nvim-llama - A simple interface to Ollama for Neovim
    • Helix - A modal editor, meaning it has different modes for different tasks
    • GNU Emacs - An extensible, customizable, free/libre text editor — and more
      • MELPA - Milkypostman's Emacs Lisp Package Archive
      • doomemacs - An Emacs framework for the stubborn martian hacker
      • neotree - A tree explorer for Emacs
      • Treemacs - A tree layout file explorer for Emacs
      • Spacemacs - A community-driven Emacs distribution
    • Tutorials and Cheet Sheets

CLI/Coding Assistance

  • Language Servers
    • LSP - The protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references etc.
    • pyright - A static type checker and language server for Python
      • Pylance - An extension that works alongside the Python extension in Visual Studio Code to provide performant language support
    • Ruby LSP - An opinionated language server for Ruby
    • TypeScript Language Server - A standalone TypeScript and JavaScript language server
    • Gopls - The official language server for the Go language
    • rust-analyzer - A language server for the Rust programming language
    • Eclipse JDT Language Server - A Java language server based on the Eclipse JDT
  • Semantic Code Retreival
    • Serena - A tool for semantic code retrieval
  • CLI Assistants
    • Mods - A simple tool that helps you write programs with the assistance of AI
    • gptcli - A command-line interface for ChatGPT
    • ShellGPT - A command-line productivity tool powered by AI large language models (LLM)

Coding Agents

  • CLI Coding Agents
    • Claude Code - A tool that allows developers to use Anthropic's AI models, Opus 4.1 and Sonnet 4, directly in their terminal
    • OpenAI Codex CLI - A command-line interface for a model that translates natural language to code
    • Gemini CLI - An open-source AI agent that brings the power of Gemini directly into your terminal
    • Crush - The glamourous AI coding agent for your favourite terminal 💘
  • Autonomous Coding Agents
    • Devin - The AI Software Engineer
    • Jules - An Autonomous Coding Agent
    • Antigravity - An agentic development platform
    • replit agent - The first developer agent that can learn and work alongside you in your IDE
  • Standards
    • Agents.md - An open standard for defining and running AI agents
  • Methodologies
    • Spec-driven development (SDD) - A development methodology where you start with a specification that acts as a contract for how your code should behave
    • SDD Tools
      • spec-kit - A toolkit to help you get started with Spec-Driven Development
      • Kiro - An AI IDE designed for the entire development process, from prototype to production
  • Platforms
    • OpenHands - A platform for software development agents powered by AI
  • Benchmarks
    • SWE-bench - A benchmark for evaluating large language models on real world software issues collected from GitHub