User:Larivact/old-drafts/Core utilities
Core utilities are the basic, fundamental tools of a GNU/Linux system. On Arch Linux they are found in the base 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 --help
flag.
Essentials
The following table lists important commands, Arch Linux users should be familiar with. See also intro(1).
Package | Command | Description | Documentation | Alternatives |
---|---|---|---|---|
shell built-ins | cd | change directory | cd(1p) | |
GNU coreutils | ls | list directory | ls(1), info | exa, tree |
cat | concatenate files to stdout | cat(1), info | tac(1) | |
mkdir | make directory | mkdir(1), info | ||
rmdir | remove empty directory | rmdir(1), info | ||
rm | remove files or directories | rm(1), info | shred | |
cp | copy files or directories | cp(1), info | ||
mv | move files or directories | mv(1), info | ||
ln | make hard or symbolic links | ln(1), info | ||
chown | change file owner and group | chown(1), info | ||
chmod | change file permissions | chmod(1), info | ||
dd | convert and copy a file | dd(1), info | ||
df | report file system disk space usage | df(1), info | ||
GNU tar | tar | tar archiver | tar(1), info | archivers |
GNU less | less | terminal pager | less(1) | terminal pagers |
GNU findutils | find | search files or directories | find(1), info, GregsWiki | #find alternatives |
GNU diffutils | diff | compare files line by line | diff(1), info | #diff alternatives |
GNU grep | grep | print lines matching a pattern | grep(1), info | #grep alternatives |
GNU sed | sed | stream editor | sed(1), info, one-liners | |
GNU gawk | awk | pattern scanning and processing language | gawk(1), info | nawk, mawkAUR |
util-linux | lsblk | list block devices | lsblk(8) | |
mount | mount a filesystem | mount(8) | ||
umount | unmount a filesystem | umount(8) | ||
su | substitute user | su(1) | sudo | |
kill | terminate a process | kill(1) | pkill(1), killall(1) | |
procps-ng | ps | show information about processes | ps(1) | top(1), htop |
free | display amount of free and used memory | free(1) |
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.
Nonessentials
This table lists core utilities that often come in handy.
Package | Command | Description | Documentation | Alternatives |
---|---|---|---|---|
shell built-ins | alias | define or display aliases | alias(1) | |
type | print the type of a command | type(1) | which(1) | |
time | time a command | time(1) | ||
GNU coreutils | tee | read stdin and write to stdout and files | tee(1), info | |
mktemp | make a temporary file or directory | mktemp(1), info | ||
od | dump files in octal and other formats | od(1), info | hexdump(1), vim's xxd(1) | |
sort | sort lines | sort(1), info | ||
uniq | report or omit repeated lines | uniq(1), info | ||
comm | compare two sorted files line by line | comm(1), info | ||
head | output the first part of files | head(1), info | ||
tail | output the last part of files, or follow files | tail(1), info | ||
wc | print newline, word and byte count | wc(1), info | ||
GNU binutils | strings | print printable characters in binary files | strings(1), info | |
GNU glibc | iconv | convert character encodings | iconv(1) | recode |
file | file | guess file type | file(1) |
The moreutils package provides useful tools like sponge(1) that are missing from the GNU coreutils.
Alternatives
Alternatives to the core utilities in the base group are BusyBox, the Heirloom Toolchest, 9base, sbase-gitAUR and ubase-gitAUR.
find alternatives
- fd — Simple, fast and user-friendly alternative to find. Ignores hidden and
.gitignore
'd files by default.
locate
Install the mlocate 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 /media
and /mnt
are ignored, so locate may not discover files on external devices. See updatedb(8) 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.
See also How locate works and rewrite it in one minute.
diff alternatives
While diffutils does not provide a word-wise diff, several other programs do:
- git diff can do a word diff with
--color-words
, using--no-index
it 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.
grep alternatives
The following three tools aim to replace grep for code search. They do recursive search by default, skip binary files and respect .gitignore
.
- 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 also mgrepAUR, a multiline grep.