Terminal file management frequently involves balancing feature richness against speed and system resource consumption. While full-featured dual-pane graphical managers or heavyweight Python and Node-based terminal applications provide pleasant interfaces, their noticeable startup latency, heavy dependency trees, and sluggish directory parsing on resource-constrained embedded devices, remote servers, or massive storage arrays can hinder sysadmin productivity. nnn (or n³) is an ultra-fast, feature-packed, zero-config terminal file manager written in pure C. Operating with virtually zero memory overhead (often under 3.5 MB of RAM), nnn delivers lightning-quick directory traversal, instantaneous disk analysis, file batch renaming, and extensive plugin support directly from the Linux command line.
What Is nnn and Why Use It?
nnn was engineered to adhere strictly to the Unix philosophy: do one thing exceptionally well, stay as lightweight as possible, and integrate seamlessly with existing standard command-line tools.
Key architectural highlights of nnn include:
- Sub-Millisecond Speed: Launches instantaneously and traverses directories containing hundreds of thousands of files without stutter or lag.
- Minimalist Footprint: Highly portable binary requiring negligible system memory, ideal for low-spec VPS instances and Raspberry Pi systems.
- Multiple Contexts (Workspaces): Switch between four independent directory contexts (tabs) on the fly using number keys
1through4. - Powerful Plugin Architecture: Extend functionality with non-intrusive shell plugins for image previews (via kitty/sixel), live fuzzy search, Git integration, and cloud upload.
- Built-In Disk Usage Mode: Instantly analyse directory disk consumption without spawning separate
duorncduprocesses.
Installing nnn on Linux
nnn is packaged across all major Linux distributions and can also be compiled easily from source.
Method 1: Installing via Native Package Managers
# Debian / Ubuntu
sudo apt update
sudo apt install nnn -y
# Arch Linux
sudo pacman -S nnn
# Fedora / RHEL
sudo dnf install nnn -y
Method 2: Installing Pre-Compiled Release Binaries
To ensure you have the latest stable build compiled with extended terminal mouse and Nerd Font support, download the release package directly from GitHub:
NNN_VER=$(curl -s "https://api.github.com/repos/jarun/nnn/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -Lo nnn.tar.gz "https://github.com/jarun/nnn/releases/download/v${NNN_VER}/nnn-v${NNN_VER}.tar.gz"
tar -xzf nnn.tar.gz
sudo mv nnn /usr/local/bin/
rm nnn.tar.gz
Confirm that the binary is active:
nnn -V
Navigating Directories with nnn
Launch the manager by typing nnn in your terminal:
nnn
Navigation in nnn is designed around intuitive, single-key strokes (supporting both standard Arrow keys and classic vi motion keys):
korUp Arrow: Move cursor up.jorDown Arrow: Move cursor down.lorRight Arrow(orEnter): Open file or enter directory.horLeft Arrow: Navigate to parent directory./: Filter active directory contents in real time as you type.q: Quit nnn.
Working with Contexts (Tabs)
nnn allows you to navigate up to four concurrent directory locations without opening additional terminal windows:
- Press
1,2,3, or4to switch directly between the four independent browsing contexts. - Press
Tabto cycle sequentially between active contexts.
Managing Files: Copying, Moving, and Deleting
File operations in nnn follow a lightweight selection workflow:
- Hover over a file or folder and press
Spaceto select it. (Pressato select all items in the directory). - Navigate to your destination directory or switch to another context tab.
- Press
pto paste (copy) the selected items into the current directory. - Press
vto move the selected items. - Press
xto delete the selected items (prompts for confirmation).
Enabling Disk Usage Analysis Mode
Instead of launching ncdu to find disk hogs, toggle nnn’s native disk usage mode:
- Press
dto toggle disk usage mode on and off. - nnn immediately calculates recursive directory sizes and sorts subdirectories by occupied megabytes and gigabytes in descending order.
Configuring Shell Integration (CD on Quit)
By default, when you exit a subshell program like nnn, your parent terminal remains in whichever directory you started in. To ensure your terminal changes to the last directory browsed upon exiting nnn, add the official shell wrapper function to your ~/.bashrc or ~/.zshrc:
# Add nnn wrapper to ~/.bashrc
cat << 'EOF' >> ~/.bashrc
n() {
[ "${NNNLVL:-0}" -eq 0 ] || {
echo "nnn is already running"
return
}
export NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
nnn "$@"
if [ -f "$NNN_TMPFILE" ]; then
. "$NNN_TMPFILE"
rm -f "$NNN_TMPFILE" > /dev/null
fi
}
EOF
source ~/.bashrc
Now, simply launch the file manager with n, and exiting with q will leave your shell prompt parked inside your final visited folder.
Adopting nnn delivers unmatched file browsing velocity, combining Spartan efficiency with modern terminal versatility.