Terminal


  • A program that provides a text-based window where you use the Shell to interact with OS

Fix unknown terminal type errors

infocmp -x xterm-ghostty | ssh -i ~/.ssh/master_key xinyang@<ssh_server_endpoint> "tic -x -"

This command takes your local Ghostty terminal definition and installs it on your remote server, so that when you SSH in using Ghostty, the remote machine knows how to handle it (correct colors, key sequences, etc.) instead of throwing unknown terminal type errors.

iterm2

Termius

Important

Install Termius as a dmg from the official website instead of the App Store, so you can access your local machine from the Termius app. For more information, view here.

Terminal Multiplexer


  • Tools that let you manage multiple shells inside a single Terminal window
  • Useful for running long processes, splitting panes, and detaching/reattaching sessions

tmux

  • My daily driver for multiplexing
  • Install tmux
  • Key features:
    • Split windows into panes
    • Detach/reattach sessions
    • Persistent workflows (survive SSH disconnects and preserve command state like lazygit)

Zellij

  • A modern Rust-based multiplexer with built-in layouts and plugin support
  • Install with cargo install --locked zellij

Alternatives

  • GNU Screen – the OG multiplexer, everywhere by default, but feels dated
  • Byobu – a friendlier wrapper around tmux/Screen, adds status bar and easier bindings
  • WezTerm – GPU-accelerated terminal emulator with built-in multiplexer mode
  • abduco + dvtm – minimalist combo, lightweight but niche

Shell


  • The program that lets you control your OS using text commands

/bin/sh vs /bin/bash

/bin/sh is the POSIX shell - minimal, basic scripting features only. /bin/bash is the Bourne Again Shell - a superset of sh with extras like:

  • Tab completion
  • Arrow key history navigation
  • Bash script syntax like conditionals, {1..10} brace expansion and $() nesting etc.

On Debian, /bin/sh is symlinked to dash, which is even more stripped down than traditional sh. For interactive use, you almost always want bash. You can configure it with sudo chsh -s /bin/bash <username>.

ZSH

Shell Enhancement


ohmyzsh