图片预览等部分功能以插件或 misc/tools 形式提供,需另行配置;README 未说明默认配置与端口等细节,需查阅 wiki 文档
clifm
leo-arch活跃维护一款用 C 写的、类 shell 的命令行终端文件管理器,支持自动补全、批量重命名、文件预览和 fzf 集成,适合习惯在终端里高效浏览和管理文件的人。
💾 The shell-like, command-line terminal file manager
README 未给出可直接复制的安装命令,仅链接到 Installation 章节README 未说明具体硬件要求,仅称极其轻量、可在老旧硬件和仅支持 8 色的 VT102 终端上运行
纯命令行终端文件管理器,用 shell 式命令操作文件系统,不依赖 GUI 或 TUI
一款用 C 写的、类 shell 的命令行终端文件管理器,支持自动补全、批量重命名、文件预览和 fzf 集成,适合习惯在终端里高效浏览和管理文件的人。
核心能力
- 用 ELN 编号和短命令直接操作文件
- 支持书签、标签、过滤、搜索与批量重命名
- 内置目录跳转器,按访问频率快速切换目录
- 提供文件预览、图片预览与归档压缩支持
- 支持插件、工作区与隐身模式扩展
容易踩的坑
- v1.29最新正式版2026-09-18 · 2026-09-18 20:47 UTC
Clifm 1.29 (Stan Stanman)
Get distro-specific binary packages from the OpenSUSE Build System
BUG FIXES:
- Symbolic links not properly sorted when sorting by size.
- Long-view: link to dir without access shows size '0B', while dir wihtout access shows '?'.
- Long-view/full-dir-size: dirs without access (size '?') are sorted as if their size were 0.
- The 'zp' command, unlike 'view', does not allow specifying file names in the command line.
- No overwrite prompt when duplicate names are in the source list and not in the destination directory.
- Relative symlinks not properly resolved by 'p'/'pp'/'--stat'.
- Bulk-link ('bl' command) does not honor the 'LinkCreationMode' option.
- No information for files with timestamps dated before the Unix Epoch.
- Almost unusable/unresponsible when selecting thousands of files.
- When compiled in POSIX-mode, '--stat' always fails to retrieve the file's MIME type.
- If $NO_COLOR (system-wide) is set, there's no way to override this specifically for Clifm. You can now force colorization using either '--color=always', or setting $CLIFM_FORCE_COLOR to either '8', '16', '256', '24bit', or 'truecolor'.
- Files deselected after running 't sel', even if the operation was cancelled (the user entered 'no' in the confirmation prompt).
- '--stat' does not honor '--unicode'.
- The prompt displays negative error codes on Haiku.
- Some keybindings do not work after being set with the 'kb bind' command.
- Commands using fused parameters with ranges starting with 10, 20, 30, etc do not work. E.g., 's10-12'.
- When selections are modified from a second instance, the prompt indicator is updated, but not the file list. A second screen reload is required.
- Unable to select a file whose name contains an embedded newline char (yes, these names are an abomination, but they're legal and a file manager should be able to handle them).
- Filenames containing invalid UTF-8 chars break suggestions.
- Filenames containing invalid UTF-8 chars break the interactive rename prompt ('m' command).
- Wrong behavior when previewing files whose name starts with a dash (-).
- Wrong colorization when accepting the first suggested word (Alt+f).
- File type filters not working with regex searches (e.g., '/.*.d$ -d /etc').
- Completions/suggestions not working for starting path in the search function ('/QUERY dir/').
- ft: quoted filter ignores negation.
NEW FEATURES/IMPROVEMENTS:
- Fast-magic: add file type detection for text files (mostly source-code files: almost 40 languages detected!).
- Allow ELN ranges for single files (e.g., '1-1' or '1-' where there is only one file).
- Allow overriding z-commands with custom command names (aliases or actions). Completions/suggestions for overridden commands are disabled.
- Add 'skip' and 'skipall' options to the overwrite prompt (c/m commands) (replacing the previous functions of 'no' and 'none', which now copy files, but renaming them). Consult the manpage or run 'c --help' for more information.
- Document z-commands. Press z for the list of commands or consult the manpage for more information.
- Add opening apps (f3d, prusa-slicer, openscad) for 3D-Graphic files (stl,step,3mf,iges,scad). Update your mimelist.clifm file.
- Use the '-r' switch to recursively select files. E.g., 's *.png -r', or 's *.png -r dir/' to start from the directory 'dir'. To evaluate the selection pattern as a regular expression (instead of as a wildcard), use '-R'.
- Recursive search is now made with '-r' (the old '-x' is still supported for backward compatibility).
- Allow using all available answers for the overwrite prompt as default answer.
- The new default answer
- v1.282026-05-28 · 2026-05-28 02:34 UTC
查看更新说明
Clifm 1.28 (Rubber Chicken)
Get distro-specific binary packages from the OpenSUSE Build System
Bug fixes :beetle: :bug:
- When mounting a remote, a directory named
"is created in the current directory ifMountpointis set to the empty string (""). - Purged entries (
j --purge) are not removed from the jump database. - File list refreshed after command execution without any reason.
- If compiled without
libmagicsupport (_NO_MAGIC), MIME type detection fails in stealth-mode. - Terminal title not set in some terminals (e.g., wezterm).
FILE APPfails with messageSuccess.- Success error message when trash files exist but are not directories in stealth-mode.
- Cannot unmount device with the
mediacommand when the user is in the mountpoint. ac: Cannot create hidden archive (starting with dot) if no extension is providedDirIconColor, in the color scheme file, does not support short color sequences (including hex).DirIconColoris ignored for directories with special icons.- The
ckey in the file pager stopped working. - Alt+w (in virtual directories) toggles to the current mode the first time it is pressed.
MaxNameLenignored when running without ELNs in long view.- When not sorting by time (and
TimeFollowsSortis enabled), the long view always shows modification time, ignoring the value set for the time field inPropFields. p/ppcommand: Key values for extended attributes are never printed (only the key itself).- Duplicated entries when listing keybindings (
kbcommand). ~/dir/query<TAB>fails to display previews.~/.config/clifm/mime.typesfile ignored when running with--openor--preview.- Not properly handling
.and..as starting paths (e.g.clifm .).
New features/Improvements :sunglasses: :godmode:
- When creating an archive using zstandard (
ac FILESand thenarchive.zstas archive name), archive files first with tar(1) and then compress the archive with zstandard, generating thus a.tar.zstcompressed archive (instead of multiple compressed.zstfiles, like before). - Add a counter for total entries at the end of the jump table (
jcommand). - Colorize entries according to file type/state in the dirhist screen (
dhcommand). p/pp: do not display size for special devices (character/block), and placeDevice typeon its own line.- Automatically open .a, .ace, .ar, .arc, .cpio, .Z, .lrz files with
ad(our built-in archiver command). Update yourmimelist.clifmfile (https://github.com/leo-arch/clifm/blob/master/misc/mimelist.clifm). - More accurate MIME-type detection: Fallback to mimetype(1)/xdg-mime(1), if available (and in this precedence order), when
libmagicdoes not get conclusive results (i.e., it returnsapplication/octet-stream). - Use the built-in file type identification check (Moira) before falling back to
libmagic(very useful to improve detection speed of common file types such as PDF, PNG, MP4, etc). Disable withFastMagic=falsein the config file. - When importing MIME associations (
mm import), checkmimeinfo.cachefiles as well. - Support Shared MIME-info XML files as MIME associations file (via $CLIFM_MIMETYPES_FILE). Example:
CLIFM_MIMETYPES_FILE=/usr/share/mime/packages/freedesktop.org.xml clifm. - Add preview support for extra archive formats. Update your
preview.clifmfile (https://github.com/leo-arch/clifm/blob/master/misc/preview.clifm). - Allow auto-opening multiple files at once (provided all files to be opened are associated to the same opening ap
- When mounting a remote, a directory named
- v1.27.12026-01-10 · 2026-01-10 01:27 UTC
查看更新说明
Clifm 1.27.1
Get distro-specific binary packages from the OpenSUSE Build System
Bug fixes :beetle: :bug:
- If the
profilesdirectory cannot be read, we get NULL pointer dereferences (possibly crashing). MaxFilenameLenvalue lost after visiting a directory containing a single file.
New features/Improvements :sunglasses: :godmode:
- Add extraction message when extracting zip-based files (e.g.,
docxorodt). - Allow extracting zip-based files with bsdtar(1). Previosly, only unzip(1) and 7z(1) were used.
- Do not allow to delete the current profile (using
pf del). - Allow profile names to start with a dot.
- If the
- v1.272026-01-07 · 2026-01-07 00:50 UTC
查看更新说明
Clifm 1.27 (Pieces o'Eight)
Get distro-specific binary packages from the OpenSUSE Build System
Bug fixes :beetle: :bug:
fzfnav/BFGplugin:chafadoes not display images onfootterminal.- Filename validation not working for uppercase file type characters (e.g.
=C). - Cannot compile in OpenBSD 7.8-CURRENT (missing typedef).
- Recursive remove message not shown when removing multiple directories.
- No screen refresh after archive extraction.
../in a symlinked directory does not work whencdis omitted (autocd).- Directory names containing a dot are truncated as if they have an extension (sorting by extension already omits extensions in directory names).
- The safe names check emits warnings only for the first error, omitting the remaining ones.
dup FILEreplaces broken symlink if it is namedFILE.copy.- File colors do not match those in the file list when in light mode.
- Using incomplete ranges (
ELN-) in theuntrashscreen silently fails the second time. - Error when compiling with CLIFM_SUCKLESS.
- Cannot open files using the
mm opencommand on Windows (#354). - Garbled output (in the prompt) on slow SSH connections (#355).
- Alt-z skips
typesort in light mode. n FILE@<TAB>overrides FILE in the command line when there is a single template file.- No icon for hardlinked files.
- Wrong icon for
.afiles. - Some icons are not visible in light themed terminals.
Umaskin config does not work at startup (overridden by shell inherited value).- Filenames with embedded single UTF-8 continuation bytes are not properly handled.
- Default answer ignored after pressing Ctrl+d in confirmation prompts.
New features/Improvements :sunglasses: :godmode:
- Add
iinatovideo/audioopening apps. - Invert/toggle selections in the current directory with
sel --invert(or Shift+Tab). Note: you may need to add the keybinding yourself. Enterkb bind invert-selectionand then press Shift+Tab. - Add key bindings for workspaces 5-8 (Alt+[5-8]).
- Allow decompressing ZIP-based files (such as
.docx,.odt, and.apkfiles) via theadcommand. - Make safe filename check inform all safety warnings.
- Add leading/trailing whitespace and leading tilde check to the safe filename check.
- Validate new filenames when copying or renaming files.
- Enable/disable filenames validation when creating/renaming files (
nandmcommands respectively) using theSafeFilenamesoption in the configuration file (consult the manpage for details). - Add
swayimgsupport toimg_view.shplugin. - Import CLIFM_STAT_AUTOCMD when
Notificationsare disabled for the current prompt. - Use a more proper icon for symbolic links (oct_file_symlink_file).
- Allow
MaxFilenameLento take percentage values. E.g.,25%for 1/4 of terminal columns. MaxFilenameLendefaults now to25%. To get back the old behavior, setMaxFilenameLento20in the config file.- Avoid single-width emojis (for
emoji-icons) to prevent rendering issues.
Misc
- Manpage completions directory moved from $XDG_DATA_HOME to $XDG_CACHE_HOME.
FilesCounteroption renamed toFileCounter.- Since fzf 0.66, hiding the gutter requires adding
--gutter=' 'toFzfTabOptionsin the color scheme file (edit usingcs edit). Notice thatgutter:-1is not required anymore in the--coloroption. See https://github.com/junegunn/fzf/blob/master/CHANGELOG.md#hiding-the-gutter-column - A few changes on how state information is exported to the environment when run
- v1.26.32025-09-28 · 2025-09-28 22:41 UTC
查看更新说明
Clifm 1.26.3
Get distro-specific binary packages from the OpenSUSE Build System
Bug fixes :beetle: :bug:
- Warning prompt color is broken.
- Single character commands not recovering from warning prompt.
- Run with
-T ~/trashfile, create a file named~/trashfile2: this latter cannot be trashed. - Freeze when running non-interactively and in the background.
- Some GTK programs crash when launched from within clifm (XDG_DATA_DIRS corruption).
New features/Improvements :sunglasses: :godmode:
- Replace
--stdtab,--fzftab,--fzftab, and--smenutabby--tabmode=fzf|fnf|smenu|standard. - Prevent shell commands from leaving the terminal in an unusable state.
- Improved key binding translation support (via the keypress translation library).
- Allow the use of colon as color field separator.
Misc
- Remove
--fzytab(deprecated since 1.12.9).
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
👾 Brief description
Clifm is a shell-like, text-based terminal file manager that sits on the command line.
Some of its key features include: bookmarks, search, file selection, file tags, file filters, file previews (including image previews), bulk rename, archiving, trash, file opener, directory jumper, autocommands, workspaces, plugins, autosuggestions, specific command line expansions, and more. Consult the Features section below for a more comprehensive list.
While feature-rich, powerful, and extensible, its true strength lies in its design philosophy. Unlike traditional terminal file managers, based on the text user interface (TUI), clifm embraces the command-line interface (CLI). This means you can interact with your filesystem by typing commands directly, just as you would in a regular shell, but with greater ease, speed, and advanced capabilities.
For this reason, clifm does not need to be better: it's just different! :wink:
To get started, consult the Getting started section below.
✔️ Features
In addition to common file operations, such as copy, move, remove, etc., clifm provides the following features:
- Specific
- Really CLI-based. No GUI nor TUI at all, but just a command-line
- It can run on the kernel built-in console and even on a SSH or any other remote session
- Highly compatible with old VT102-only terminal emulators like Rxvt and Rxvt-based ones: even on a terminal with only 8 colors and no Unicode support, clifm will just work. It can run even on an old DEC-VT100 terminal!
- High performance. Incredibly lightweight and fast even on really old hardware
- Short (and even one-character) commands
- Entry list numbers (ELNs) for filenames
- Extended color codes for file types and file extensions
- File counter for directories and symlinks to directories
- Support for files attributes, extended attributes, birth time, BSD flags, and Solaris doors.
- Privacy: Zero data collection and no connection to the outside world at all
- Security: Secure environment and secure commands. See also the stealth mode section
- Navigation and file operations
- Bookmarks
- File selection (supports both glob and regular expressions, and works even across multiple instances of the program)
- File opener (supports regular expressions and is able to discern between GUI and non-GUI environments)
- File previews (including image previews)
- File tags
- File filters (including support for
.hiddenfiles) - File search (supports both glob and regular expressions)
- File templates
- Filenames sanitizer
- A Freedesktop-compliant trash system
- copy(-as), move(-as), interactive rename, and open-with functions
- Bulk operations: rename, create, remove, and create symbolic links in bulk
- File encryption/decryption (plugin)
- Archiving and compression support (including Zstandard and ISO 9660)
- Symlinks editor
- File permissions/ownership editor via the
pcandoccommands respectively - Advanced Copy support (just
cpandmvwith a nice progress bar) - Copy files to your smart phone (plugin)
- Autocommands
- Auto-cd, auto-open, and autols
- Directory jumper (similar to autojump, z.lua, and zoxide)
- Virtual directories
- Fastback (quickly change to any parent directory)
- Up to eight workspaces
- More than a dozen sort methods
- Remote filesystems management
- Mount/unmount storage devices
- Directory history map (keep in sight previous, current, and next entries in the directory history list)
- Shell
- Tab completion, with fzf integration (including file previews)
- Command line expansions (including bookmarks, selected files, tags, MIME types, and file types)
- Auto-suggestions
- Syntax highlighting
- Warning prompt (for invalid command names)
- Fused parameters for ELNs
- Fuzzy completion for filenames and paths
- Bash-like quoting system
- Shell commands execution
- Sequential and conditional commands execution
- Directory and commands history
- Glob and regular expressions (including inverse matching)
- Aliases
- Logs
- Prompt and profile commands (run commands with each new prompt or at program startup)
- Modes
- Stealth mode (also known as incognito or private mode)
- Light mode (just in case it is not fast enough for you)
- File opener (similar to
xdgand Ranger'srifle) - File previewer (similar to
pistoland Ranger'sscope.sh) - Disk usage analyzer
- File lister (ls-mode)
- Stat mode (similar to the shell command stat)
- File type identification (file-mode) (similar to
file --mime-type)
- Customization
- Misc
- Plugins
- Icons (via NerdFonts)
- Git integration
- Desktop notifications
- Unicode support.
- CD on quit and file picker functions
- A built-in pager for file listing
- Read and list files from STDIN (standard input)
For a detailed explanation of each of these features, follow the corresponding links or consult the Wiki.
🎬 Introduction video
💾 Installation
From a package manager
If running on Linux, binary packages are available for most major distributions via the OpenSUSE Build System.
From source (Linux/BSD)
Note: Dependencies are most likely already satisfied, but, in any case, consult the dependencies section.
git clone https://github.com/leo-arch/clifm.git
cd clifm
sudo make install
For more information/supported platforms, consult the installation page.
💡 Getting started
To start using clifm, you don't need to learn anything new: the usual shell commands will just work. However, there is much more than just shell commands...
✓ The help command gives you a quick introduction to clifm: once in the command prompt, enter help or ?.
✓ Type cmd<TAB> to get the list of available commands and a brief description.
✓ Type help <TAB> to get the list of available help topics. Select the one you want and press Enter.
✓ To jump into the COMMANDS section in the manpage, simply enter cmd or press F2.
✓ Press F1 to access the full manpage and F3 to access the keybindings help-page.
✓ To get help about some specific command, just enter CMD -h. For instance, s -h.
You can also take a look at our FAQ and these basic usage-examples.
For a complete description, please consult our Wiki.
[!TIP] Start clifm and just press a number (technically, an ELN or Entry List Number).
📰 What's new?
Consult the changelog file.
Support
Clifm runs on Linux, Termux (Android), FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS, Solaris/Illumos, Haiku, and Cygwin/MinGW, on x86, ARM, PowerPC, and RISC-V architectures.
License
This project is licensed GPL version 2 (or later). See the LICENSE file for details.
Contributing
Contributions are kindly welcome! Please see our contribution guidelines for details.
Community
Visit the Discussions section of this repo and let us know what you think: ideas, comments, observations and questions are always useful.
Developer
Leo Abramovich <[email protected]>.
Special thanks to all those who have contributed to this project.
