DEV Community

Christophe Colombier
Christophe Colombier

Posted on

Terminal file managers

Terminal file managers are tool you can use in command line. They are the equivalent of tools like Nautilus (gnome), Explorer (Windows)…

They allow you to manage your files. They all include navigation among folders feature, almost include things such as copy/move/delete, some are allowing you to preview/view file content.

On 2024, a terminal file manager look like this

https://github.com/sxyazi/yazi/assets/17523360/92ff23fa-0cd5-4f04-b387-894c12265cc7

Ranger

Perl, very old

GitHub logo ranger / ranger

A VIM-inspired filemanager for the console

ranger 1.9.3

Build Status latest packaged version(s)

ranger is a console file manager with VI key bindings. It provides a minimalistic and nice curses interface with a view on the directory hierarchy It ships with rifle, a file launcher that is good at automatically finding out which program to use for what file type.

screenshot

For mc aficionados there's also the multi-pane viewmode.

two panes multiple panes

This file describes ranger and how to get it to run. For instructions on the usage, please read the man page (man ranger in a terminal). See HACKING.md for development-specific information.

For configuration, check the files in ranger/config/ or copy the default config to ~/.config/ranger with ranger --copy-config (see instructions).

The examples/ directory contains several scripts and plugins that demonstrate how ranger can be extended or combined with other programs. These files can be found in the git repository or in /usr/share/doc/ranger.

A note to packagers: Versions meant for…

Support preview of images by installing a few more tools

Lf

Written in go

GitHub logo gokcehan / lf

Terminal file manager

LF

Google Groups | Doc | Wiki | #lf (on Libera.Chat) | #lf:matrix.org (with IRC bridge)

Go Build Go Report Card

lf (as in "list files") is a terminal file manager written in Go with a heavy inspiration from ranger file manager See faq for more information and tutorial for a gentle introduction with screencasts.

multicol-screenshot singlecol-screenshot

Features

  • Cross-platform (Linux, macOS, BSDs, Windows)
  • Single binary without any runtime dependencies
  • Fast startup and low memory footprint due to native code and static binaries
  • Asynchronous IO operations to avoid UI locking
  • Server/client architecture and remote commands to manage multiple instances
  • Extendable and configurable with shell commands
  • Customizable keybindings (vi and readline defaults)
  • A reasonable set of other features (see the documentation)

Non-Features

  • Tabs or windows (better handled by window manager or terminal multiplexer)
  • Builtin pager/editor (better handled by your pager/editor of choice)
  • Builtin commands for file operations (better handled by the underlying shell tools including but not limited…

Walk

Written in Go

GitHub logo antonmedv / walk

Terminal file manager

🥾 walk


walk demo

Walk — a terminal navigator.

Why another terminal navigator? I wanted something simple and minimalistic Something to help me with faster navigation in the filesystem; a cd and ls replacement. So I build walk. It allows for quick navigation with fuzzy searching, cd integration is quite simple. And you can open vim right from the walk. That's it.

Install

brew install walk
pkg_add walk
go install github.com/antonmedv/walk@latest

Or download prebuild binaries.

Put the next function into the .bashrc or a similar config:

Bash/Zsh Fish PowerShell
function lk {
  cd "$(walk "$@")"
}
Enter fullscreen mode Exit fullscreen mode
function lk
  set loc (walk $argv); and cd $loc;
end
Enter fullscreen mode Exit fullscreen mode
function lk() {
  cd $(walk $args)
}
Enter fullscreen mode Exit fullscreen mode

Now use lk command to start walking.

Usage

Key binding Description
Arrows, hjkl Move cursor
Enter Enter directory
Backspace Exit directory
Space Toggle preview
Esc

Easily switch from one folder to another

nnn, aka n^3

Can be used with (neo)vim

GitHub logo jarun / nnn

n³ The unorthodox terminal file manager

nnn
nnn - Supercharge your productivity!

Latest release Availability CircleCI Status GitHub CI Status Privacy Awareness License

nnn () is a full-featured terminal file manager. It's tiny, nearly 0-config and incredibly fast.

It is designed to be unobtrusive with smart workflows to match the trains of thought.

nnn can analyze disk usage, batch rename, launch apps and pick files. The plugin repository has tons of plugins to extend the capabilities further e.g. live previews, (un)mount disks, find & list, file/dir diff, upload files. A patch framework hosts sizable user-submitted patches which are subjective in nature.

Independent (neo)vim plugins - nnn.vim, vim-floaterm nnn wrapper and nnn.nvim (neovim exclusive).

Runs on the Pi, Termux (Android), Linux, macOS, BSD, Haiku, Cygwin, WSL, across DEs or a strictly CLI env.

(there's more)

Features

  • Quality
    • Privacy-aware (no unconfirmed user data collection)
    • POSIX-compliant, follows Linux kernel coding style
    • Highly optimized, static…




Yazi

Written in Rust, preview is available out of the box.

GitHub logo sxyazi / yazi

💥 Blazing fast terminal file manager written in Rust, based on async I/O.

Yazi logo

Yazi - ⚡️ Blazing Fast Terminal File Manager

Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience.

💡 A new article explaining its internal workings: Why is Yazi Fast?

  • 🚀 Full Asynchronous Support: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.
  • 💪 Powerful Async Task Scheduling and Management: Provides real-time progress updates, task cancellation, and internal task priority assignment.
  • 🖼️ Built-in Support for Multiple Image Protocols: Also integrated with Überzug++, covering almost all terminals.
  • 🌟 Built-in Code Highlighting and Image Decoding: Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.
  • 🔌 Concurrent Plugin System: UI plugins (rewriting most of the UI), functional plugins, custom previewer, and custom preloader; Just some pieces of Lua.

Top comments (7)

Collapse
 
moopet profile image
Ben Sinclair

I've tried using terminal file managers a few times and they rarely have a use case for me. I prefer to explicitly move, copy and rename manually from the command line - it means I have a history of what I did and I can script things.

I do use GUI file managers though, so I'm not sure where the cut-off point of usefulness/trickiness lies for me. Something about the mouse, maybe.

With TUI file managers, there's a learning curve, including expectations and side-effects. Does "D" delete or make a directory? If I forget, do I need to restore from backups? If I want to change the permissions on all the files with ".sh" as an extension, how easy is that? As soon as I find a single thing that's easier to accomplish by dropping to a shell prompt anyway, I abandon the TUI.

Collapse
 
ccoveille profile image
Christophe Colombier

I agree with you. My ideas was not to promote everyone should use a terminal file managers.

It's more about talking such a thing exists.I was surprised by the quality of yazi tool I just discovered. So, I tought I could make an article.

As with any other tools, the best tool is the one you know, the one you are used to use.

Sometimes, it's good to face new things to check if there is nothing new that could solve an issue, or something we dislike with previous tool.

Collapse
 
moopet profile image
Ben Sinclair

I've gone ahead and installed yazi and it's surprisingly simple compared to the TUI file managers I've used in the past. I might end up using it, even if just for the simple image previews.

Thread Thread
 
ccoveille profile image
Christophe Colombier

I'm happy my article helped you to try something new

Collapse
 
ajborla profile image
Anthony J. Borla

To this, already very useful list, I would like to suggest two additions, both TUI's :

Collapse
 
ccoveille profile image
Christophe Colombier

My favorite for now is yazi, it suits my need.

Collapse
 
danhof profile image
Daniel Hofman

Midnight Commander Is excellent. Otherwise, I enjoy File Browser in a Docker image.