Core utilities are the basic, fundamental tools of a GNU/Linux system. On Arch Linux they are found in the group. This article provides an incomplete overview of them, links their documentation and describes useful alternatives. Most core utilities are traditional Unix tools (see Heirloom) and many were standardized by POSIX but have been developed further to provide more features.
Most command-line interfaces are documented in man pages, utilities by the GNU Project are documented in Info manuals, some shells provide a
help command for shell builtin commands. Additionally most commands print their usage when run with the
The following table lists important commands, Arch Linux users should be familiar with. See also.
|shell built-ins||cd||change directory|
|cat||concatenate files to stdout||info,|
|rmdir||remove empty directory||info,|
|rm||remove files or directories||info,||shred|
|cp||copy files or directories||info,|
|mv||move files or directories||info,|
|ln||make hard or symbolic links||info,|
|chown||change file owner and group||info,|
|chmod||change file permissions||info,|
|dd||convert and copy a file||info,|
|df||report file system disk space usage||info,|
|GNU||less||terminal pager||terminal pagers|
|GNU||find||search files or directories||info, GregsWiki,||#find alternatives|
|GNU||diff||compare files line by line||info,||#diff alternatives|
|GNU||grep||print lines matching a pattern||info,||#grep alternatives|
|GNU||sed||stream editor||info, one-liners,|
|GNU||awk||pattern scanning and processing language||info,||, AUR|
|lsblk||list block devices|
|mount||mount a filesystem|
|umount||unmount a filesystem|
|kill||terminate a process||,|
|pgrep||look up processes by name or attributes|
|ps||show information about processes||,|
|free||display amount of free and used memory|
Preventing data loss
rm, mv, cp and shell redirections happily delete or overwrite files without asking. rm, mv and cp all support the
-i flag to prompt the user before every removal / overwrite. Some users like to enable the
-i flag by default using aliases. Such shell settings are however dangerous because you get used to them, resulting in potential data loss when you use another system or user that does not have them. The best way to prevent data loss is to do backups.
This table lists core utilities that often come in handy.
|shell built-ins||alias||define or display aliases|
|type||print the type of a command|
|time||time a command|
|GNU||tee||read stdin and write to stdout and files||info,|
|mktemp||make a temporary file or directory||info,|
|od||dump files in octal and other formats||info,||vim's,|
|uniq||report or omit repeated lines||info,|
|comm||compare two sorted files line by line||info,|
|head||output the first part of files||info,|
|tail||output the last part of files, or follow files||info,|
|wc||print newline, word and byte count||info,|
|GNU||strings||print printable characters in binary files||info,|
|GNU||iconv||convert character encodings|
|file||guess file type|
Thepackage provides useful tools like that are missing from the GNU coreutils.
- fd — Simple, fast and user-friendly alternative to find. Ignores hidden and
.gitignore'd files by default.
Install the package. The package contains an
updatedb.timer unit, which invokes a database update each day. The timer is enabled right after installation, start it manually if you want to use it before reboot. You can also manually run updatedb as root at any time. By default, paths such as
/mnt are ignored, so locate may not discover files on external devices. See for details.
The locate command is a common Unix tool for quickly finding files by name. It offers speed improvements over the find tool by searching a pre-constructed database file, rather than the filesystem directly. The downside of this approach is that changes made since the construction of the database file cannot be detected by locate.
Before locate can be used, the database will need to be created. To do this, execute
updatedb as root.
Whiledoes not provide a word-wise diff, several other programs do:
- git diff can do a word diff with
--no-indexit can also be used for files outside of Git working trees.
- dwdiff — A word diff front-end for the diff program; supports colors.
- GNU wdiff — A wordwise implementation of GNU diff; does not support colors.
- cwdiff — A GNU wdiff wrapper that colorizes the output.
- https://github.com/junghans/cwdiff || AUR, AUR
The following three tools aim to replace grep for code search. They do recursive search by default, skip binary files and respect
- ack — A Perl-based grep replacement, aimed at programmers with large trees of heterogeneous source code.
- ripgrep (rg) — A search tool that combines the usability of ag with the raw speed of grep.
- The Silver Searcher (ag) — Code searching tool similar to Ack, but faster.
And then there is alsoAUR, a multiline grep.