uutils Coreutils Documentation

uutils is an attempt at writing universal (as in cross-platform) CLI utilities in Rust. It is available for Linux, Windows, Mac and other platforms.

The API reference for uucore, the library of functions shared between various utils, is hosted at docs.rs.

uutils is licensed under the MIT License.

Note: This manual is automatically generated from the source code and is a work in progress.

Installation

This is a list of uutils packages in various distributions and package managers. Note that these are packaged by third-parties and the packages might contain patches.

You can also build uutils from source.

Cargo

crates.io package

# Linux
cargo install coreutils --features unix
# MacOs
cargo install coreutils --features macos
# Windows
cargo install coreutils --features windows

Linux

Alpine

Alpine Linux Edge package

apk update uutils-coreutils

Note: Requires the edge repository.

Arch

Arch package

pacman -S uutils-coreutils

Debian

Debian package

apt install rust-coreutils
# To use it:
export PATH=/usr/lib/cargo/bin/coreutils:$PATH

Gentoo

Gentoo package

emerge -pv sys-apps/uutils-coreutils

Manjaro

Manjaro Stable package Manjaro Testing package Manjaro Unstable package

pacman -S uutils-coreutils
# or
pamac install uutils-coreutils

NixOS

nixpkgs unstable package

nix-env -iA nixos.uutils-coreutils

OpenMandriva Lx

openmandriva cooker package

dnf install uutils-coreutils

Ubuntu

Ubuntu package

apt install rust-coreutils
# To use it:
export PATH=/usr/lib/cargo/bin/coreutils:$PATH

MacOS

Homebrew

Homebrew package

brew install uutils-coreutils

MacPorts

MacPorts package

port install coreutils-uutils

FreeBSD

FreeBSD port

pkg install rust-coreutils

Windows

Winget

winget install uutils.coreutils

Scoop

Scoop package

scoop install uutils-coreutils

Alternative installers

Conda

Conda package

conda install -c conda-forge uutils-coreutils

Yocto

Yocto recipe

The uutils-coreutils recipe is provided as part of the meta-openembedded yocto layer. Clone poky and meta-openembedded, add meta-openembedded/meta-oe as layer in your build/conf/bblayers.conf file, and then either call bitbake uutils-coreutils, or use PREFERRED_PROVIDER_coreutils = "uutils-coreutils" in your build/conf/local.conf file and then build your usual yocto image.

Non-standard packages

coreutils-hybrid (AUR)

AUR package

A GNU coreutils / uutils coreutils hybrid package. Uses stable uutils programs mixed with GNU counterparts if uutils counterpart is unfinished or buggy.

Build from source

Requirements

  • Rust (cargo, rustc)
  • GNU Make (optional)

Rust Version

uutils follows Rust's release channels and is tested against stable, beta and nightly. The current Minimum Supported Rust Version (MSRV) is 1.70.0.

Building

There are currently two methods to build the uutils binaries: either Cargo or GNU Make.

Building the full package, including all documentation, requires both Cargo and Gnu Make on a Unix platform.

For either method, we first need to fetch the repository:

git clone https://github.com/uutils/coreutils
cd coreutils

Cargo

Building uutils using Cargo is easy because the process is the same as for every other Rust program:

cargo build --release

This command builds the most portable common core set of uutils into a multicall (BusyBox-type) binary, named 'coreutils', on most Rust-supported platforms.

Additional platform-specific uutils are often available. Building these expanded sets of uutils for a platform (on that platform) is as simple as specifying it as a feature:

cargo build --release --features macos
# or ...
cargo build --release --features windows
# or ...
cargo build --release --features unix

If you don't want to build every utility available on your platform into the final binary, you can also specify which ones you want to build manually. For example:

cargo build --features "base32 cat echo rm" --no-default-features

If you don't want to build the multicall binary and would prefer to build the utilities as individual binaries, that is also possible. Each utility is contained in its own package within the main repository, named "uu_UTILNAME". To build individual utilities, use cargo to build just the specific packages (using the --package [aka -p] option). For example:

cargo build -p uu_base32 -p uu_cat -p uu_echo -p uu_rm

GNU Make

Building using make is a simple process as well.

To simply build all available utilities:

make

In release mode:

make PROFILE=release

To build all but a few of the available utilities:

make SKIP_UTILS='UTILITY_1 UTILITY_2'

To build only a few of the available utilities:

make UTILS='UTILITY_1 UTILITY_2'

Installation

Install with Cargo

Likewise, installing can simply be done using:

cargo install --path . --locked

This command will install uutils into Cargo's bin folder (e.g. $HOME/.cargo/bin).

This does not install files necessary for shell completion or manpages. For manpages or shell completion to work, use GNU Make or see Manually install shell completions/Manually install manpages.

Install with GNU Make

To install all available utilities:

make install

To install using sudo switch -E must be used:

sudo -E make install

To install all but a few of the available utilities:

make SKIP_UTILS='UTILITY_1 UTILITY_2' install

To install only a few of the available utilities:

make UTILS='UTILITY_1 UTILITY_2' install

To install every program with a prefix (e.g. uu-echo uu-cat):

make PROG_PREFIX=PREFIX_GOES_HERE install

To install the multicall binary:

make MULTICALL=y install

Set install parent directory (default value is /usr/local):

# DESTDIR is also supported
make PREFIX=/my/path install

Installing with make installs shell completions for all installed utilities for bash, fish and zsh. Completions for elvish and powershell can also be generated; See Manually install shell completions.

Manually install shell completions

The coreutils binary can generate completions for the bash, elvish, fish, powershell and zsh shells. It prints the result to stdout.

The syntax is:

cargo run completion <utility> <shell>

So, to install completions for ls on bash to /usr/local/share/bash-completion/completions/ls, run:

cargo run completion ls bash > /usr/local/share/bash-completion/completions/ls

Manually install manpages

To generate manpages, the syntax is:

cargo run manpage <utility>

So, to install the manpage for ls to /usr/local/share/man/man1/ls.1 run:

cargo run manpage ls > /usr/local/share/man/man1/ls.1

Un-installation

Un-installation differs depending on how you have installed uutils. If you used Cargo to install, use Cargo to uninstall. If you used GNU Make to install, use Make to uninstall.

Uninstall with Cargo

To uninstall uutils:

cargo uninstall uutils

Uninstall with GNU Make

To uninstall all utilities:

make uninstall

To uninstall every program with a set prefix:

make PROG_PREFIX=PREFIX_GOES_HERE uninstall

To uninstall the multicall binary:

make MULTICALL=y uninstall

To uninstall from a custom parent directory:

# DESTDIR is also supported
make PREFIX=/my/path uninstall

Platform support

uutils aims to be as "universal" as possible, meaning that we try to support many platforms. However, it is infeasible for us to guarantee that every platform works. Just like Rust itself, we therefore have multiple tiers of platform support, with different guarantees. We support two tiers of platforms:

  • Tier 1: All applicable utils are compiled and tested in CI for these platforms.
  • Tier 2: These platforms are supported but not actively tested. We do accept fixes for these platforms.

Note: The tiers are dictated by our CI. We would happily accept a job in the CI for testing more platforms, bumping those platforms to tier 1.

Platforms per tier

The platforms in tier 1 and the platforms that we test in CI are listed below.

Operating systemTested targets
Linuxx86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
arm-unknown-linux-gnueabihf
i686-unknown-linux-gnu
aarch64-unknown-linux-gnu
macOSx86_64-apple-darwin
Windowsi686-pc-windows-msvc
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
FreeBSDx86_64-unknown-freebsd
Androidi686-linux-android

The platforms in tier 2 are more vague, but include:

  • untested variations of the platforms above,
  • Redox OS,
  • and BSDs such as OpenBSD, NetBSD & DragonFlyBSD.

Utility compatibility per platform

Not all utils work on every platform. For instance, chgrp is not supported on Windows, because Windows does not have the concept of groups. Below is a full table detailing which utilities are supported for the tier 1 platforms.

Note that for some utilities, not all functionality is supported on each platform. This is documented per utility.

utilLinuxmacOSWindowsFreeBSDAndroid
arch
b2sum
b3sum
base32
base64
basename
basenc
cat
chcon
chgrp
chmod
chown
chroot
cksum
comm
cp
csplit
cut
date
dd
df
dir
dircolors
dirname
du
echo
env
expand
expr
factor
false
fmt
fold
groups
hashsum
head
hostid
hostname
id
install
join
kill
link
ln
logname
ls
md5sum
mkdir
mkfifo
mknod
mktemp
more
mv
nice
nl
nohup
nproc
numfmt
od
paste
pathchk
pinky
pr
printenv
printf
ptx
pwd
readlink
realpath
rm
rmdir
runcon
seq
sha1sum
sha224sum
sha256sum
sha3-224sum
sha3-256sum
sha3-384sum
sha3-512sum
sha384sum
sha3sum
sha512sum
shake128sum
shake256sum
shred
shuf
sleep
sort
split
stat
stdbuf
stty
sum
sync
tac
tail
tee
test
timeout
touch
tr
true
truncate
tsort
tty
uname
unexpand
uniq
unlink
uptime
users
vdir
wc
who
whoami
yes

Contributing to coreutils

Hi! Welcome to uutils/coreutils!

Thanks for wanting to contribute to this project! This document explains everything you need to know to contribute. Before you start make sure to also check out these documents:

Now follows a very important warning:

[!WARNING] uutils is original code and cannot contain any code from GNU or other implementations. This means that we cannot accept any changes based on the GNU source code. To make sure that cannot happen, you cannot link to the GNU source code either. It is however possible to look at other implementations under a BSD or MIT license like Apple's implementation or OpenBSD.

Finally, feel free to join our Discord!

Getting Oriented

uutils is a big project consisting of many parts. Here are the most important parts for getting started:

Each utility is defined as a separate crate. The structure of each of these crates is as follows:

  • Cargo.toml
  • src/main.rs: contains only a single macro call
  • src/<util name>.rs: the actual code for the utility
  • <util name>.md: the documentation for the utility

We have separated repositories for crates that we maintain but also publish for use by others:

Design Goals

We have the following goals with our development:

  • Compatible: The utilities should be a drop-in replacement for the GNU coreutils.
  • Cross-platform: All utilities should run on as many of the supported platforms as possible.
  • Reliable: The utilities should never unexpectedly fail.
  • Performant: Our utilities should be written in fast idiomatic Rust. We aim to match or exceed the performance of the GNU utilities.
  • Well-tested: We should have a lot of tests to be able to guarantee reliability and compatibility.

How to Help

There are several ways to help and writing code is just one of them. Reporting issues and writing documentation are just as important as writing code.

Reporting Issues

We can't fix bugs we don't know about, so good issues are super helpful! Here are some tips for writing good issues:

  • If you find a bug, make sure it's still a problem on the main branch.
  • Search through the existing issues to see whether it has already been reported.
  • Make sure to include all relevant information, such as:
    • Which version of uutils did you check?
    • Which version of GNU coreutils are you comparing with?
    • What platform are you on?
  • Provide a way to reliably reproduce the issue.
  • Be as specific as possible!

Writing Documentation

There's never enough documentation. If you come across any documentation that could be improved, feel free to submit a PR for it!

Writing Code

If you want to submit a PR, make sure that you've discussed the solution with the maintainers beforehand. We want to avoid situations where you put a lot of work into a fix that we can't merge! If there's no issue for what you're trying to fix yet, make one before you start working on the PR.

Generally, we try to follow what GNU is doing in terms of options and behavior. It is recommended to look at the GNU coreutils manual (on the web, or locally using info <utility>). It is more in depth than the man pages and provides a good description of available features and their implementation details. But remember, you cannot look at the GNU source code!

Also remember that we can only merge PRs which pass our test suite, follow rustfmt, and do not have any warnings from clippy. See DEVELOPMENT.md for more information. Be sure to also read about our Rust style.

Our Rust Style

We want uutils to be written in idiomatic Rust, so here are some guidelines to follow. Some of these are aspirational, meaning that we don't do them correctly everywhere in the code. If you find violations of the advice below, feel free to submit a patch!

Don't panic!

The coreutils should be very reliable. This means that we should never panic!. Therefore, you should avoid using .unwrap() and panic!. Sometimes the use of unreachable! can be justified with a comment explaining why that code is unreachable.

Don't exit

We want uutils to be embeddable in other programs. This means that no function in uutils should exit the program. Doing so would also lead to code with more confusing control flow. Avoid therefore std::process::exit and similar functions which exit the program early.

unsafe

uutils cannot be entirely safe, because we have to call out to libc and do syscalls. However, we still want to limit our use of unsafe. We generally only accept unsafe for FFI, with very few exceptions. Note that performance is very rarely a valid argument for using unsafe.

If you still need to write code with unsafe, make sure to read the Rustonomicon and annotate the calls with // SAFETY: comments explaining why the use of unsafe is sound.

Macros

Macros can be a great tool, but they are also usually hard to understand. They should be used sparingly. Make sure to explore simpler options before you reach for a solution involving macros.

str, OsStr & Path

Rust has many string-like types, and sometimes it's hard to choose the right one. It's tempting to use str (and String) for everything, but that is not always the right choice for uutils, because we need to support invalid UTF-8, just like the GNU coreutils. For example, paths on Linux might not be valid UTF-8! Whenever we are dealing with paths, we should therefore stick with OsStr and Path. Make sure that you only convert to str/String if you know that something is always valid UTF-8. If you need more operations on OsStr, you can use the bstr crate.

Doc-comments

We use rustdoc for our documentation, so it's best to follow rustdoc's guidelines. Make sure that your documentation is not just repeating the name of the function, but actually giving more useful information. Rustdoc recommends the following structure:

[short sentence explaining what it is]

[more detailed explanation]

[at least one code example that users can copy/paste to try it]

[even more advanced explanations if necessary]

Other comments

Comments should be written to explain the code, not to describe the code. Try to focus on explaining why the code is the way it is. If you feel like you have to describe the code, that's usually a sign that you could improve the naming of variables and functions.

If you edit a piece of code, make sure to update any comments that need to change as a result. The only thing worse than having no comments is having outdated comments!

Git Etiquette

To ensure easy collaboration, we have guidelines for using Git and GitHub.

Commits

  • Make small and atomic commits.
  • Keep a clean history of commits.
  • Write informative commit messages.
  • Annotate your commit message with the component you're editing. For example: cp: do not overwrite on with -i or uucore: add support for FreeBSD.
  • Do not unnecessarily move items around in the code. This makes the changes much harder to review. If you do need to move things around, do that in a separate commit.

Commit messages

You can read this section in the Git book to learn how to write good commit messages: https://git-scm.com/book/ch5-2.html.

In addition, here are a few examples for a summary line when committing to uutils:

  • commit for a single utility
nohup: cleanup and refactor
  • commit for a utility's tests
tests/rm: test new feature

Beyond changes to an individual utility or its tests, other summary lines for non-utility modules include:

README: add help
uucore: add new modules
uutils: add new utility
gitignore: add temporary files

PRs

  • Make the titles of PRs descriptive.
    • This means describing the problem you solve. For example, do not write Fix #1234, but ls: fix version sort order.
    • You can prefix the title with the utility the PR concerns.
  • Keep PRs small and self-contained. A set of small PRs is much more likely to get merged quickly than one large PR.
  • Make sure the CI passes (up to intermittently failing tests).
  • You know your code best, that's why it's best if you can solve merge conflicts on your branch yourself.
    • It's up to you whether you want to use git merge main or git rebase main.
    • Feel free to ask for help with merge conflicts.
  • You do not need to ping maintainers to request a review, but it's fine to do so if you don't get a response within a few days.

Platforms

We take pride in supporting many operating systems and architectures. Any code you contribute must at least compile without warnings for all platforms in the CI. However, you can use #[cfg(...)] attributes to create platform dependent features.

Tip: For Windows, Microsoft provides some images (VMWare, Hyper-V, VirtualBox and Parallels) for development: https://developer.microsoft.com/windows/downloads/virtual-machines/

Improving the GNU compatibility

Please make sure you have installed GNU utils and prerequisites and can execute commands described in Comparing with GNU section of DEVELOPMENT.md

The Python script ./util/remaining-gnu-error.py shows the list of failing tests in the CI.

To improve the GNU compatibility, the following process is recommended:

  1. Identify a test (the smaller, the better) on a program that you understand or is easy to understand. You can use the ./util/remaining-gnu-error.py script to help with this decision.
  2. Build both the GNU and Rust coreutils using: bash util/build-gnu.sh
  3. Run the test with bash util/run-gnu-test.sh <your test>
  4. Start to modify <your test> to understand what is wrong. Examples:
    1. Add set -v to have the bash verbose mode
    2. Add echo $? where needed
    3. When the variable fail is used in the test, echo $fail to see when the test started to fail
    4. Bump the content of the output (ex: cat err)
    5. ...
  5. Or, if the test is simple, extract the relevant information to create a new test case running both GNU & Rust implementation
  6. Start to modify the Rust implementation to match the expected behavior
  7. Add a test to make sure that we don't regress (our test suite is super quick)

Code coverage

To generate code coverage report locally please follow Code coverage report section of DEVELOPMENT.md

Other implementations

The Coreutils have different implementations, with different levels of completions:

However, when reimplementing the tools/options in Rust, don't read their source codes when they are using reciprocal licenses (ex: GNU GPL, GNU LGPL, etc).

Licensing

uutils is distributed under the terms of the MIT License; see the LICENSE file for details. This is a permissive license, which allows the software to be used with few restrictions.

Copyrights in the uutils project are retained by their contributors, and no copyright assignment is required to contribute.

If you wish to add or change dependencies as part of a contribution to the project, a tool like cargo-license can be used to show their license details. The following types of license are acceptable:

  • MIT License
  • Dual- or tri-license with an MIT License option ("Apache-2.0 or MIT" is a popular combination)
  • "MIT equivalent" license (2-clause BSD, 3-clause BSD, ISC)
  • License less restrictive than the MIT License (CC0 1.0 Universal)
  • Apache License version 2.0

Licenses we will not use:

  • An ambiguous license, or no license
  • Strongly reciprocal licenses (GNU GPL, GNU LGPL)

If you wish to add a reference but it doesn't meet these requirements, please raise an issue to describe the dependency.

GNU Test Coverage

uutils is actively tested against the GNU coreutils test suite. The results below are automatically updated every day.

Coverage per category

Click on the categories to see the names of the tests. Green indicates a passing test, yellow indicates a skipped test and red means that the test either failed or resulted in an error.

Progress over time

Extensions over GNU

Though the main goal of the project is compatibility, uutils supports a few features that are not supported by GNU coreutils. We take care not to introduce features that are incompatible with the GNU coreutils. Below is a list of uutils extensions.

General

GNU coreutils provides two ways to define short options taking an argument:

$ ls -w 80
$ ls -w80

We support a third way:

$ ls -w=80

env

env has an additional -f/--file flag that can parse .env files and set variables accordingly. This feature is adopted from dotenv style packages.

cp

cp can display a progress bar when the -g/--progress flag is set.

mv

mv can display a progress bar when the -g/--progress flag is set.

hashsum

This utility does not exist in GNU coreutils. hashsum is a utility that supports computing the checksums with several algorithms. The flags and options are identical to the *sum family of utils (sha1sum, sha256sum, b2sum, etc.).

b3sum

This utility does not exist in GNU coreutils. The behavior is modeled after both the b2sum utility of GNU and the b3sum utility by the BLAKE3 team and supports the --no-names option that does not appear in the GNU util.

more

We provide a simple implementation of more, which is not part of GNU coreutils. We do not aim for full compatibility with the more utility from util-linux. Features from more modern pagers (like less and bat) are therefore welcomed.

cut

cut can separate fields by whitespace (Space and Tab) with -w flag. This feature is adopted from FreeBSD.

fmt

fmt has additional flags for prefixes: -P/--skip-prefix, -x/--exact-prefix, and -X/--exact-skip-prefix. With -m/--preserve-headers, an attempt is made to detect and preserve mail headers in the input. -q/--quick breaks lines more quickly. And -T/--tab-width defines the number of spaces representing a tab when determining the line length.

seq

seq provides -t/--terminator to set the terminator character.

ls

GNU ls provides two ways to use a long listing format: -l and --format=long. We support a third way: --long.

GNU ls --sort=VALUE only supports special non-default sort orders. We support --sort=name, which makes it possible to override an earlier value.

du

du allows birth and creation as values for the --time argument to show the creation time. It also provides a -v/--verbose flag.

id

id has three additional flags:

  • -P displays the id as a password file entry
  • -p makes the output human-readable
  • -A displays the process audit user ID

uptime

Similar to the proc-ps implementation and unlike GNU/Coreutils, uptime provides -s/--since to show since when the system is up.

Multi-call binary

uutils includes a multi-call binary from which the utils can be invoked. This reduces the binary size of the binary and can be useful for portability.

The first argument of the multi-call binary is the util to run, after which the regular arguments to the util can be passed.

coreutils [util] [util options]

The --help flag will print a list of available utils.

Example

coreutils ls -l

arch

v0.0.26
arch

Display machine architecture

Options

Determine architecture name for current machine.

Examples

Display the system's architecture:

arch

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

b2sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the BLAKE2 checksum for one or more files:

b2sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of BLAKE2 checksums to a file:

b2sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.b2}}

Calculate a BLAKE2 checksum from stdin:

{{command}} | b2sum

Read a file of BLAKE2 sums and filenames and verify all files have matching checksums:

b2sum --check {{path/to/file.b2}}

Only show a message for missing files or when verification fails:

b2sum --check --quiet {{path/to/file.b2}}

Only show a message when verification fails, ignoring missing files:

b2sum --ignore-missing --check --quiet {{path/to/file.b2}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

b3sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

--no-names

Omits filenames in the output (option not present in GNU/Coreutils)

Examples

Calculate the BLAKE3 checksum for one or more files:

b3sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of BLAKE3 checksums to a file:

b3sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.b3}}

Calculate a BLAKE3 checksum from stdin:

{{command}} | b3sum

Read a file of BLAKE3 sums and filenames and verify all files have matching checksums:

b3sum --check {{path/to/file.b3}}

Only show a message for missing files or when verification fails:

b3sum --check --quiet {{path/to/file.b3}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

base32

v0.0.26
base32 [OPTION]... [FILE]

encode/decode data and print to standard output With no FILE, or when FILE is -, read standard input.

The data are encoded as described for the base32 alphabet in RFC 4648. When decoding, the input may contain newlines in addition to the bytes of the formal base32 alphabet. Use --ignore-garbage to attempt to recover from any other non-alphabet bytes in the encoded stream.

Options

--decode, -d

decode data

--ignore-garbage, -i

when decoding, ignore non-alphabetic characters

--wrap=<COLS>, -w <COLS>

wrap encoded lines after COLS character (default 76, 0 to disable wrapping)

Examples

Encode a file:

base32 {{path/to/file}}

Wrap encoded output at a specific width (0 disables wrapping):

base32 --wrap {{0|76|...}} {{path/to/file}}

Decode a file:

base32 --decode {{path/to/file}}

Encode from stdin:

{{somecommand}} | base32

Decode from stdin:

{{somecommand}} | base32 --decode

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

base64

v0.0.26
base64 [OPTION]... [FILE]

encode/decode data and print to standard output With no FILE, or when FILE is -, read standard input.

The data are encoded as described for the base64 alphabet in RFC 3548. When decoding, the input may contain newlines in addition to the bytes of the formal base64 alphabet. Use --ignore-garbage to attempt to recover from any other non-alphabet bytes in the encoded stream.

Options

--decode, -d

decode data

--ignore-garbage, -i

when decoding, ignore non-alphabetic characters

--wrap=<COLS>, -w <COLS>

wrap encoded lines after COLS character (default 76, 0 to disable wrapping)

Examples

Encode the contents of a file as base64 and write the result to stdout:

base64 {{path/to/file}}

Wrap encoded output at a specific width (0 disables wrapping):

base64 --wrap {{0|76|...}} {{path/to/file}}

Decode the base64 contents of a file and write the result to stdout:

base64 --decode {{path/to/file}}

Encode from stdin:

{{somecommand}} | base64

Decode from stdin:

{{somecommand}} | base64 --decode

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

basename

v0.0.26
basename [-z] NAME [SUFFIX]
basename OPTION... NAME...

Print NAME with any leading directory components removed If specified, also remove a trailing SUFFIX

Options

--multiple, -a

support multiple arguments and treat each as a NAME

--suffix=<SUFFIX>, -s <SUFFIX>

remove a trailing SUFFIX; implies -a

--zero, -z

end each output line with NUL, not newline

Examples

Show only the file name from a path:

basename {{path/to/file}}

Show only the rightmost directory name from a path:

basename {{path/to/directory/}}

Show only the file name from a path, with a suffix removed:

basename {{path/to/file}} {{suffix}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

basenc

v0.0.26
basenc [OPTION]... [FILE]

Encode/decode data and print to standard output With no FILE, or when FILE is -, read standard input.

When decoding, the input may contain newlines in addition to the bytes of the formal alphabet. Use --ignore-garbage to attempt to recover from any other non-alphabet bytes in the encoded stream.

Options

--decode, -d

decode data

--ignore-garbage, -i

when decoding, ignore non-alphabetic characters

--wrap=<COLS>, -w <COLS>

wrap encoded lines after COLS character (default 76, 0 to disable wrapping)

--base64

same as 'base64' program

--base64url

file- and url-safe base64

--base32

same as 'base32' program

--base32hex

extended hex alphabet base32

--base16

hex encoding

--base2lsbf

bit string with least significant bit (lsb) first

--base2msbf

bit string with most significant bit (msb) first

--z85

ascii85-like encoding;
when encoding, input length must be a multiple of 4;
when decoding, input length must be a multiple of 5

Examples

Encode a file with base64 encoding:

basenc --base64 {{path/to/file}}

Decode a file with base64 encoding:

basenc --decode --base64 {{path/to/file}}

Encode from stdin with base32 encoding with 42 columns:

{{command}} | basenc --base32 -w42

Encode from stdin with base32 encoding:

{{command}} | basenc --base32

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

cat

v0.0.26
cat [OPTION]... [FILE]...

Concatenate FILE(s), or standard input, to standard output With no FILE, or when FILE is -, read standard input.

Options

--show-all, -A

equivalent to -vET

--number-nonblank, -b

number nonempty output lines, overrides -n

-e

equivalent to -vE

--show-ends, -E

display $ at end of each line

--number, -n

number all output lines

--squeeze-blank, -s

suppress repeated empty output lines

-t

equivalent to -vT

--show-tabs, -T

display TAB characters at ^I

--show-nonprinting, -v

use ^ and M- notation, except for LF (\n) and TAB (\t)

-u

(ignored)

Examples

Print the contents of a file to stdout:

cat {{path/to/file}}

Concatenate several files into an output file:

cat {{path/to/file1 path/to/file2 ...}} > {{path/to/output_file}}

Append several files to an output file:

cat {{path/to/file1 path/to/file2 ...}} >> {{path/to/output_file}}

Copy the contents of a file into an output file without buffering:

cat -u {{/dev/tty12}} > {{/dev/tty13}}

Write stdin to a file:

cat - > {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

chcon

v0.0.26
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...

Change the SELinux security context of each FILE to CONTEXT. With --reference, change the security context of each FILE to that of RFILE.

Options

--help

Print help information.

--dereference

Affect the referent of each symbolic link (this is the default), rather than the symbolic link itself.

--no-dereference, -h

Affect symbolic links instead of any referenced file.

--preserve-root

Fail to operate recursively on '/'.

--no-preserve-root

Do not treat '/' specially (the default).

--reference=<RFILE>

Use security context of RFILE, rather than specifying a CONTEXT value.

--user=<USER>, -u <USER>

Set user USER in the target security context.

--role=<ROLE>, -r <ROLE>

Set role ROLE in the target security context.

--type=<TYPE>, -t <TYPE>

Set type TYPE in the target security context.

--range=<RANGE>, -l <RANGE>

Set range RANGE in the target security context.

--recursive, -R

Operate on files and directories recursively.

-H

If a command line argument is a symbolic link to a directory, traverse it. Only valid when -R is specified.

-L

Traverse every symbolic link to a directory encountered. Only valid when -R is specified.

-P

Do not traverse any symbolic links (default). Only valid when -R is specified.

--verbose, -v

Output a diagnostic for every file processed.

Examples

View security context of a file:

ls -lZ {{path/to/file}}

Change the security context of a target file, using a reference file:

chcon --reference={{reference_file}} {{target_file}}

Change the full SELinux security context of a file:

chcon {{user}}:{{role}}:{{type}}:{{range/level}} {{filename}}

Change only the user part of SELinux security context:

chcon -u {{user}} {{filename}}

Change only the role part of SELinux security context:

chcon -r {{role}} {{filename}}

Change only the type part of SELinux security context:

chcon -t {{type}} {{filename}}

Change only the range/level part of SELinux security context:

chcon -l {{range/level}} {{filename}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

chgrp

v0.0.26
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...

Change the group of each FILE to GROUP.

Options

--help

Print help information.

--changes, -c

like verbose but report only when a change is made

--silent, -f
--quiet

suppress most error messages

--verbose, -v

output a diagnostic for every file processed

--dereference
--no-dereference, -h

affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

--preserve-root

fail to operate recursively on '/'

--no-preserve-root

do not treat '/' specially (the default)

--reference=<RFILE>

use RFILE's group rather than specifying GROUP values

--recursive, -R

operate on files and directories recursively

-H

if a command line argument is a symbolic link to a directory, traverse it

-P

do not traverse any symbolic links (default)

-L

traverse every symbolic link to a directory encountered

Examples

Change the owner group of a file/directory:

chgrp {{group}} {{path/to/file_or_directory}}

Recursively change the owner group of a directory and its contents:

chgrp -R {{group}} {{path/to/directory}}

Change the owner group of a symbolic link:

chgrp -h {{group}} {{path/to/symlink}}

Change the owner group of a file/directory to match a reference file:

chgrp --reference {{path/to/reference_file}} {{path/to/file_or_directory}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

chmod

v0.0.26
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE.

Options

--changes, -c

like verbose but report only when a change is made

--quiet, --silent, -f

suppress most error messages

--verbose, -v

output a diagnostic for every file processed

--no-preserve-root

do not treat '/' specially (the default)

--preserve-root

fail to operate recursively on '/'

--recursive, -R

change files and directories recursively

--reference

use RFILE's mode instead of MODE values

Each MODE is of the form '[ugoa]*(-+=)+|[-+=]?[0-7]+'.

Examples

Give the [u]ser who owns a file the right to e[x]ecute it:

chmod u+x {{path/to/file}}

Give the [u]ser rights to [r]ead and [w]rite to a file/directory:

chmod u+rw {{path/to/file_or_directory}}

Remove e[x]ecutable rights from the [g]roup:

chmod g-x {{path/to/file}}

Give [a]ll users rights to [r]ead and e[x]ecute:

chmod a+rx {{path/to/file}}

Give [o]thers (not in the file owner's group) the same rights as the [g]roup:

chmod o=g {{path/to/file}}

Remove all rights from [o]thers:

chmod o= {{path/to/file}}

Change permissions recursively giving [g]roup and [o]thers the ability to [w]rite:

chmod -R g+w,o+w {{path/to/directory}}

Recursively give [a]ll users [r]ead permissions to files and e[X]ecute permissions to sub-directories within a directory:

chmod -R a+rX {{path/to/directory}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

chown

v0.0.26
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

Change file owner and group

Options

--help

Print help information.

--changes, -c

like verbose but report only when a change is made

--dereference

affect the referent of each symbolic link (this is the default), rather than the symbolic link itself

--no-dereference, -h

affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

--from=<CURRENT_OWNER:CURRENT_GROUP>

change the owner and/or group of each file only if its current owner and/or group match those specified here. Either may be omitted, in which case a match is not required for the omitted attribute

--preserve-root

fail to operate recursively on '/'

--no-preserve-root

do not treat '/' specially (the default)

--quiet

suppress most error messages

--recursive, -R

operate on files and directories recursively

--reference=<RFILE>

use RFILE's owner and group rather than specifying OWNER:GROUP values

--silent, -f
-H

if a command line argument is a symbolic link to a directory, traverse it

-L

traverse every symbolic link to a directory encountered

-P

do not traverse any symbolic links (default)

--verbose, -v

output a diagnostic for every file processed

Examples

Change the owner user of a file/directory:

chown {{user}} {{path/to/file_or_directory}}

Change the owner user and group of a file/directory:

chown {{user}}:{{group}} {{path/to/file_or_directory}}

Change the owner user and group to both have the name user:

chown {{user}}: {{path/to/file_or_directory}}

Recursively change the owner of a directory and its contents:

chown -R {{user}} {{path/to/directory}}

Change the owner of a symbolic link:

chown -h {{user}} {{path/to/symlink}}

Change the owner of a file/directory to match a reference file:

chown --reference {{path/to/reference_file}} {{path/to/file_or_directory}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

chroot

v0.0.26
chroot [OPTION]... NEWROOT [COMMAND [ARG]...]

Run COMMAND with root directory set to NEWROOT.

Options

--user=<USER>, -u <USER>

User (ID or name) to switch before running the program

--group=<GROUP>, -g <GROUP>

Group (ID or name) to switch to

--groups=<GROUP1,GROUP2...>, -G <GROUP1,GROUP2...>

Comma-separated list of groups to switch to

--userspec=<USER:GROUP>

Colon-separated user and group to switch to. Same as -u USER -g GROUP. Userspec has higher preference than -u and/or -g

--skip-chdir

Use this option to not change the working directory to / after changing the root directory to newroot, i.e., inside the chroot.

Examples

Run command as new root directory:

chroot {{path/to/new/root}} {{command}}

Use a specific user and group:

chroot --userspec={{username_or_id:group_name_or_id}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

cksum

v0.0.26
cksum [OPTIONS] [FILE]...

Print CRC and size for each file

Options

--algorithm=<ALGORITHM>, -a <ALGORITHM>

select the digest type to use. See DIGEST below

--untagged

create a reversed style checksum, without digest type

--tag

create a BSD style checksum, undo --untagged (default)

--length, -l

digest length in bits; must not exceed the max for the blake2 algorithm and must be a multiple of 8

--raw

emit a raw binary digest, not hexadecimal

--check, -c

read hashsums from the FILEs and check them

--base64

emit a base64 digest, not hexadecimal

--text, -t
--binary, -b

DIGEST determines the digest algorithm and default output format:

  • sysv: (equivalent to sum -s)
  • bsd: (equivalent to sum -r)
  • crc: (equivalent to cksum)
  • md5: (equivalent to md5sum)
  • sha1: (equivalent to sha1sum)
  • sha224: (equivalent to sha224sum)
  • sha256: (equivalent to sha256sum)
  • sha384: (equivalent to sha384sum)
  • sha512: (equivalent to sha512sum)
  • blake2b: (equivalent to b2sum)
  • sm3: (only available through cksum)

Examples

Display a 32-bit checksum, size in bytes and filename:

cksum {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

comm

v0.0.26
comm [OPTION]... FILE1 FILE2

Compare two sorted files line by line.

When FILE1 or FILE2 (not both) is -, read standard input.

With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files.

Options

-1

suppress column 1 (lines unique to FILE1)

-2

suppress column 2 (lines unique to FILE2)

-3

suppress column 3 (lines that appear in both files)

--output-delimiter=<STR>

separate columns with STR

--zero-terminated, -z

line delimiter is NUL, not newline

--total

output a summary

Examples

Produce three tab-separated columns: lines only in first file, lines only in second file and common lines:

comm {{file1}} {{file2}}

Print only lines common to both files:

comm -12 {{file1}} {{file2}}

Print only lines common to both files, reading one file from stdin:

cat {{file1}} | comm -12 - {{file2}}

Get lines only found in first file, saving the result to a third file:

comm -23 {{file1}} {{file2}} > {{file1_only}}

Print lines only found in second file, when the files aren't sorted:

comm -13 <(sort {{file1}}) <(sort {{file2}})

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

cp

v0.0.26
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Options

--target-directory=<target-directory>, -t <target-directory>

copy all SOURCE arguments into target-directory

--no-target-directory, -T

Treat DEST as a regular file and not a directory

--interactive, -i

ask before overwriting files

--link, -l

hard-link files instead of copying

--no-clobber, -n

don't overwrite a file that already exists

--recursive, -R, -r

copy directories recursively

--strip-trailing-slashes

remove any trailing slashes from each SOURCE argument

--debug

explain how a file is copied. Implies -v

--verbose, -v

explicitly state what is being done

--symbolic-link, -s

make symbolic links instead of copying

--force, -f

if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used). Currently not implemented for Windows.

--remove-destination

remove each existing destination file before attempting to open it (contrast with --force). On Windows, currently only works for writeable files.

--backup=<CONTROL>

make a backup of each existing destination file

-b

like --backup but does not accept an argument

--suffix=<SUFFIX>, -S <SUFFIX>

override the usual backup suffix

--update

move only when the SOURCE file is newer than the destination file or when the destination file is missing

-u

like --update but does not accept an argument

--reflink=<WHEN>

control clone/CoW copies. See below

--attributes-only

Don't copy the file data, just the attributes

--preserve=<ATTR_LIST>

Preserve the specified attributes (default: mode, ownership (unix only), timestamps), if possible additional attributes: context, links, xattr, all

--preserve-default-attributes, -p

same as --preserve=mode,ownership(unix only),timestamps

--no-preserve=<ATTR_LIST>

don't preserve the specified attributes

--parents

use full source file name under DIRECTORY

--no-dereference, -P

never follow symbolic links in SOURCE

--dereference, -L

always follow symbolic links in SOURCE

-H

follow command-line symbolic links in SOURCE

--archive, -a

Same as -dR --preserve=all

-d

same as --no-dereference --preserve=links

--one-file-system, -x

stay on this file system

--sparse=<WHEN>

control creation of sparse files. See below

--copy-contents

NotImplemented: copy contents of special files when recursive

--context=<CTX>

NotImplemented: set SELinux security context of destination file to default type

--progress, -g

Display a progress bar.
Note: this feature is not supported by GNU coreutils.

Do not copy a non-directory that has an existing destination with the same or newer modification timestamp; instead, silently skip the file without failing. If timestamps are being preserved, the comparison is to the source timestamp truncated to the resolutions of the destination file system and of the system calls used to update timestamps; this avoids duplicate work if several cp -pu commands are executed with the same source and destination. This option is ignored if the -n or --no-clobber option is also specified. Also, if --preserve=links is also specified (like with cp -au for example), that will take precedence; consequently, depending on the order that files are processed from the source, newer files in the destination may be replaced, to mirror hard links in the source. which gives more control over which existing files in the destination are replaced, and its value can be one of the following:

  • all This is the default operation when an --update option is not specified, and results in all existing files in the destination being replaced.
  • none This is similar to the --no-clobber option, in that no files in the destination are replaced, but also skipping a file does not induce a failure.
  • older This is the default operation when --update is specified, and results in files being replaced if they’re older than the corresponding source file.

Examples

Copy a file to another location:

cp {{path/to/source_file.ext}} {{path/to/target_file.ext}}

Copy a file into another directory, keeping the filename:

cp {{path/to/source_file.ext}} {{path/to/target_parent_directory}}

Recursively copy a directory's contents to another location (if the destination exists, the directory is copied inside it):

cp -R {{path/to/source_directory}} {{path/to/target_directory}}

Copy a directory recursively, in verbose mode (shows files as they are copied):

cp -vR {{path/to/source_directory}} {{path/to/target_directory}}

Copy multiple files at once to a directory:

cp -t {{path/to/destination_directory}} {{path/to/file1 path/to/file2 ...}}

Copy text files to another location, in interactive mode (prompts user before overwriting):

cp -i {{*.txt}} {{path/to/target_directory}}

Follow symbolic links before copying:

cp -L {{link}} {{path/to/target_directory}}

Use the first argument as the destination directory (useful for xargs ... | cp -t <DEST_DIR>):

cp -t {{path/to/target_directory}} {{path/to/file_or_directory1 path/to/file_or_directory2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

csplit

v0.0.26
csplit [OPTION]... FILE PATTERN...

Split a file into sections determined by context lines

Options

--suffix-format=<FORMAT>, -b <FORMAT>

use sprintf FORMAT instead of %02d

--prefix=<PREFIX>, -f <PREFIX>

use PREFIX instead of 'xx'

--keep-files, -k

do not remove output files on errors

--suppress-matched

suppress the lines matching PATTERN

--digits=<DIGITS>, -n <DIGITS>

use specified number of digits instead of 2

--quiet, --silent, -s

do not print counts of output file sizes

--elide-empty-files, -z

remove empty output files

Output pieces of FILE separated by PATTERN(s) to files 'xx00', 'xx01', ..., and output byte counts of each piece to standard output.

Examples

Split a file at lines 5 and 23:

csplit {{path/to/file}} 5 23

Split a file every 5 lines (this will fail if the total number of lines is not divisible by 5):

csplit {{path/to/file}} 5 {*}

Split a file every 5 lines, ignoring exact-division error:

csplit -k {{path/to/file}} 5 {*}

Split a file at line 5 and use a custom prefix for the output files:

csplit {{path/to/file}} 5 -f {{prefix}}

Split a file at a line matching a regular expression:

csplit {{path/to/file}} /{{regular_expression}}/

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

cut

v0.0.26
cut OPTION... [FILE]...

Prints specified byte or field columns from each line of stdin or the input files

Options

--bytes=<LIST>, -b <LIST>

filter byte columns from the input source

--characters=<LIST>, -c <LIST>

alias for character mode

--delimiter=<DELIM>, -d <DELIM>

specify the delimiter character that separates fields in the input source. Defaults to Tab.

-w <WHITESPACE>

Use any number of whitespace (Space, Tab) to separate fields in the input source (FreeBSD extension).

--fields=<LIST>, -f <LIST>

filter field columns from the input source

--complement

invert the filter - instead of displaying only the filtered columns, display all but those columns

--only-delimited, -s

in field mode, only print lines which contain the delimiter

--zero-terminated, -z

instead of filtering columns based on line, filter columns based on \0 (NULL character)

--output-delimiter=<NEW_DELIM>

in field mode, replace the delimiter in output lines with this option's argument

Each call must specify a mode (what to use for columns), a sequence (which columns to print), and provide a data source

Specifying a mode

Use --bytes (-b) or --characters (-c) to specify byte mode

Use --fields (-f) to specify field mode, where each line is broken into fields identified by a delimiter character. For example for a typical CSV you could use this in combination with setting comma as the delimiter

Specifying a sequence

A sequence is a group of 1 or more numbers or inclusive ranges separated by a commas.

cut -f 2,5-7 some_file.txt

will display the 2nd, 5th, 6th, and 7th field for each source line

Ranges can extend to the end of the row by excluding the second number

cut -f 3- some_file.txt

will display the 3rd field and all fields after for each source line

The first number of a range can be excluded, and this is effectively the same as using 1 as the first number: it causes the range to begin at the first column. Ranges can also display a single column

cut -f 1,3-5 some_file.txt

will display the 1st, 3rd, 4th, and 5th field for each source line

The --complement option, when used, inverts the effect of the sequence

cut --complement -f 4-6 some_file.txt

will display the every field but the 4th, 5th, and 6th

Specifying a data source

If no sourcefile arguments are specified, stdin is used as the source of lines to print

If sourcefile arguments are specified, stdin is ignored and all files are read in consecutively if a sourcefile is not successfully read, a warning will print to stderr, and the eventual status code will be 1, but cut will continue to read through proceeding sourcefiles

To print columns from both STDIN and a file argument, use - (dash) as a sourcefile argument to represent stdin.

Field Mode options

The fields in each line are identified by a delimiter (separator)

Set the delimiter

Set the delimiter which separates fields in the file using the --delimiter (-d) option. Setting the delimiter is optional. If not set, a default delimiter of Tab will be used.

If the -w option is provided, fields will be separated by any number of whitespace characters (Space and Tab). The output delimiter will be a Tab unless explicitly specified. Only one of -d or -w option can be specified. This is an extension adopted from FreeBSD.

Optionally Filter based on delimiter

If the --only-delimited (-s) flag is provided, only lines which contain the delimiter will be printed

Replace the delimiter

If the --output-delimiter option is provided, the argument used for it will replace the delimiter character in each line printed. This is useful for transforming tabular data - e.g. to convert a CSV to a TSV (tab-separated file)

Line endings

When the --zero-terminated (-z) option is used, cut sees \0 (null) as the 'line ending' character (both for the purposes of reading lines and separating printed lines) instead of \n (newline). This is useful for tabular data where some of the cells may contain newlines

echo 'ab\\0cd' | cut -z -c 1

will result in 'a\0c\0'

Examples

Print a specific [c]haracter/[f]ield range of each line:

{{command}} | cut --{{characters|fields}} {{1|1,10|1-10|1-|-10}}

Print a [f]ield range of each line with a specific [d]elimiter:

{{command}} | cut --delimiter "{{,}}" --fields {{1}}

Print a [c]haracter range of each line of the specific file:

cut --characters {{1}} {{path/to/file}}

Print specific [f]ields of NUL terminated lines (e.g. as in find . -print0) instead of newlines:

{{command}} | cut --zero-terminated --fields {{1}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

date

v0.0.26
date [OPTION]... [+FORMAT]...
date [OPTION]... [MMDDhhmm[[CC]YY][.ss]]

Print or set the system date and time

Options

--date=<STRING>, -d <STRING>

display time described by STRING, not 'now'

--file=<DATEFILE>, -f <DATEFILE>

like --date; once for each line of DATEFILE

--iso-8601=<FMT>, -I <FMT>

output date/time in ISO 8601 format.
FMT='date' for date only (the default),
'hours', 'minutes', 'seconds', or 'ns'
for date and time to the indicated precision.
Example: 2006-08-14T02:34:56-06:00

--rfc-email, -R

output date and time in RFC 5322 format.
Example: Mon, 14 Aug 2006 02:34:56 -0600

--rfc-3339=<FMT>

output date/time in RFC 3339 format.
FMT='date', 'seconds', or 'ns'
for date and time to the indicated precision.
Example: 2006-08-14 02:34:56-06:00

--debug

annotate the parsed date, and warn about questionable usage to stderr

--reference=<FILE>, -r <FILE>

display the last modification time of FILE

--set=<STRING>, -s <STRING>

set time described by STRING

--universal, -u

print or set Coordinated Universal Time (UTC)

Examples

Display the current date using the default locale's format:

date +%c

Display the current date in UTC, using the ISO 8601 format:

date -u +%Y-%m-%dT%H:%M:%S%Z

Display the current date as a Unix timestamp (seconds since the Unix epoch):

date +%s

Convert a date specified as a Unix timestamp to the default format:

date -d @{{1473305798}}

Convert a given date to the Unix timestamp format:

date -d "{{2018-09-01 00:00}}" +%s --utc

Display the current date using the RFC-3339 format (YYYY-MM-DD hh:mm:ss TZ):

date --rfc-3339 s

Set the current date using the format MMDDhhmmYYYY.ss (YYYY and .ss are optional):

date {{093023592021.59}}

Display the current ISO week number:

date +%V

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

dd

v0.0.26
dd [OPERAND]...
dd OPTION

Copy, and optionally convert, a file system resource

Options

Operands

  • bs=BYTES : read and write up to BYTES bytes at a time (default: 512); overwrites ibs and obs.

  • cbs=BYTES : the 'conversion block size' in bytes. Applies to the conv=block, and conv=unblock operations.

  • conv=CONVS : a comma-separated list of conversion options or (for legacy reasons) file flags.

  • count=N : stop reading input after N ibs-sized read operations rather than proceeding until EOF. See iflag=count_bytes if stopping after N bytes is preferred

  • ibs=N : the size of buffer used for reads (default: 512)

  • if=FILE : the file used for input. When not specified, stdin is used instead

  • iflag=FLAGS : a comma-separated list of input flags which specify how the input source is treated. FLAGS may be any of the input-flags or general-flags specified below.

  • skip=N (or iseek=N) : skip N ibs-sized records into input before beginning copy/convert operations. See iflag=seek_bytes if seeking N bytes is preferred.

  • obs=N : the size of buffer used for writes (default: 512)

  • of=FILE : the file used for output. When not specified, stdout is used instead

  • oflag=FLAGS : comma separated list of output flags which specify how the output source is treated. FLAGS may be any of the output flags or general flags specified below

  • seek=N (or oseek=N) : seeks N obs-sized records into output before beginning copy/convert operations. See oflag=seek_bytes if seeking N bytes is preferred

  • status=LEVEL : controls whether volume and performance stats are written to stderr.

    When unspecified, dd will print stats upon completion. An example is below.

      6+0 records in
      16+0 records out
      8192 bytes (8.2 kB, 8.0 KiB) copied, 0.00057009 s,
      14.4 MB/s
    

    The first two lines are the 'volume' stats and the final line is the 'performance' stats. The volume stats indicate the number of complete and partial ibs-sized reads, or obs-sized writes that took place during the copy. The format of the volume stats is <complete>+<partial>. If records have been truncated (see conv=block), the volume stats will contain the number of truncated records.

    Possible LEVEL values are:

    • progress : Print periodic performance stats as the copy proceeds.
    • noxfer : Print final volume stats, but not performance stats.
    • none : Do not print any stats.

    Printing performance stats is also triggered by the INFO signal (where supported), or the USR1 signal. Setting the POSIXLY_CORRECT environment variable to any value (including an empty value) will cause the USR1 signal to be ignored.

Conversion Options

  • ascii : convert from EBCDIC to ASCII. This is the inverse of the ebcdic option. Implies conv=unblock.

  • ebcdic : convert from ASCII to EBCDIC. This is the inverse of the ascii option. Implies conv=block.

  • ibm : convert from ASCII to EBCDIC, applying the conventions for [, ] and ~ specified in POSIX. Implies conv=block.

  • ucase : convert from lower-case to upper-case.

  • lcase : converts from upper-case to lower-case.

  • block : for each newline less than the size indicated by cbs=BYTES, remove the newline and pad with spaces up to cbs. Lines longer than cbs are truncated.

  • unblock : for each block of input of the size indicated by cbs=BYTES, remove right-trailing spaces and replace with a newline character.

  • sparse : attempts to seek the output when an obs-sized block consists of only zeros.

  • swab : swaps each adjacent pair of bytes. If an odd number of bytes is present, the final byte is omitted.

  • sync : pad each ibs-sided block with zeros. If block or unblock is specified, pad with spaces instead.

  • excl : the output file must be created. Fail if the output file is already present.

  • nocreat : the output file will not be created. Fail if the output file in not already present.

  • notrunc : the output file will not be truncated. If this option is not present, output will be truncated when opened.

  • noerror : all read errors will be ignored. If this option is not present, dd will only ignore Error::Interrupted.

  • fdatasync : data will be written before finishing.

  • fsync : data and metadata will be written before finishing.

Input flags

  • count_bytes : a value to count=N will be interpreted as bytes.
  • skip_bytes : a value to skip=N will be interpreted as bytes.
  • fullblock : wait for ibs bytes from each read. zero-length reads are still considered EOF.

Output flags

  • append : open file in append mode. Consider setting conv=notrunc as well.
  • seek_bytes : a value to seek=N will be interpreted as bytes.

General Flags

  • direct : use direct I/O for data.
  • directory : fail unless the given input (if used as an iflag) or output (if used as an oflag) is a directory.
  • dsync : use synchronized I/O for data.
  • sync : use synchronized I/O for data and metadata.
  • nonblock : use non-blocking I/O.
  • noatime : do not update access time.
  • nocache : request that OS drop cache.
  • noctty : do not assign a controlling tty.
  • nofollow : do not follow system links.

Examples

Make a bootable USB drive from an isohybrid file (such as archlinux-xxx.iso):

dd if={{path/to/file.iso}} of=/dev/{{usb_drive}}

Clone a drive to another drive with 4 MiB block size and flush writes before the command terminates:

dd bs={{4194304}} conv={{fsync}} if=/dev/{{source_drive}} of=/dev/{{dest_drive}}

Generate a file with a specific number of random bytes by using kernel random driver:

dd bs={{100}} count={{1}} if=/dev/urandom of={{path/to/random_file}}

Benchmark the sequential write performance of a disk:

dd bs={{1024}} count={{1000000}} if=/dev/zero of={{path/to/file_1GB}}

Create a system backup and save it into an IMG file (can be restored later by swapping if and of):

dd if={{/dev/drive_device}} of={{path/to/file.img}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

df

v0.0.26
df [OPTION]... [FILE]...

Show information about the file system on which each FILE resides, or all file systems by default.

Options

--help

Print help information.

--all, -a

include dummy file systems

--block-size=<SIZE>, -B <SIZE>

scale sizes by SIZE before printing them; e.g.'-BM' prints sizes in units of 1,048,576 bytes

--total

produce a grand total

--human-readable, -h

print sizes in human readable format (e.g., 1K 234M 2G)

--si, -H

likewise, but use powers of 1000 not 1024

--inodes, -i

list inode information instead of block usage

-k

like --block-size=1K

--local, -l

limit listing to local file systems

--no-sync

do not invoke sync before getting usage info (default)

--output=<FIELD_LIST>

use the output format defined by FIELD_LIST, or print all fields if FIELD_LIST is omitted.

--portability, -P

use the POSIX output format

--sync

invoke sync before getting usage info (non-windows only)

--type=<TYPE>, -t <TYPE>

limit listing to file systems of type TYPE

--print-type, -T

print file system type

--exclude-type=<TYPE>, -x <TYPE>

limit listing to file systems not of type TYPE

Display values are in units of the first available SIZE from --block-size, and the DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE is an integer and optional unit (example: 10M is 1010241024). Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB,... (powers of 1000).

Examples

Display all filesystems and their disk usage using 512-byte units:

df

Display the filesystem and its disk usage containing the given file or directory:

df {{path/to/file_or_directory}}

Use 1024-byte units when writing space figures:

df -k

Display information in a portable way:

df -P

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

dir

v0.0.26

Options

--help

Print help information.

--format

Set the display format.

-C

Display the files in columns.

--long, -l

Display detailed information.

-x

List entries in rows instead of in columns.

--tabsize=<COLS>, -T <COLS>

Assume tab stops at each COLS instead of 8 (unimplemented)

-m

List entries separated by commas.

--zero

List entries separated by ASCII NUL characters.

--dired, -D

generate output designed for Emacs' dired (Directory Editor) mode

--hyperlink=<WHEN>

hyperlink file names WHEN

-1

List one file per line.

-o

Long format without group information. Identical to --format=long with --no-group.

-g

Long format without owner information.

--numeric-uid-gid, -n

-l with numeric UIDs and GIDs.

--quoting-style

Set quoting style.

--literal, -N

Use literal quoting style. Equivalent to --quoting-style=literal

--escape, -b

Use escape quoting style. Equivalent to --quoting-style=escape

--quote-name, -Q

Use C quoting style. Equivalent to --quoting-style=c

--hide-control-chars, -q

Replace control characters with '?' if they are not escaped.

--show-control-chars

Show control characters 'as is' if they are not escaped.

--time=<field>

Show time in :
access time (-u): atime, access, use;
change time (-t): ctime, status.
birth time: birth, creation;

-c

If the long listing format (e.g., -l, -o) is being used, print the status change time (the 'ctime' in the inode) instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the status change time.

-u

If the long listing format (e.g., -l, -o) is being used, print the status access time instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the access time.

--hide=<PATTERN>

do not list implied entries matching shell PATTERN (overridden by -a or -A)

--ignore=<PATTERN>, -I <PATTERN>

do not list implied entries matching shell PATTERN

--ignore-backups, -B

Ignore entries which end with ~.

--sort=<field>

Sort by : name, none (-U), time (-t), size (-S), extension (-X) or width

-S

Sort by file size, largest first.

-t

Sort by modification time (the 'mtime' in the inode), newest first.

-v

Natural sort of (version) numbers in the filenames.

-X

Sort alphabetically by entry extension.

-U

Do not sort; list the files in whatever order they are stored in the directory. This is especially useful when listing very large directories, since not doing any sorting can be noticeably faster.

--dereference, -L

When showing file information for a symbolic link, show information for the file the link references rather than the link itself.

--dereference-command-line-symlink-to-dir

Do not follow symlinks except when they link to directories and are given as command line arguments.

--dereference-command-line, -H

Do not follow symlinks except when given as command line arguments.

--no-group, -G

Do not show group in long format.

--author

Show author in long format. On the supported platforms, the author always matches the file owner.

--all, -a

Do not ignore hidden files (files with names that start with '.').

--almost-all, -A

In a directory, do not ignore all file names that start with '.', only ignore '.' and '..'.

--directory, -d

Only list the names of directories, rather than listing directory contents. This will not follow symbolic links unless one of --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir is specified.

--human-readable, -h

Print human readable file sizes (e.g. 1K 234M 56G).

--kibibytes, -k

default to 1024-byte blocks for file system usage; used only with -s and per directory totals

--si

Print human readable file sizes using powers of 1000 instead of 1024.

--block-size=<BLOCK_SIZE>

scale sizes by BLOCK_SIZE when printing them

--inode, -i

print the index number of each file

--reverse, -r

Reverse whatever the sorting method is e.g., list files in reverse alphabetical order, youngest first, smallest first, or whatever.

--recursive, -R

List the contents of all directories recursively.

--width=<COLS>, -w <COLS>

Assume that the terminal is COLS columns wide.

--size, -s

print the allocated size of each file, in blocks

--color

Color output based on file type.

--indicator-style

Append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F)

--classify=<when>, -F <when>

Append a character to each file name indicating the file type. Also, for regular files that are executable, append '*'. The file type indicators are '/' for directories, '@' for symbolic links, '|' for FIFOs, '=' for sockets, '>' for doors, and nothing for regular files. when may be omitted, or one of:
none - Do not classify. This is the default.
auto - Only classify if standard output is a terminal.
always - Always classify.
Specifying --classify and no when is equivalent to --classify=always. This will not follow symbolic links listed on the command line unless the --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir options are specified.

--file-type

Same as --classify, but do not append '*'

-p

Append / indicator to directories.

--time-style=<TIME_STYLE>

time/date format with -l; see TIME_STYLE below

--full-time

like -l --time-style=full-iso

--context, -Z

print any security context of each file

--group-directories-first

group directories before files; can be augmented with a --sort option, but any use of --sort=none (-U) disables grouping

Examples

List all files, including hidden files:

dir -all

List files including their author (-l is required):

dir -l --author

List files excluding those that match a specified blob pattern:

dir --hide={{pattern}}

List subdirectories recursively:

dir --recursive

Display help:

dir --help

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

dircolors

v0.0.26
dircolors [OPTION]... [FILE]

Output commands to set the LS_COLORS environment variable.

Options

--sh, --bourne-shell, -b

output Bourne shell code to set LS_COLORS

--csh, --c-shell, -c

output C shell code to set LS_COLORS

--print-database, -p

print the byte counts

--print-ls-colors

output fully escaped colors for display

If FILE is specified, read it to determine which colors to use for which file types and extensions. Otherwise, a precompiled database is used. For details on the format of these files, run 'dircolors --print-database'

Examples

Output commands to set LS_COLOR using default colors:

dircolors

Output commands to set LS_COLOR using colors from a file:

dircolors {{path/to/file}}

Output commands for Bourne shell:

dircolors --bourne-shell

Output commands for C shell:

dircolors --c-shell

View the default colors for file types and extensions:

dircolors --print-data

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

dirname

v0.0.26
dirname [OPTION] NAME...

Strip last component from file name

Options

--zero, -z

separate output with NUL rather than newline

Output each NAME with its last non-slash component and trailing slashes removed; if NAME contains no /'s, output '.' (meaning the current directory).

Examples

Calculate the parent directory of a given path:

dirname {{path/to/file_or_directory}}

Calculate the parent directory of multiple paths:

dirname {{path/to/file_or_directory1 path/to/file_or_directory2 ...}}

Delimit output with a NUL character instead of a newline (useful when combining with xargs):

dirname --zero {{path/to/file_or_directory1 path/to/file_or_directory2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

du

v0.0.26
du [OPTION]... [FILE]...
du [OPTION]... --files0-from=F

Estimate file space usage

Options

--help

Print help information.

--all, -a

write counts for all files, not just directories

--apparent-size

print apparent sizes, rather than disk usage although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like

--block-size=<SIZE>, -B <SIZE>

scale sizes by SIZE before printing them. E.g., '-BM' prints sizes in units of 1,048,576 bytes. See SIZE format below.

--bytes, -b

equivalent to '--apparent-size --block-size=1'

--total, -c

produce a grand total

--max-depth=<N>, -d <N>

print the total for a directory (or file, with --all) only if it is N or fewer levels below the command line argument; --max-depth=0 is the same as --summarize

--human-readable, -h

print sizes in human readable format (e.g., 1K 234M 2G)

--inodes

list inode usage information instead of block usage like --block-size=1K

-k

like --block-size=1K

--count-links, -l

count sizes many times if hard linked

--dereference, -L

follow all symbolic links

--dereference-args, -D, -H

follow only symlinks that are listed on the command line

--no-dereference, -P

don't follow any symbolic links (this is the default)

-m

like --block-size=1M

--null, -0

end each output line with 0 byte rather than newline

--separate-dirs, -S

do not include size of subdirectories

--summarize, -s

display only a total for each argument

--si

like -h, but use powers of 1000 not 1024

--one-file-system, -x

skip directories on different file systems

--threshold=<SIZE>, -t <SIZE>

exclude entries smaller than SIZE if positive, or entries greater than SIZE if negative

--verbose, -v

verbose mode (option not present in GNU/Coreutils)

--exclude=<PATTERN>

exclude files that match PATTERN

--exclude-from=<FILE>, -X <FILE>

exclude files that match any pattern in FILE

--files0-from=<FILE>

summarize device usage of the NUL-terminated file names specified in file F; if F is -, then read names from standard input

--time=<WORD>

show time of the last modification of any file in the directory, or any of its subdirectories. If WORD is given, show time as WORD instead of modification time: atime, access, use, ctime, status, birth or creation

--time-style=<STYLE>

show times using style STYLE: full-iso, long-iso, iso, +FORMAT FORMAT is interpreted like 'date'

Display values are in units of the first available SIZE from --block-size, and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables. Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE is an integer and optional unit (example: 10M is 1010241024). Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB,... (powers of 1000).

PATTERN allows some advanced exclusions. For example, the following syntaxes are supported: ? will match only one character * will match zero or more characters {a,b} will match a or b

Examples

List the sizes of a directory and any subdirectories, in the given unit (B/KiB/MiB):

du -{{b|k|m}} {{path/to/directory}}

List the sizes of a directory and any subdirectories, in human-readable form (i.e. auto-selecting the appropriate unit for each size):

du -h {{path/to/directory}}

Show the size of a single directory, in human-readable units:

du -sh {{path/to/directory}}

List the human-readable sizes of a directory and of all the files and directories within it:

du -ah {{path/to/directory}}

List the human-readable sizes of a directory and any subdirectories, up to N levels deep:

du -h --max-depth=N {{path/to/directory}}

List the human-readable size of all .jpg files in subdirectories of the current directory, and show a cumulative total at the end:

du -ch {{*/*.jpg}}

List all files and directories (including hidden ones) above a certain [t]hreshold size (useful for investigating what is actually taking up the space):

du --all --human-readable --threshold {{1G|1024M|1048576K}} .[^.]* *

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

echo

v0.0.26
echo [OPTIONS]... [STRING]...

Display a line of text

Options

-n

do not output the trailing newline

-e

enable interpretation of backslash escapes

-E

disable interpretation of backslash escapes (default)

Echo the STRING(s) to standard output.

If -e is in effect, the following sequences are recognized:

  • \ backslash
  • \a alert (BEL)
  • \b backspace
  • \c produce no further output
  • \e escape
  • \f form feed
  • \n new line
  • \r carriage return
  • \t horizontal tab
  • \v vertical tab
  • \0NNN byte with octal value NNN (1 to 3 digits)
  • \xHH byte with hexadecimal value HH (1 to 2 digits)

Examples

Print a text message. Note: quotes are optional:

echo "{{Hello World}}"

Print a message with environment variables:

echo "{{My path is $PATH}}"

Print a message without the trailing newline:

echo -n "{{Hello World}}"

Append a message to the file:

echo "{{Hello World}}" >> {{file.txt}}

Enable interpretation of backslash escapes (special characters):

echo -e "{{Column 1\tColumn 2}}"

Print the exit status of the last executed command (Note: In Windows Command Prompt and PowerShell the equivalent commands are echo %errorlevel% and $lastexitcode respectively):

echo $?

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

env

v0.0.26
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

Set each NAME to VALUE in the environment and run COMMAND

Options

--ignore-environment, -i

start with an empty environment

--chdir=<DIR>, -C <DIR>

change working directory to DIR

--null, -0

end each output line with a 0 byte rather than a newline (only valid when printing the environment)

--file=<PATH>, -f <PATH>

read and set variables from a ".env"-style configuration file (prior to any unset and/or set)

--unset=<NAME>, -u <NAME>

remove variable from the environment

--debug, -v

print verbose information for each processing step

--split-string=<S>, -S <S>

process and split S into separate arguments; used to pass multiple arguments on shebang lines

--argv0=<a>, -a <a>

Override the zeroth argument passed to the command being executed. Without this option a default value of command is used.

A mere - implies -i. If no COMMAND, print the resulting environment.

Examples

Show the environment:

env

Run a program. Often used in scripts after the shebang (#!) for looking up the path to the program:

env {{program}}

Clear the environment and run a program:

env -i {{program}}

Remove variable from the environment and run a program:

env -u {{variable}} {{program}}

Set a variable and run a program:

env {{variable}}={{value}} {{program}}

Set one or more variables and run a program:

env {{variable1}}={{value}} {{variable2}}={{value}} {{variable3}}={{value}} {{program}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

expand

v0.0.26
expand [OPTION]... [FILE]...

Convert tabs in each FILE to spaces, writing to standard output. With no FILE, or when FILE is -, read standard input.

Options

--initial, -i

do not convert tabs after non blanks

--tabs=<N, LIST>, -t <N, LIST>

have tabs N characters apart, not 8 or use comma separated list of explicit tab positions

--no-utf8, -U

interpret input file as 8-bit ASCII rather than UTF-8

Examples

Convert tabs in each file to spaces, writing to stdout:

expand {{path/to/file}}

Convert tabs to spaces, reading from stdin:

expand

Do not convert tabs after non blanks:

expand -i {{path/to/file}}

Have tabs a certain number of characters apart, not 8:

expand -t {{number}} {{path/to/file}}

Use a comma separated list of explicit tab positions:

expand -t {{1,4,6}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

expr

v0.0.26
expr [EXPRESSION]
expr [OPTIONS]

Print the value of EXPRESSION to standard output

Options

--version

output version information and exit

--help

display this help and exit

Print the value of EXPRESSION to standard output. A blank line below separates increasing precedence groups.

EXPRESSION may be:

  • ARG1 | ARG2: ARG1 if it is neither null nor 0, otherwise ARG2
  • ARG1 & ARG2: ARG1 if neither argument is null or 0, otherwise 0
  • ARG1 < ARG2: ARG1 is less than ARG2
  • ARG1 <= ARG2: ARG1 is less than or equal to ARG2
  • ARG1 = ARG2: ARG1 is equal to ARG2
  • ARG1 != ARG2: ARG1 is unequal to ARG2
  • ARG1 >= ARG2: ARG1 is greater than or equal to ARG2
  • ARG1 > ARG2: ARG1 is greater than ARG2
  • ARG1 + ARG2: arithmetic sum of ARG1 and ARG2
  • ARG1 - ARG2: arithmetic difference of ARG1 and ARG2
  • ARG1 * ARG2: arithmetic product of ARG1 and ARG2
  • ARG1 / ARG2: arithmetic quotient of ARG1 divided by ARG2
  • ARG1 % ARG2: arithmetic remainder of ARG1 divided by ARG2
  • STRING : REGEXP: anchored pattern match of REGEXP in STRING
  • match STRING REGEXP: same as STRING : REGEXP
  • substr STRING POS LENGTH: substring of STRING, POS counted from 1
  • index STRING CHARS: index in STRING where any CHARS is found, or 0
  • length STRING: length of STRING
  • + TOKEN: interpret TOKEN as a string, even if it is a keyword like match or an operator like /
  • ( EXPRESSION ): value of EXPRESSION

Beware that many operators need to be escaped or quoted for shells. Comparisons are arithmetic if both ARGs are numbers, else lexicographical. Pattern matches return the string matched between ( and ) or null; if ( and ) are not used, they return the number of characters matched or 0.

Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.

Environment variables:

  • EXPR_DEBUG_TOKENS=1: dump expression's tokens
  • EXPR_DEBUG_RPN=1: dump expression represented in reverse polish notation
  • EXPR_DEBUG_SYA_STEP=1: dump each parser step
  • EXPR_DEBUG_AST=1: dump expression represented abstract syntax tree

Examples

Get the length of a specific string:

expr length "{{string}}"

Get the substring of a string with a specific length:

expr substr "{{string}}" {{from}} {{length}}

Match a specific substring against an anchored pattern:

expr match "{{string}}" '{{pattern}}'

Get the first char position from a specific set in a string:

expr index "{{string}}" "{{chars}}"

Calculate a specific mathematic expression:

expr {{expression1}} {{+|-|*|/|%}} {{expression2}}

Get the first expression if its value is non-zero and not null otherwise get the second one:

expr {{expression1}} \| {{expression2}}

Get the first expression if both expressions are non-zero and not null otherwise get zero:

expr {{expression1}} \& {{expression2}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

factor

v0.0.26
factor [OPTION]... [NUMBER]...

Print the prime factors of the given NUMBER(s). If none are specified, read from standard input.

Options

--exponents, -h

Print factors in the form p^e

--help

Print help information.

Examples

Display the prime-factorization of a number:

factor {{number}}

Take the input from stdin if no argument is specified:

echo {{number}} | factor

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

false

v0.0.26
false

Returns false, an unsuccessful exit status.

Immediately returns with the exit status 1. When invoked with one of the recognized options it will try to write the help or version text. Any IO error during this operation is diagnosed, yet the program will also return 1.

Options

--help

Print help information

--version

Print version information

Examples

Return a non-zero exit code:

false

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

fmt

v0.0.26
fmt [-WIDTH] [OPTION]... [FILE]...

Reformat paragraphs from input files (or stdin) to stdout.

Options

--crown-margin, -c

First and second line of paragraph may have different indentations, in which case the first line's indentation is preserved, and each subsequent line's indentation matches the second line.

--tagged-paragraph, -t

Like -c, except that the first and second line of a paragraph must have different indentation or they are treated as separate paragraphs.

--preserve-headers, -m

Attempt to detect and preserve mail headers in the input. Be careful when combining this flag with -p.

--split-only, -s

Split lines only, do not reflow.

--uniform-spacing, -u

Insert exactly one space between words, and two between sentences. Sentence breaks in the input are detected as [?!.] followed by two spaces or a newline; other punctuation is not interpreted as a sentence break.

--prefix=<PREFIX>, -p <PREFIX>

Reformat only lines beginning with PREFIX, reattaching PREFIX to reformatted lines. Unless -x is specified, leading whitespace will be ignored when matching PREFIX.

--skip-prefix=<PSKIP>, -P <PSKIP>

Do not reformat lines beginning with PSKIP. Unless -X is specified, leading whitespace will be ignored when matching PSKIP

--exact-prefix, -x

PREFIX must match at the beginning of the line with no preceding whitespace.

--exact-skip-prefix, -X

PSKIP must match at the beginning of the line with no preceding whitespace.

--width=<WIDTH>, -w <WIDTH>

Fill output lines up to a maximum of WIDTH columns, default 75. This can be specified as a negative number in the first argument.

--goal=<GOAL>, -g <GOAL>

Goal width, default of 93% of WIDTH. Must be less than or equal to WIDTH.

--quick, -q

Break lines more quickly at the expense of a potentially more ragged appearance.

--tab-width=<TABWIDTH>, -T <TABWIDTH>

Treat tabs as TABWIDTH spaces for determining line length, default 8. Note that this is used only for calculating line lengths; tabs are preserved in the output.

Examples

Reformat a file:

fmt {{path/to/file}}

Reformat a file producing output lines of (at most) n characters:

fmt -w {{n}} {{path/to/file}}

Reformat a file without joining lines shorter than the given width together:

fmt -s {{path/to/file}}

Reformat a file with uniform spacing (1 space between words and 2 spaces between paragraphs):

fmt -u {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

fold

v0.0.26
fold [OPTION]... [FILE]...

Writes each file (or standard input if no files are given) to standard output whilst breaking long lines

Options

--bytes, -b

count using bytes rather than columns (meaning control characters such as newline are not treated specially)

--spaces, -s

break lines at word boundaries rather than a hard cut-off

--width=<WIDTH>, -w <WIDTH>

set WIDTH as the maximum line width rather than 80

Examples

Wrap each line to default width (80 characters):

fold {{path/to/file}}

Wrap each line to width "30":

fold -w30 {{path/to/file}}

Wrap each line to width "5" and break the line at spaces (puts each space separated word in a new line, words with length > 5 are wrapped):

fold -w5 -s {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

groups

v0.0.26
groups [OPTION]... [USERNAME]...

Print group memberships for each USERNAME or, if no USERNAME is specified, for the current process (which may differ if the groups data‐base has changed).

Options

Examples

Print group memberships for the current user:

groups

Print group memberships for a list of users:

groups {{username1 username2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

hashsum

v0.0.26
hashsum [OPTIONS] [FILE]...

Compute and check message digests.

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

--bits=<BITS>

set the size of the output (only for SHAKE)

--no-names

Omits filenames in the output (option not present in GNU/Coreutils)

--md5

work with MD5

--sha1

work with SHA1

--sha224

work with SHA224

--sha256

work with SHA256

--sha384

work with SHA384

--sha512

work with SHA512

--sha3

work with SHA3

--sha3-224

work with SHA3-224

--sha3-256

work with SHA3-256

--sha3-384

work with SHA3-384

--sha3-512

work with SHA3-512

--shake128

work with SHAKE128 using BITS for the output size

--shake256

work with SHAKE256 using BITS for the output size

--b2sum

work with BLAKE2

--b3sum

work with BLAKE3

head

v0.0.26
head [FLAG]... [FILE]...

Print the first 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long flags are mandatory for short flags too.

Options

--bytes=<[-]NUM>, -c <[-]NUM>

print the first NUM bytes of each file;
with the leading '-', print all but the last
NUM bytes of each file

--lines=<[-]NUM>, -n <[-]NUM>

print the first NUM lines instead of the first 10;
with the leading '-', print all but the last
NUM lines of each file

--quiet, --silent, -q

never print headers giving file names

--verbose, -v

always print headers giving file names

--presume-input-pipe
--zero-terminated, -z

line delimiter is NUL, not newline

Examples

Output the first few lines of a file:

head -n {{count}} {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

hostid

v0.0.26
hostid [options]

Print the numeric identifier (in hexadecimal) for the current host

Options

Examples

Display the numeric identifier for the current host in hexadecimal:

hostid

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

hostname

v0.0.26
hostname [OPTION]... [HOSTNAME]

Display or set the system's host name.

Options

--domain, -d

Display the name of the DNS domain if possible

--ip-address, -i

Display the network address(es) of the host

--fqdn, -f

Display the FQDN (Fully Qualified Domain Name) (default)

--short, -s

Display the short hostname (the portion before the first dot) if possible

Examples

Show current host name:

hostname

Show the network address of the host name:

hostname -i

Show all network addresses of the host:

hostname -I

Show the FQDN (Fully Qualified Domain Name):

hostname --fqdn

Set current host name:

hostname {{new_hostname}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

id

v0.0.26
id [OPTION]... [USER]...

Print user and group information for each specified USER, or (when USER omitted) for the current user.

Options

-A

Display the process audit user ID and other process audit properties,
which requires privilege (not available on Linux).

--user, -u

Display only the effective user ID as a number.

--group, -g

Display only the effective group ID as a number

--groups, -G

Display only the different group IDs as white-space separated numbers, in no particular order.

-p

Make the output human-readable. Each display is on a separate line.

--name, -n

Display the name of the user or group ID for the -G, -g and -u options instead of the number.
If any of the ID numbers cannot be mapped into names, the number will be displayed as usual.

-P

Display the id as a password file entry.

--real, -r

Display the real ID for the -G, -g and -u options instead of the effective ID.

--zero, -z

delimit entries with NUL characters, not whitespace;
not permitted in default format

--context, -Z

print only the security context of the process

The id utility displays the user and group names and numeric IDs, of the calling process, to the standard output. If the real and effective IDs are different, both are displayed, otherwise only the real ID is displayed.

If a user (login name or user ID) is specified, the user and group IDs of that user are displayed. In this case, the real and effective IDs are assumed to be the same.

Examples

Display current user's ID (UID), group ID (GID) and groups to which they belong:

id

Display the current user identity as a number:

id -u

Display the current group identity as a number:

id -g

Display an arbitrary user's ID (UID), group ID (GID) and groups to which they belong:

id {{username}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

install

v0.0.26
install [OPTION]... [FILE]...

Copy SOURCE to DEST or multiple SOURCE(s) to the existing DIRECTORY, while setting permission modes and owner/group

Options

--backup=<CONTROL>

make a backup of each existing destination file

-b

like --backup but does not accept an argument

-c

ignored

--compare, -C

compare each pair of source and destination files, and in some cases, do not modify the destination at all

--directory, -d

treat all arguments as directory names. create all components of the specified directories

-D

create all leading components of DEST except the last, then copy SOURCE to DEST

--group=<GROUP>, -g <GROUP>

set group ownership, instead of process's current group

--mode=<MODE>, -m <MODE>

set permission mode (as in chmod), instead of rwxr-xr-x

--owner=<OWNER>, -o <OWNER>

set ownership (super-user only)

--preserve-timestamps, -p

apply access/modification times of SOURCE files to corresponding destination files

--strip, -s

strip symbol tables (no action Windows)

--strip-program=<PROGRAM>

program used to strip binaries (no action Windows)

--suffix=<SUFFIX>, -S <SUFFIX>

override the usual backup suffix

--target-directory=<DIRECTORY>, -t <DIRECTORY>

move all SOURCE arguments into DIRECTORY

--no-target-directory, -T

(unimplemented) treat DEST as a normal file

--verbose, -v

explain what is being done

--preserve-context, -P

(unimplemented) preserve security context

--context=<CONTEXT>, -Z <CONTEXT>

(unimplemented) set security context of files and directories

Examples

Copy files to the destination:

install {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

Copy files to the destination, setting their ownership:

install --owner {{user}} {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

Copy files to the destination, setting their group ownership:

install --group {{user}} {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

Copy files to the destination, setting their mode:

install --mode {{+x}} {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

Copy files and apply access/modification times of source to the destination:

install --preserve-timestamps {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

Copy files and create the directories at the destination if they don't exist:

install -D {{path/to/source_file1 path/to/source_file2 ...}} {{path/to/destination}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

join

v0.0.26
join [OPTION]... FILE1 FILE2

For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by blanks.

When FILE1 or FILE2 (not both) is -, read standard input.

Options

-a <FILENUM>

also print unpairable lines from file FILENUM, where
FILENUM is 1 or 2, corresponding to FILE1 or FILE2

-v <FILENUM>

like -a FILENUM, but suppress joined output lines

-e <EMPTY>

replace missing input fields with EMPTY

--ignore-case, -i

ignore differences in case when comparing fields

-j <FIELD>

equivalent to '-1 FIELD -2 FIELD'

-o <FORMAT>

obey FORMAT while constructing output line

-t <CHAR>

use CHAR as input and output field separator

-1 <FIELD>

join on this FIELD of file 1

-2 <FIELD>

join on this FIELD of file 2

--check-order

check that the input is correctly sorted, even if all input lines are pairable

--nocheck-order

do not check that the input is correctly sorted

--header

treat the first line in each file as field headers, print them without trying to pair them

--zero-terminated, -z

line delimiter is NUL, not newline

Examples

Join two files on the first (default) field:

join {{path/to/file1}} {{path/to/file2}}

Join two files using a comma (instead of a space) as the field separator:

join -t {{','}} {{path/to/file1}} {{path/to/file2}}

Join field3 of file1 with field1 of file2:

join -1 {{3}} -2 {{1}} {{path/to/file1}} {{path/to/file2}}

Produce a line for each unpairable line for file1:

join -a {{1}} {{path/to/file1}} {{path/to/file2}}

Join a file from stdin:

cat {{path/to/file1}} | join - {{path/to/file2}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

kill

v0.0.26
kill [OPTIONS]... PID...

Send signal to processes or list information about signals.

Options

--list, -l

Lists signals

--table, -t

Lists table of signals

--signal=<signal>, -s <signal>

Sends given signal instead of SIGTERM

Examples

Terminate a program using the default SIGTERM (terminate) signal:

kill {{process_id}}

List available signal names (to be used without the SIG prefix):

kill -l

Terminate a program using the SIGHUP (hang up) signal. Many daemons will reload instead of terminating:

kill -{{1|HUP}} {{process_id}}

Terminate a program using the SIGINT (interrupt) signal. This is typically initiated by the user pressing Ctrl + C:

kill -{{2|INT}} {{process_id}}

Signal the operating system to immediately terminate a program (which gets no chance to capture the signal):

kill -{{9|KILL}} {{process_id}}

Signal the operating system to pause a program until a SIGCONT ("continue") signal is received:

kill -{{17|STOP}} {{process_id}}

Send a SIGUSR1 signal to all processes with the given GID (group id):

kill -{{SIGUSR1}} -{{group_id}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

link

v0.0.26
link FILE1 FILE2

Call the link function to create a link named FILE2 to an existing FILE1.

Options

Examples

Create a hard link from a new file to an existing file:

link {{path/to/existing_file}} {{path/to/new_file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

ln

v0.0.26
ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...

Make links between files.

Options

--backup=<CONTROL>

make a backup of each existing destination file

-b

like --backup but does not accept an argument

--force, -f

remove existing destination files

--interactive, -i

prompt whether to remove existing destination files

--no-dereference, -n

treat LINK_NAME as a normal file if it is a symbolic link to a directory

--logical, -L

follow TARGETs that are symbolic links

--physical, -P

make hard links directly to symbolic links

--symbolic, -s

make symbolic links instead of hard links

--suffix=<SUFFIX>, -S <SUFFIX>

override the usual backup suffix

--target-directory=<DIRECTORY>, -t <DIRECTORY>

specify the DIRECTORY in which to create the links

--no-target-directory, -T

treat LINK_NAME as a normal file always

--relative, -r

create symbolic links relative to link location

--verbose, -v

print name of each linked file

In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd form, create a link to TARGET in the current directory. In the 3rd and 4th forms, create links to each TARGET in DIRECTORY. Create hard links by default, symbolic links with --symbolic. By default, each destination (name of new link) should not already exist. When creating hard links, each TARGET must exist. Symbolic links can hold arbitrary text; if later resolved, a relative link is interpreted in relation to its parent directory.

Examples

Create a symbolic link to a file or directory:

ln -s {{/path/to/file_or_directory}} {{path/to/symlink}}

Overwrite an existing symbolic link to point to a different file:

ln -sf {{/path/to/new_file}} {{path/to/symlink}}

Create a hard link to a file:

ln {{/path/to/file}} {{path/to/hardlink}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

logname

v0.0.26
logname

Print user's login name

Options

Examples

Display the currently logged in user's name:

logname

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

ls

v0.0.26
ls [OPTION]... [FILE]...

List directory contents. Ignore files and directories starting with a '.' by default

Options

--help

Print help information.

--format

Set the display format.

-C

Display the files in columns.

--long, -l

Display detailed information.

-x

List entries in rows instead of in columns.

--tabsize=<COLS>, -T <COLS>

Assume tab stops at each COLS instead of 8 (unimplemented)

-m

List entries separated by commas.

--zero

List entries separated by ASCII NUL characters.

--dired, -D

generate output designed for Emacs' dired (Directory Editor) mode

--hyperlink=<WHEN>

hyperlink file names WHEN

-1

List one file per line.

-o

Long format without group information. Identical to --format=long with --no-group.

-g

Long format without owner information.

--numeric-uid-gid, -n

-l with numeric UIDs and GIDs.

--quoting-style

Set quoting style.

--literal, -N

Use literal quoting style. Equivalent to --quoting-style=literal

--escape, -b

Use escape quoting style. Equivalent to --quoting-style=escape

--quote-name, -Q

Use C quoting style. Equivalent to --quoting-style=c

--hide-control-chars, -q

Replace control characters with '?' if they are not escaped.

--show-control-chars

Show control characters 'as is' if they are not escaped.

--time=<field>

Show time in :
access time (-u): atime, access, use;
change time (-t): ctime, status.
birth time: birth, creation;

-c

If the long listing format (e.g., -l, -o) is being used, print the status change time (the 'ctime' in the inode) instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the status change time.

-u

If the long listing format (e.g., -l, -o) is being used, print the status access time instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the access time.

--hide=<PATTERN>

do not list implied entries matching shell PATTERN (overridden by -a or -A)

--ignore=<PATTERN>, -I <PATTERN>

do not list implied entries matching shell PATTERN

--ignore-backups, -B

Ignore entries which end with ~.

--sort=<field>

Sort by : name, none (-U), time (-t), size (-S), extension (-X) or width

-S

Sort by file size, largest first.

-t

Sort by modification time (the 'mtime' in the inode), newest first.

-v

Natural sort of (version) numbers in the filenames.

-X

Sort alphabetically by entry extension.

-U

Do not sort; list the files in whatever order they are stored in the directory. This is especially useful when listing very large directories, since not doing any sorting can be noticeably faster.

--dereference, -L

When showing file information for a symbolic link, show information for the file the link references rather than the link itself.

--dereference-command-line-symlink-to-dir

Do not follow symlinks except when they link to directories and are given as command line arguments.

--dereference-command-line, -H

Do not follow symlinks except when given as command line arguments.

--no-group, -G

Do not show group in long format.

--author

Show author in long format. On the supported platforms, the author always matches the file owner.

--all, -a

Do not ignore hidden files (files with names that start with '.').

--almost-all, -A

In a directory, do not ignore all file names that start with '.', only ignore '.' and '..'.

--directory, -d

Only list the names of directories, rather than listing directory contents. This will not follow symbolic links unless one of --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir is specified.

--human-readable, -h

Print human readable file sizes (e.g. 1K 234M 56G).

--kibibytes, -k

default to 1024-byte blocks for file system usage; used only with -s and per directory totals

--si

Print human readable file sizes using powers of 1000 instead of 1024.

--block-size=<BLOCK_SIZE>

scale sizes by BLOCK_SIZE when printing them

--inode, -i

print the index number of each file

--reverse, -r

Reverse whatever the sorting method is e.g., list files in reverse alphabetical order, youngest first, smallest first, or whatever.

--recursive, -R

List the contents of all directories recursively.

--width=<COLS>, -w <COLS>

Assume that the terminal is COLS columns wide.

--size, -s

print the allocated size of each file, in blocks

--color

Color output based on file type.

--indicator-style

Append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F)

--classify=<when>, -F <when>

Append a character to each file name indicating the file type. Also, for regular files that are executable, append '*'. The file type indicators are '/' for directories, '@' for symbolic links, '|' for FIFOs, '=' for sockets, '>' for doors, and nothing for regular files. when may be omitted, or one of:
none - Do not classify. This is the default.
auto - Only classify if standard output is a terminal.
always - Always classify.
Specifying --classify and no when is equivalent to --classify=always. This will not follow symbolic links listed on the command line unless the --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir options are specified.

--file-type

Same as --classify, but do not append '*'

-p

Append / indicator to directories.

--time-style=<TIME_STYLE>

time/date format with -l; see TIME_STYLE below

--full-time

like -l --time-style=full-iso

--context, -Z

print any security context of each file

--group-directories-first

group directories before files; can be augmented with a --sort option, but any use of --sort=none (-U) disables grouping

The TIME_STYLE argument can be full-iso, long-iso, iso, locale or +FORMAT. FORMAT is interpreted like in date. Also the TIME_STYLE environment variable sets the default style to use.

Examples

List files one per line:

ls -1

List all files, including hidden files:

ls -a

List all files, with trailing / added to directory names:

ls -F

Long format list (permissions, ownership, size, and modification date) of all files:

ls -la

Long format list with size displayed using human-readable units (KiB, MiB, GiB):

ls -lh

Long format list sorted by size (descending) recursively:

ls -lSR

Long format list of all files, sorted by modification date (oldest first):

ls -ltr

Only list directories:

ls -d */

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

md5sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the MD5 checksum for one or more files:

md5sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of MD5 checksums to a file:

md5sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.md5}}

Calculate an MD5 checksum from stdin:

{{command}} | md5sum

Read a file of MD5 sums and filenames and verify all files have matching checksums:

md5sum --check {{path/to/file.md5}}

Only show a message for missing files or when verification fails:

md5sum --check --quiet {{path/to/file.md5}}

Only show a message when verification fails, ignoring missing files:

md5sum --ignore-missing --check --quiet {{path/to/file.md5}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

mkdir

v0.0.26
mkdir [OPTION]... DIRECTORY...

Create the given DIRECTORY(ies) if they do not exist

Options

--mode, -m

set file mode (not implemented on windows)

--parents, -p

make parent directories as needed

--verbose, -v

print a message for each printed directory

Each MODE is of the form '[ugoa]*(-+=)+|[-+=]?[0-7]+'.

Examples

Create specific directories:

mkdir {{path/to/directory1 path/to/directory2 ...}}

Create specific directories and their [p]arents if needed:

mkdir -p {{path/to/directory1 path/to/directory2 ...}}

Create directories with specific permissions:

mkdir -m {{rwxrw-r--}} {{path/to/directory1 path/to/directory2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

mkfifo

v0.0.26
mkfifo [OPTION]... NAME...

Create a FIFO with the given name.

Options

--mode=<MODE>, -m <MODE>

file permissions for the fifo

-Z

set the SELinux security context to default type

--context=<CTX>

like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX

Examples

Create a named pipe at a given path:

mkfifo {{path/to/pipe}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

mknod

v0.0.26
mknod [OPTION]... NAME TYPE [MAJOR MINOR]

Create the special file NAME of the given TYPE.

Options

--mode=<MODE>, -m <MODE>

set file permission bits to MODE, not a=rw - umask

name of the new file

type of the new file (b, c, u or p)

major file type

minor file type

Mandatory arguments to long options are mandatory for short options too. -m, --mode=MODE set file permission bits to MODE, not a=rw - umask

Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X, it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal; otherwise, as decimal. TYPE may be:

  • b create a block (buffered) special file
  • c, u create a character (unbuffered) special file
  • p create a FIFO

NOTE: your shell may have its own version of mknod, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

Examples

Create a block device:

sudo mknod {{path/to/device_file}} b {{major_device_number}} {{minor_device_number}}

Create a character device:

sudo mknod {{path/to/device_file}} c {{major_device_number}} {{minor_device_number}}

Create a FIFO (queue) device:

sudo mknod {{path/to/device_file}} p

Create a device file with default SELinux security context:

sudo mknod -Z {{path/to/device_file}} {{type}} {{major_device_number}} {{minor_device_number}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

mktemp

v0.0.26
mktemp [OPTION]... [TEMPLATE]

Create a temporary file or directory.

Options

--directory, -d

Make a directory instead of a file

--dry-run, -u

do not create anything; merely print a name (unsafe)

--quiet, -q

Fail silently if an error occurs.

--suffix=<SUFFIX>

append SUFFIX to TEMPLATE; SUFFIX must not contain a path separator. This option is implied if TEMPLATE does not end with X.

-p <DIR>

short form of --tmpdir

--tmpdir=<DIR>

interpret TEMPLATE relative to DIR; if DIR is not specified, use $TMPDIR ($TMP on windows) if set, else /tmp. With this option, TEMPLATE must not be an absolute name; unlike with -t, TEMPLATE may contain slashes, but mktemp creates only the final component

-t

Generate a template (using the supplied prefix and TMPDIR (TMP on windows) if set) to create a filename template [deprecated]

Examples

Create an empty temporary file and print its absolute path:

mktemp

Use a custom directory if $TMPDIR is not set (the default is platform-dependent, but usually /tmp):

mktemp -p {{/path/to/tempdir}}

Use a custom path template (Xs are replaced with random alphanumeric characters):

mktemp {{/tmp/example.XXXXXXXX}}

Use a custom file name template:

mktemp -t {{example.XXXXXXXX}}

Create an empty temporary directory and print its absolute path:

mktemp -d

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

more

v0.0.26
more [OPTIONS] FILE...

Display the contents of a text file

Options

--print-over, -c

Do not scroll, display text and clean line ends

--silent, -d

Display help instead of ringing bell

--clean-print, -p

Do not scroll, clean screen and display text

--squeeze, -s

Squeeze multiple blank lines into one

--plain, -u
--pattern=<pattern>, -P <pattern>

Display file beginning from pattern match

--from-line=<number>, -F <number>

Display file beginning from line number

--lines=<number>, -n <number>

The number of lines per screen full

--number

Same as --lines

Path to the files to be read

Examples

Open a file:

more {{path/to/file}}

Search case-[i]nsensitively when pressing "/":

more -i {{path/to/file}}

Display a specific line:

more +{{line_number}} {{path/to/file}}

Go to the next page:

<Space>

Search for a string (press n to go to the next match):

/{{something}}

Exit:

q

Display help about interactive commands:

h

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

mv

v0.0.26
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

Move SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Options

--force, -f

do not prompt before overwriting

--interactive, -i

prompt before override

--no-clobber, -n

do not overwrite an existing file

--strip-trailing-slashes

remove any trailing slashes from each SOURCE argument

--backup=<CONTROL>

make a backup of each existing destination file

-b

like --backup but does not accept an argument

--suffix=<SUFFIX>, -S <SUFFIX>

override the usual backup suffix

--update

move only when the SOURCE file is newer than the destination file or when the destination file is missing

-u

like --update but does not accept an argument

--target-directory=<DIRECTORY>, -t <DIRECTORY>

move all SOURCE arguments into DIRECTORY

--no-target-directory, -T

treat DEST as a normal file

--verbose, -v

explain what is being done

--progress, -g

Display a progress bar.
Note: this feature is not supported by GNU coreutils.

When specifying more than one of -i, -f, -n, only the final one will take effect.

Do not move a non-directory that has an existing destination with the same or newer modification timestamp; instead, silently skip the file without failing. If the move is across file system boundaries, the comparison is to the source timestamp truncated to the resolutions of the destination file system and of the system calls used to update timestamps; this avoids duplicate work if several mv -u commands are executed with the same source and destination. This option is ignored if the -n or --no-clobber option is also specified. which gives more control over which existing files in the destination are replaced, and its value can be one of the following:

  • all This is the default operation when an --update option is not specified, and results in all existing files in the destination being replaced.
  • none This is similar to the --no-clobber option, in that no files in the destination are replaced, but also skipping a file does not induce a failure.
  • older This is the default operation when --update is specified, and results in files being replaced if they’re older than the corresponding source file.

Examples

Rename a file or directory when the target is not an existing directory:

mv {{path/to/source}} {{path/to/target}}

Move a file or directory into an existing directory:

mv {{path/to/source}} {{path/to/existing_directory}}

Move multiple files into an existing directory, keeping the filenames unchanged:

mv {{path/to/source1 path/to/source2 ...}} {{path/to/existing_directory}}

Do not prompt for confirmation before overwriting existing files:

mv -f {{path/to/source}} {{path/to/target}}

Prompt for confirmation before overwriting existing files, regardless of file permissions:

mv -i {{path/to/source}} {{path/to/target}}

Do not overwrite existing files at the target:

mv -n {{path/to/source}} {{path/to/target}}

Move files in verbose mode, showing files after they are moved:

mv -v {{path/to/source}} {{path/to/target}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

nice

v0.0.26
nice [OPTIONS] [COMMAND [ARGS]]

Run COMMAND with an adjusted niceness, which affects process scheduling. With no COMMAND, print the current niceness. Niceness values range from at least -20 (most favorable to the process) to 19 (least favorable to the process).

Options

--adjustment, -n

add N to the niceness (default is 10)

Examples

Launch a program with altered priority:

nice -n {{niceness_value}} {{command}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

nl

v0.0.26
nl [OPTION]... [FILE]...

Number lines of files

Options

--help

Print help information.

--body-numbering=<STYLE>, -b <STYLE>

use STYLE for numbering body lines

--section-delimiter=<CC>, -d <CC>

use CC for separating logical pages

--footer-numbering=<STYLE>, -f <STYLE>

use STYLE for numbering footer lines

--header-numbering=<STYLE>, -h <STYLE>

use STYLE for numbering header lines

--line-increment=<NUMBER>, -i <NUMBER>

line number increment at each line

--join-blank-lines=<NUMBER>, -l <NUMBER>

group of NUMBER empty lines counted as one

--number-format=<FORMAT>, -n <FORMAT>

insert line numbers according to FORMAT

--no-renumber, -p

do not reset line numbers at logical pages

--number-separator=<STRING>, -s <STRING>

add STRING after (possible) line number

--starting-line-number=<NUMBER>, -v <NUMBER>

first line number on each logical page

--number-width=<NUMBER>, -w <NUMBER>

use NUMBER columns for line numbers

STYLE is one of:

  • a number all lines
  • t number only nonempty lines
  • n number no lines
  • pBRE number only lines that contain a match for the basic regular expression, BRE

FORMAT is one of:

  • ln left justified, no leading zeros
  • rn right justified, no leading zeros
  • rz right justified, leading zeros

Examples

Number non-blank lines in a file:

nl {{path/to/file}}

Read from stdin:

{{command}} | nl -

Number [a]ll [b]ody lines including blank lines or do [n]ot number body lines:

nl -b {{a|n}} {{path/to/file}}

Number only the [b]ody lines that match a basic regular expression (BRE) [p]attern:

nl -b p'FooBar[0-9]' {{path/to/file}}

Use a specific [i]ncrement for line numbering:

nl -i {{increment}} {{path/to/file}}

Specify the line numbering format to [r]ight or [l]eft justified, keeping leading [z]eros or [n]ot:

nl -n {{rz|ln|rn}}

Specify the line numbering's [w]idth (6 by default):

nl -w {{col_width}} {{path/to/file}}

Use a specific string to [s]eparate the line numbers from the lines (TAB by default):

nl -s {{separator}} {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

nohup

v0.0.26
nohup COMMAND [ARG]...
nohup OPTION

Run COMMAND ignoring hangup signals.

Options

If standard input is terminal, it'll be replaced with /dev/null. If standard output is terminal, it'll be appended to nohup.out instead, or $HOME/nohup.out, if nohup.out open failed. If standard error is terminal, it'll be redirected to stdout.

Examples

Run a process that can live beyond the terminal:

nohup {{command}} {{argument1 argument2 ...}}

Launch nohup in background mode:

nohup {{command}} {{argument1 argument2 ...}} &

Run a shell script that can live beyond the terminal:

nohup {{path/to/script.sh}} &

Run a process and write the output to a specific file:

nohup {{command}} {{argument1 argument2 ...}} > {{path/to/output_file}} &

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

nproc

v0.0.26
nproc [OPTIONS]...

Print the number of cores available to the current process. If the OMP_NUM_THREADS or OMP_THREAD_LIMIT environment variables are set, then they will determine the minimum and maximum returned value respectively.

Options

--all

print the number of cores available to the system

--ignore=<N>

ignore up to N cores

Examples

Display the number of available processing units:

nproc

Display the number of installed processing units, including any inactive ones:

nproc --all

If possible, subtract a given number of units from the returned value:

nproc --ignore {{count}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

numfmt

v0.0.26
numfmt [OPTION]... [NUMBER]...

Convert numbers from/to human-readable strings

Options

--delimiter=<X>, -d <X>

use X instead of whitespace for field delimiter

--field=<FIELDS>

replace the numbers in these input fields; see FIELDS below

--format=<FORMAT>

use printf style floating-point FORMAT; see FORMAT below for details

--from=<UNIT>

auto-scale input numbers to UNITs; see UNIT below

--from-unit=<N>

specify the input unit size

--to=<UNIT>

auto-scale output numbers to UNITs; see UNIT below

--to-unit=<N>

the output unit size

--padding=<N>

pad the output to N characters; positive N will right-align; negative N will left-align; padding is ignored if the output is wider than N; the default is to automatically pad if a whitespace is found

--header=<N>

print (without converting) the first N header lines; N defaults to 1 if not specified

--round=<METHOD>

use METHOD for rounding when scaling

--suffix=<SUFFIX>

print SUFFIX after each formatted number, and accept inputs optionally ending with SUFFIX

--invalid=<INVALID>

set the failure mode for invalid input

UNIT options:

  • none: no auto-scaling is done; suffixes will trigger an error

  • auto: accept optional single/two letter suffix:

    1K = 1000, 1Ki = 1024, 1M = 1000000, 1Mi = 1048576,

  • si: accept optional single letter suffix:

    1K = 1000, 1M = 1000000, ...

  • iec: accept optional single letter suffix:

    1K = 1024, 1M = 1048576, ...

  • iec-i: accept optional two-letter suffix:

    1Ki = 1024, 1Mi = 1048576, ...

  • FIELDS supports cut(1) style field ranges:

    N N'th field, counted from 1 N- from N'th field, to end of line N-M from N'th to M'th field (inclusive) -M from first to M'th field (inclusive)

    • all fields

Multiple fields/ranges can be separated with commas

FORMAT must be suitable for printing one floating-point argument %f. Optional quote (%'f) will enable --grouping (if supported by current locale). Optional width value (%10f) will pad output. Optional zero (%010f) width will zero pad the number. Optional negative values (%-10f) will left align. Optional precision (%.1f) will override the input determined precision.

Examples

Convert 1.5K (SI Units) to 1500:

numfmt --from={{si}} {{1.5K}}

Convert 5th field (1-indexed) to IEC Units without converting header:

ls -l | numfmt --header={{1}} --field={{5}} --to={{iec}}

Convert to IEC units, pad with 5 characters, left aligned:

du -s * | numfmt --to={{iec}} --format="{{%-5f}}"

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

od

v0.0.26
od [OPTION]... [--] [FILENAME]...
od [-abcdDefFhHiIlLoOsxX] [FILENAME] [[+][0x]OFFSET[.][b]]
od --traditional [OPTION]... [FILENAME] [[+][0x]OFFSET[.][b] [[+][0x]LABEL[.][b]]]

Dump files in octal and other formats

Options

--help

Print help information.

--address-radix=<RADIX>, -A <RADIX>

Select the base in which file offsets are printed.

--skip-bytes=<BYTES>, -j <BYTES>

Skip bytes input bytes before formatting and writing.

--read-bytes=<BYTES>, -N <BYTES>

limit dump to BYTES input bytes

--endian=<big|little>

byte order to use for multi-byte formats

--strings=<BYTES>, -S <BYTES>

NotImplemented: output strings of at least BYTES graphic chars. 3 is assumed when BYTES is not specified.

-a

named characters, ignoring high-order bit

-b

octal bytes

-c

ASCII characters or backslash escapes

-d

unsigned decimal 2-byte units

-D

unsigned decimal 4-byte units

-o

octal 2-byte units

-I

decimal 8-byte units

-L

decimal 8-byte units

-i

decimal 4-byte units

-l

decimal 8-byte units

-x

hexadecimal 2-byte units

-h

hexadecimal 2-byte units

-O

octal 4-byte units

-s

decimal 2-byte units

-X

hexadecimal 4-byte units

-H

hexadecimal 4-byte units

-e

floating point double precision (64-bit) units

-f

floating point double precision (32-bit) units

-F

floating point double precision (64-bit) units

--format=<TYPE>, -t <TYPE>

select output format or formats

--output-duplicates, -v

do not use * to mark line suppression

--width=<BYTES>, -w <BYTES>

output BYTES bytes per output line. 32 is implied when BYTES is not specified.

--traditional

compatibility mode with one input, offset and label.

Displays data in various human-readable formats. If multiple formats are specified, the output will contain all formats in the order they appear on the command line. Each format will be printed on a new line. Only the line containing the first format will be prefixed with the offset.

If no filename is specified, or it is "-", stdin will be used. After a "--", no more options will be recognized. This allows for filenames starting with a "-".

If a filename is a valid number which can be used as an offset in the second form, you can force it to be recognized as a filename if you include an option like "-j0", which is only valid in the first form.

RADIX is one of o,d,x,n for octal, decimal, hexadecimal or none.

BYTES is decimal by default, octal if prefixed with a "0", or hexadecimal if prefixed with "0x". The suffixes b, KB, K, MB, M, GB, G, will multiply the number with 512, 1000, 1024, 1000^2, 1024^2, 1000^3, 1024^3, 1000^2, 1024^2.

OFFSET and LABEL are octal by default, hexadecimal if prefixed with "0x" or decimal if a "." suffix is added. The "b" suffix will multiply with 512.

TYPE contains one or more format specifications consisting of: a for printable 7-bits ASCII c for utf-8 characters or octal for undefined characters d[SIZE] for signed decimal f[SIZE] for floating point o[SIZE] for octal u[SIZE] for unsigned decimal x[SIZE] for hexadecimal SIZE is the number of bytes which can be the number 1, 2, 4, 8 or 16, or C, I, S, L for 1, 2, 4, 8 bytes for integer types, or F, D, L for 4, 8, 16 bytes for floating point. Any type specification can have a "z" suffix, which will add a ASCII dump at the end of the line.

If an error occurred, a diagnostic message will be printed to stderr, and the exit code will be non-zero.

Examples

Display file using default settings: octal format, 8 bytes per line, byte offsets in octal, and duplicate lines replaced with *:

od {{path/to/file}}

Display file in verbose mode, i.e. without replacing duplicate lines with *:

od -v {{path/to/file}}

Display file in hexadecimal format (2-byte units), with byte offsets in decimal format:

od --format={{x}} --address-radix={{d}} -v {{path/to/file}}

Display file in hexadecimal format (1-byte units), and 4 bytes per line:

od --format={{x1}} --width={{4}} -v {{path/to/file}}

Display file in hexadecimal format along with its character representation, and do not print byte offsets:

od --format={{xz}} --address-radix={{n}} -v {{path/to/file}}

Read only 100 bytes of a file starting from the 500th byte:

od --read-bytes {{100}} --skip-bytes={{500}} -v {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

paste

v0.0.26
paste [OPTIONS] [FILE]...

Write lines consisting of the sequentially corresponding lines from each FILE, separated by TABs, to standard output.

Options

--serial, -s

paste one file at a time instead of in parallel

--delimiters=<LIST>, -d <LIST>

reuse characters from LIST instead of TABs

--zero-terminated, -z

line delimiter is NUL, not newline

Examples

Join all the lines into a single line, using TAB as delimiter:

paste -s {{path/to/file}}

Join all the lines into a single line, using the specified delimiter:

paste -s -d {{delimiter}} {{path/to/file}}

Merge two files side by side, each in its column, using TAB as delimiter:

paste {{file1}} {{file2}}

Merge two files side by side, each in its column, using the specified delimiter:

paste -d {{delimiter}} {{file1}} {{file2}}

Merge two files, with lines added alternatively:

paste -d '\n' {{file1}} {{file2}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

pathchk

v0.0.26
pathchk [OPTION]... NAME...

Check whether file names are valid or portable

Options

-p

check for most POSIX systems

-P

check for empty names and leading "-"

--portability

check for all POSIX systems (equivalent to -p -P)

Examples

Check pathnames for validity in the current system:

pathchk {{path1 path2 …}}

Check pathnames for validity on a wider range of POSIX compliant systems:

pathchk -p {{path1 path2 …}}

Check pathnames for validity on all POSIX compliant systems:

pathchk --portability {{path1 path2 …}}

Only check for empty pathnames or leading dashes (-):

pathchk -P {{path1 path2 …}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

pinky

v0.0.26
pinky [OPTION]... [USER]...

Displays brief user information on Unix-based systems

Options

-l

produce long format output for the specified USERs

-b

omit the user's home directory and shell in long format

-h

omit the user's project file in long format

-p

omit the user's plan file in long format

-s

do short format output, this is the default

-f

omit the line of column headings in short format

-w

omit the user's full name in short format

-i

omit the user's full name and remote host in short format

-q

omit the user's full name, remote host and idle time in short format

--help

Print help information

Examples

Display details about the current user:

pinky

Display details for a specific user:

pinky {{user}}

Display details in the long format:

pinky {{user}} -l

Omit the user's home directory and shell in long format:

pinky {{user}} -lb

Omit the user's project file in long format:

pinky {{user}} -lh

Omit the column headings in short format:

pinky {{user}} -f

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

pr

v0.0.26
pr [OPTION]... [FILE]...

Write content of given file or standard input to standard output with pagination filter

Options

--pages=<FIRST_PAGE[:LAST_PAGE]>

Begin and stop printing with page FIRST_PAGE[:LAST_PAGE]

--header=<STRING>, -h <STRING>

Use the string header to replace the file name in the header line.

--double-space, -d

Produce output that is double spaced. An extra character is output following every found in the input.

--number-lines=<[char][width]>, -n <[char][width]>

Provide width digit line numbering. The default for width, if not specified, is 5. The number occupies the first width column positions of each text column or each line of -m output. If char (any non-digit character) is given, it is appended to the line number to separate it from whatever follows. The default for char is a . Line numbers longer than width columns are truncated.

--first-line-number=<NUMBER>, -N <NUMBER>

start counting with NUMBER at 1st line of first page printed

--omit-header, -t

Write neither the five-line identifying header nor the five-line trailer usually supplied for each page. Quit writing after the last line of each file without spacing to the end of the page.

--length=<PAGE_LENGTH>, -l <PAGE_LENGTH>

Override the 66-line default (default number of lines of text 56, and with -F 63) and reset the page length to lines. If lines is not greater than the sum of both the header and trailer depths (in lines), the pr utility shall suppress both the header and trailer, as if the -t option were in effect.

--no-file-warnings, -r

omit warning when a file cannot be opened

--form-feed, -F

Use a for new pages, instead of the default behavior that uses a sequence of s.

--width=<width>, -w <width>

Set the width of the line to width column positions for multiple text-column output only. If the -w option is not specified and the -s option is not specified, the default width shall be 72. If the -w option is not specified and the -s option is specified, the default width shall be 512.

--page-width=<width>, -W <width>

set page width to PAGE_WIDTH (72) characters always, truncate lines, except -J option is set, no interference with -S or -s

--across, -a

Modify the effect of the - column option so that the columns are filled across the page in a round-robin order (for example, when column is 2, the first input line heads column 1, the second heads column 2, the third is the second line in column 1, and so on).

--column=<column>

Produce multi-column output that is arranged in column columns (the default shall be 1) and is written down each column in the order in which the text is received from the input file. This option should not be used with -m. The options -e and -i shall be assumed for multiple text-column output. Whether or not text columns are produced with identical vertical lengths is unspecified, but a text column shall never exceed the length of the page (see the -l option). When used with -t, use the minimum number of lines to write the output.

--separator=<char>, -s <char>

Separate text columns by the single character char instead of by the appropriate number of s (default for char is the character).

--sep-string=<string>, -S <string>

separate columns by STRING, without -S: Default separator with -J and otherwise (same as -S" "), no effect on column options

--merge, -m

Merge files. Standard output shall be formatted so the pr utility writes one line from each file specified by a file operand, side by side into text columns of equal fixed widths, in terms of the number of column positions. Implementations shall support merging of at least nine file operands.

--indent=<margin>, -o <margin>

Each line of output shall be preceded by offset s. If the -o option is not specified, the default offset shall be zero. The space taken is in addition to the output line width (see the -w option below).

-J

merge full lines, turns off -W line truncation, no column alignment, --sep-string[=STRING] sets separators

--help

Print help information

+PAGE Begin output at page number page of the formatted input. -COLUMN Produce multi-column output. See --column

The pr utility is a printing and pagination filter for text files. When multiple input files are specified, each is read, formatted, and written to standard output. By default, the input is separated into 66-line pages, each with

  • A 5-line header with the page number, date, time, and the pathname of the file.
  • A 5-line trailer consisting of blank lines.

If standard output is associated with a terminal, diagnostic messages are suppressed until the pr utility has completed processing.

When multiple column output is specified, text columns are of equal width. By default, text columns are separated by at least one <blank>. Input lines that do not fit into a text column are truncated. Lines are not truncated under single column output.

Examples

Print multiple files with a default header and footer:

pr {{path/to/file1 path/to/file2 ...}}

Print with a custom centered header:

pr -h "{{header}}" {{path/to/file1 path/to/file2 ...}}

Print with numbered lines and a custom date format:

pr -n -D "{{format}}" {{path/to/file1 path/to/file2 ...}}

Print all files together, one in each column, without a header or footer:

pr -m -T {{path/to/file1 path/to/file2 ...}}

Print, beginning at page 2 up to page 5, with a given page length (including header and footer):

pr +{{2}}:{{5}} -l {{page_length}} {{path/to/file1 path/to/file2 ...}}

Print with an offset for each line and a truncating custom page width:

pr -o {{offset}} -W {{width}} {{path/to/file1 path/to/file2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

printenv

v0.0.26
printenv [OPTION]... [VARIABLE]...

Display the values of the specified environment VARIABLE(s), or (with no VARIABLE) display name and value pairs for them all.

Options

--null, -0

end each output line with 0 byte rather than newline

Examples

Display key-value pairs of all environment variables:

printenv

Display the value of a specific variable:

printenv {{HOME}}

Display the value of a variable and end with NUL instead of newline:

printenv --null {{HOME}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

printf

v0.0.26
printf FORMATSTRING [ARGUMENT]...
printf FORMAT [ARGUMENT]...
printf OPTION

Print output based off of the format string and proceeding arguments.

Options

--help

Print help information

--version

Print version information

basic anonymous string templating:

prints format string at least once, repeating as long as there are remaining arguments output prints escaped literals in the format string as character literals output replaces anonymous fields with the next unused argument, formatted according to the field.

Prints the , replacing escaped character sequences with character literals and substitution field sequences with passed arguments

literally, with the exception of the below escaped character sequences, and the substitution sequences described further down.

ESCAPE SEQUENCES

The following escape sequences, organized here in alphabetical order, will print the corresponding character literal:

  • \" double quote

  • \\\\ backslash

  • \\a alert (BEL)

  • \\b backspace

  • \\c End-of-Input

  • \\e escape

  • \\f form feed

  • \\n new line

  • \\r carriage return

  • \\t horizontal tab

  • \\v vertical tab

  • \\NNN byte with value expressed in octal value NNN (1 to 3 digits) values greater than 256 will be treated

  • \\xHH byte with value expressed in hexadecimal value NN (1 to 2 digits)

  • \\uHHHH Unicode (IEC 10646) character with value expressed in hexadecimal value HHHH (4 digits)

  • \\uHHHH Unicode character with value expressed in hexadecimal value HHHH (8 digits)

  • %% a single %

SUBSTITUTIONS

SUBSTITUTION QUICK REFERENCE

Fields

  • %s: string

  • %b: string parsed for literals second parameter is max length

  • %c: char no second parameter

  • %i or %d: 64-bit integer

  • %u: 64 bit unsigned integer

  • %x or %X: 64-bit unsigned integer as hex

  • %o: 64-bit unsigned integer as octal second parameter is min-width, integer output below that width is padded with leading zeroes

  • %q: ARGUMENT is printed in a format that can be reused as shell input, escaping non-printable characters with the proposed POSIX $'' syntax.

  • %f or %F: decimal floating point value

  • %e or %E: scientific notation floating point value

  • %g or %G: shorter of specially interpreted decimal or SciNote floating point value. second parameter is -max places after decimal point for floating point output -max number of significant digits for scientific notation output

parameterizing fields

examples:

printf '%4.3i' 7

It has a first parameter of 4 and a second parameter of 3 and will result in ' 007'

printf '%.1s' abcde

It has no first parameter and a second parameter of 1 and will result in 'a'

printf '%4c' q

It has a first parameter of 4 and no second parameter and will result in ' q'

The first parameter of a field is the minimum width to pad the output to if the output is less than this absolute value of this width, it will be padded with leading spaces, or, if the argument is negative, with trailing spaces. the default is zero.

The second parameter of a field is particular to the output field type. defaults can be found in the full substitution help below

special prefixes to numeric arguments

  • 0: (e.g. 010) interpret argument as octal (integer output fields only)
  • 0x: (e.g. 0xABC) interpret argument as hex (numeric output fields only)
  • \': (e.g. 'a) interpret argument as a character constant

HOW TO USE SUBSTITUTIONS

Substitutions are used to pass additional argument(s) into the FORMAT string, to be formatted a particular way. E.g.

printf 'the letter %X comes before the letter %X' 10 11

will print

the letter A comes before the letter B

because the substitution field %X means 'take an integer argument and write it as a hexadecimal number'

Passing more arguments than are in the format string will cause the format string to be repeated for the remaining substitutions

printf 'it is %i F in %s \n' 22 Portland 25 Boston 27 New York

will print

it is 22 F in Portland
it is 25 F in Boston
it is 27 F in Boston

If a format string is printed but there are less arguments remaining than there are substitution fields, substitution fields without an argument will default to empty strings, or for numeric fields the value 0

AVAILABLE SUBSTITUTIONS

This program, like GNU coreutils printf, interprets a modified subset of the POSIX C printf spec, a quick reference to substitutions is below.

STRING SUBSTITUTIONS

All string fields have a 'max width' parameter %.3s means 'print no more than three characters of the original input'

  • %s: string

  • %b: escaped string - the string will be checked for any escaped literals from the escaped literal list above, and translate them to literal characters. e.g. \\n will be transformed into a newline character. One special rule about %b mode is that octal literals are interpreted differently In arguments passed by %b, pass octal-interpreted literals must be in the form of \\0NNN instead of \\NNN. (Although, for legacy reasons, octal literals in the form of \\NNN will still be interpreted and not throw a warning, you will have problems if you use this for a literal whose code begins with zero, as it will be viewed as in \\0NNN form.)

  • %q: escaped string - the string in a format that can be reused as input by most shells. Non-printable characters are escaped with the POSIX proposed ‘$''’ syntax, and shell meta-characters are quoted appropriately. This is an equivalent format to ls --quoting=shell-escape output.

CHAR SUBSTITUTIONS

The character field does not have a secondary parameter.

  • %c: a single character

INTEGER SUBSTITUTIONS

All integer fields have a 'pad with zero' parameter %.4i means an integer which if it is less than 4 digits in length, is padded with leading zeros until it is 4 digits in length.

  • %d or %i: 64-bit integer

  • %u: 64-bit unsigned integer

  • %x or %X: 64-bit unsigned integer printed in Hexadecimal (base 16) %X instead of %x means to use uppercase letters for 'a' through 'f'

  • %o: 64-bit unsigned integer printed in octal (base 8)

FLOATING POINT SUBSTITUTIONS

All floating point fields have a 'max decimal places / max significant digits' parameter %.10f means a decimal floating point with 7 decimal places past 0 %.10e means a scientific notation number with 10 significant digits %.10g means the same behavior for decimal and Sci. Note, respectively, and provides the shortest of each's output.

Like with GNU coreutils, the value after the decimal point is these outputs is parsed as a double first before being rendered to text. For both implementations do not expect meaningful precision past the 18th decimal place. When using a number of decimal places that is 18 or higher, you can expect variation in output between GNU coreutils printf and this printf at the 18th decimal place of +/- 1

  • %f: floating point value presented in decimal, truncated and displayed to 6 decimal places by default. There is not past-double behavior parity with Coreutils printf, values are not estimated or adjusted beyond input values.

  • %e or %E: floating point value presented in scientific notation 7 significant digits by default %E means use to use uppercase E for the mantissa.

  • %g or %G: floating point value presented in the shortest of decimal and scientific notation behaves differently from %f and %E, please see posix printf spec for full details, some examples of different behavior: Sci Note has 6 significant digits by default Trailing zeroes are removed Instead of being truncated, digit after last is rounded

Like other behavior in this utility, the design choices of floating point behavior in this utility is selected to reproduce in exact the behavior of GNU coreutils' printf from an inputs and outputs standpoint.

USING PARAMETERS

Most substitution fields can be parameterized using up to 2 numbers that can be passed to the field, between the % sign and the field letter.

The 1st parameter always indicates the minimum width of output, it is useful for creating columnar output. Any output that would be less than this minimum width is padded with leading spaces The 2nd parameter is proceeded by a dot. You do not have to use parameters

SPECIAL FORMS OF INPUT

For numeric input, the following additional forms of input are accepted besides decimal:

Octal (only with integer): if the argument begins with a 0 the proceeding characters will be interpreted as octal (base 8) for integer fields

Hexadecimal: if the argument begins with 0x the proceeding characters will be interpreted will be interpreted as hex (base 16) for any numeric fields for float fields, hexadecimal input results in a precision limit (in converting input past the decimal point) of 10^-15

Character Constant: if the argument begins with a single quote character, the first byte of the next character will be interpreted as an 8-bit unsigned integer. If there are additional bytes, they will throw an error (unless the environment variable POSIXLY_CORRECT is set)

Examples

Print a text message:

printf "{{%s\n}}" "{{Hello world}}"

Print an integer in bold blue:

printf "{{\e[1;34m%.3d\e[0m\n}}" {{42}}

Print a float number with the Unicode Euro sign:

printf "{{\u20AC %.2f\n}}" {{123.4}}

Print a text message composed with environment variables:

printf "{{var1: %s\tvar2: %s\n}}" "{{$VAR1}}" "{{$VAR2}}"

Store a formatted message in a variable (does not work on Zsh):

printf -v {{myvar}} {{"This is %s = %d\n" "a year" 2016}}

Print a hexadecimal, octal and scientific number:

printf "{{hex=%x octal=%o scientific=%e}}" 0x{{FF}} 0{{377}} {{100000}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

ptx

v0.0.26
ptx [OPTION]... [INPUT]...
ptx -G [OPTION]... [INPUT [OUTPUT]]

Produce a permuted index of file contents Output a permuted index, including context, of the words in the input files. Mandatory arguments to long options are mandatory for short options too. With no FILE, or when FILE is -, read standard input. Default is '-F /'.

Options

--auto-reference, -A

output automatically generated references

--traditional, -G

behave more like System V 'ptx'

--flag-truncation=<STRING>, -F <STRING>

use STRING for flagging line truncations

--macro-name=<STRING>, -M <STRING>

macro name to use instead of 'xx'

--format=roff, -O

generate output as roff directives

--right-side-refs, -R

put references at right, not counted in -w

--sentence-regexp=<REGEXP>, -S <REGEXP>

for end of lines or end of sentences

--format=tex, -T

generate output as TeX directives

--word-regexp=<REGEXP>, -W <REGEXP>

use REGEXP to match each keyword

--break-file=<FILE>, -b <FILE>

word break characters in this FILE

--ignore-case, -f

fold lower case to upper case for sorting

--gap-size=<NUMBER>, -g <NUMBER>

gap size in columns between output fields

--ignore-file=<FILE>, -i <FILE>

read ignore word list from FILE

--only-file=<FILE>, -o <FILE>

read only word list from this FILE

--references=<FILE>, -r <FILE>

first field of each line is a reference

--width=<NUMBER>, -w <NUMBER>

output width in columns, reference excluded

Examples

Generate a permuted index where the first field of each line is an index reference:

ptx --references {{path/to/file}}

Generate a permuted index with automatically generated index references:

ptx --auto-reference {{path/to/file}}

Generate a permuted index with a fixed width:

ptx --width={{width_in_columns}} {{path/to/file}}

Generate a permuted index with a list of filtered words:

ptx --only-file={{path/to/filter}} {{path/to/file}}

Generate a permuted index with SYSV-style behaviors:

ptx --traditional {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

pwd

v0.0.26
pwd [OPTION]... [FILE]...

Display the full filename of the current working directory.

Options

--logical, -L

use PWD from environment, even if it contains symlinks

--physical, -P

avoid all symlinks

Examples

Print the current directory:

pwd

Print the current directory, and resolve all symlinks (i.e. show the "physical" path):

pwd -P

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

readlink

v0.0.26
readlink [OPTION]... [FILE]...

Print value of a symbolic link or canonical file name.

Options

--canonicalize, -f

canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist

--canonicalize-existing, -e

canonicalize by following every symlink in every component of the given name recursively, all components must exist

--canonicalize-missing, -m

canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence

--no-newline, -n

do not output the trailing delimiter

--quiet, -q

suppress most error messages

--silent, -s

suppress most error messages

--verbose, -v

report error message

--zero, -z

separate output with NUL rather than newline

Examples

Get the actual file to which the symlink points:

readlink {{path/to/file}}

Get the absolute path to a file:

readlink -f {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

realpath

v0.0.26
realpath [OPTION]... FILE...

Print the resolved path

Options

--quiet, -q

Do not print warnings for invalid paths

--strip, --no-symlinks, -s

Only strip '.' and '..' components, but don't resolve symbolic links

--zero, -z

Separate output filenames with \0 rather than newline

--logical, -L

resolve '..' components before symlinks

--physical, -P

resolve symlinks as encountered (default)

--canonicalize-existing, -e

canonicalize by following every symlink in every component of the given name recursively, all components must exist

--canonicalize-missing, -m

canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence

--relative-to=<DIR>

print the resolved path relative to DIR

--relative-base=<DIR>

print absolute paths unless paths below DIR

Examples

Display the absolute path for a file or directory:

realpath {{path/to/file_or_directory}}

Require all path components to exist:

realpath --canonicalize-existing {{path/to/file_or_directory}}

Resolve ".." components before symlinks:

realpath --logical {{path/to/file_or_directory}}

Disable symlink expansion:

realpath --no-symlinks {{path/to/file_or_directory}}

Suppress error messages:

realpath --quiet {{path/to/file_or_directory}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

rm

v0.0.26
rm [OPTION]... FILE...

Remove (unlink) the FILE(s)

Options

--force, -f

ignore nonexistent files and arguments, never prompt

-i

prompt before every removal

-I

prompt once before removing more than three files, or when removing recursively. Less intrusive than -i, while still giving some protection against most mistakes

--interactive=<WHEN>

prompt according to WHEN: never, once (-I), or always (-i). Without WHEN, prompts always

--one-file-system

when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument (NOT IMPLEMENTED)

--no-preserve-root

do not treat '/' specially

--preserve-root

do not remove '/' (default)

--recursive, -r, -R

remove directories and their contents recursively

--dir, -d

remove empty directories

--verbose, -v

explain what is being done

--presume-input-tty

By default, rm does not remove directories. Use the --recursive (-r or -R) option to remove each listed directory, too, along with all of its contents

To remove a file whose name starts with a '-', for example '-foo', use one of these commands: rm -- -foo

rm ./-foo

Note that if you use rm to remove a file, it might be possible to recover some of its contents, given sufficient expertise and/or time. For greater assurance that the contents are truly unrecoverable, consider using shred.

Examples

Remove specific files:

rm {{path/to/file1 path/to/file2 ...}}

Remove specific files ignoring nonexistent ones:

rm -f {{path/to/file1 path/to/file2 ...}}

Remove specific files interactively prompting before each removal:

rm -i {{path/to/file1 path/to/file2 ...}}

Remove specific files printing info about each removal:

rm -v {{path/to/file1 path/to/file2 ...}}

Remove specific files and directories recursively:

rm -r {{path/to/file_or_directory1 path/to/file_or_directory2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

rmdir

v0.0.26
rmdir [OPTION]... DIRECTORY...

Remove the DIRECTORY(ies), if they are empty.

Options

--ignore-fail-on-non-empty

ignore each failure that is solely because a directory is non-empty

--parents, -p

remove DIRECTORY and its ancestors; e.g.,
'rmdir -p a/b/c' is similar to rmdir a/b/c a/b a

--verbose, -v

output a diagnostic for every directory processed

Examples

Remove specific directories:

rmdir {{path/to/directory1 path/to/directory2 ...}}

Remove specific nested directories recursively:

rmdir -p {{path/to/directory1 path/to/directory2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

runcon

v0.0.26
runcon [CONTEXT COMMAND [ARG...]]
runcon [-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [ARG...]

Run command with specified security context under SELinux enabled systems.

Options

--compute, -c

Compute process transition context before modifying.

--user=<USER>, -u <USER>

Set user USER in the target security context.

--role=<ROLE>, -r <ROLE>

Set role ROLE in the target security context.

--type=<TYPE>, -t <TYPE>

Set type TYPE in the target security context.

--range=<RANGE>, -l <RANGE>

Set range RANGE in the target security context.

Run COMMAND with completely-specified CONTEXT, or with current or transitioned security context modified by one or more of LEVEL, ROLE, TYPE, and USER.

If none of --compute, --type, --user, --role or --range is specified, then the first argument is used as the complete context.

Note that only carefully-chosen contexts are likely to successfully run.

With neither CONTEXT nor COMMAND are specified, then this prints the current security context.

Examples

Determine the current domain:

runcon

Specify the domain to run a command in:

runcon -t {{domain}}_t {{command}}

Specify the context role to run a command with:

runcon -r {{role}}_r {{command}}

Specify the full context to run a command with:

runcon {{user}}_u:{{role}}_r:{{domain}}_t {{command}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

seq

v0.0.26
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST

Display numbers from FIRST to LAST, in steps of INCREMENT.

Options

--separator, -s

Separator character (defaults to \n)

--terminator, -t

Terminator character (defaults to \n)

--equal-width, -w

Equalize widths of all numbers by padding with zeros

--format, -f

use printf style floating-point FORMAT

Examples

Sequence from 1 to 10:

seq 10

Every 3rd number from 5 to 20:

seq 5 3 20

Separate the output with a space instead of a newline:

seq -s " " 5 3 20

Format output width to a minimum of 4 digits padding with zeros as necessary:

seq -f "%04g" 5 3 20

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sha1sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the SHA1 checksum for one or more files:

sha1sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of SHA1 checksums to a file:

sha1sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.sha1}}

Calculate a SHA1 checksum from stdin:

{{command}} | sha1sum

Read a file of SHA1 sums and filenames and verify all files have matching checksums:

sha1sum --check {{path/to/file.sha1}}

Only show a message for missing files or when verification fails:

sha1sum --check --quiet {{path/to/file.sha1}}

Only show a message when verification fails, ignoring missing files:

sha1sum --ignore-missing --check --quiet {{path/to/file.sha1}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sha224sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the SHA224 checksum for one or more files:

sha224sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of SHA224 checksums to a file:

sha224sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.sha224}}

Calculate a SHA224 checksum from stdin:

{{command}} | sha224sum

Read a file of SHA224 sums and filenames and verify all files have matching checksums:

sha224sum --check {{path/to/file.sha224}}

Only show a message for missing files or when verification fails:

sha224sum --check --quiet {{path/to/file.sha224}}

Only show a message when verification fails, ignoring missing files:

sha224sum --ignore-missing --check --quiet {{path/to/file.sha224}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sha256sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the SHA256 checksum for one or more files:

sha256sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of SHA256 checksums to a file:

sha256sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.sha256}}

Calculate a SHA256 checksum from stdin:

{{command}} | sha256sum

Read a file of SHA256 sums and filenames and verify all files have matching checksums:

sha256sum --check {{path/to/file.sha256}}

Only show a message for missing files or when verification fails:

sha256sum --check --quiet {{path/to/file.sha256}}

Only show a message when verification fails, ignoring missing files:

sha256sum --ignore-missing --check --quiet {{path/to/file.sha256}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sha3-224sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

sha3-256sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

sha3-384sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

sha3-512sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

sha384sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the SHA384 checksum for one or more files:

sha384sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of SHA384 checksums to a file:

sha384sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.sha384}}

Calculate a SHA384 checksum from stdin:

{{command}} | sha384sum

Read a file of SHA384 sums and filenames and verify all files have matching checksums:

sha384sum --check {{path/to/file.sha384}}

Only show a message for missing files or when verification fails:

sha384sum --check --quiet {{path/to/file.sha384}}

Only show a message when verification fails, ignoring missing files:

sha384sum --ignore-missing --check --quiet {{path/to/file.sha384}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sha3sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

--bits=<BITS>

set the size of the output (only for SHAKE)

sha512sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

Examples

Calculate the SHA512 checksum for one or more files:

sha512sum {{path/to/file1 path/to/file2 ...}}

Calculate and save the list of SHA512 checksums to a file:

sha512sum {{path/to/file1 path/to/file2 ...}} > {{path/to/file.sha512}}

Calculate a SHA512 checksum from stdin:

{{command}} | sha512sum

Read a file of SHA512 sums and filenames and verify all files have matching checksums:

sha512sum --check {{path/to/file.sha512}}

Only show a message for missing files or when verification fails:

sha512sum --check --quiet {{path/to/file.sha512}}

Only show a message when verification fails, ignoring missing files:

sha512sum --ignore-missing --check --quiet {{path/to/file.sha512}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

shake128sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

--bits=<BITS>

set the size of the output (only for SHAKE)

shake256sum

v0.0.26

Options

--binary, -b

read in binary mode

--check, -c

read hashsums from the FILEs and check them

--tag

create a BSD-style checksum

--text, -t

read in text mode (default)

--quiet, -q

don't print OK for each successfully verified file

--status, -s

don't output anything, status code shows success

--strict

exit non-zero for improperly formatted checksum lines

--ignore-missing

don't fail or report status for missing files

--warn, -w

warn about improperly formatted checksum lines

--zero, -z

end each output line with NUL, not newline

--bits=<BITS>

set the size of the output (only for SHAKE)

shred

v0.0.26
shred [OPTION]... FILE...

Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.

Options

--force, -f

change permissions to allow writing if necessary

--iterations=<NUMBER>, -n <NUMBER>

overwrite N times instead of the default (3)

--size=<N>, -s <N>

shred this many bytes (suffixes like K, M, G accepted)

-u

deallocate and remove file after overwriting

--remove=<HOW>

like -u but give control on HOW to delete; See below

--verbose, -v

show progress

--exact, -x

do not round file sizes up to the next full block;
this is the default for non-regular files

--zero, -z

add a final overwrite with zeros to hide shredding

Delete FILE(s) if --remove (-u) is specified. The default is not to remove the files because it is common to operate on device files like /dev/hda, and those files usually should not be removed.

CAUTION: Note that shred relies on a very important assumption: that the file system overwrites data in place. This is the traditional way to do things, but many modern file system designs do not satisfy this assumption. The following are examples of file systems on which shred is not effective, or is not guaranteed to be effective in all file system modes:

  • log-structured or journal file systems, such as those supplied with AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)

  • file systems that write redundant data and carry on even if some writes fail, such as RAID-based file systems

  • file systems that make snapshots, such as Network Appliance's NFS server

  • file systems that cache in temporary locations, such as NFS version 3 clients

  • compressed file systems

In the case of ext3 file systems, the above disclaimer applies (and shred is thus of limited effectiveness) only in data=journal mode, which journals file data in addition to just metadata. In both the data=ordered (default) and data=writeback modes, shred works as usual. Ext3 journal modes can be changed by adding the data=something option to the mount options for a particular file system in the /etc/fstab file, as documented in the mount man page (man mount).

In addition, file system backups and remote mirrors may contain copies of the file that cannot be removed, and that will allow a shredded file to be recovered later.

Examples

Overwrite a file:

shred {{path/to/file}}

Overwrite a file and show progress on the screen:

shred --verbose {{path/to/file}}

Overwrite a file, leaving [z]eros instead of random data:

shred --zero {{path/to/file}}

Overwrite a file a specific [n]umber of times:

shred --iterations {{25}} {{path/to/file}}

Overwrite a file and remove it:

shred --remove {{path/to/file}}

Overwrite a file 100 times, add a final overwrite with [z]eros, remove the file after overwriting it and show [v]erbose progress on the screen:

shred -vzun 100 {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

shuf

v0.0.26
shuf [OPTION]... [FILE]
shuf -e [OPTION]... [ARG]...
shuf -i LO-HI [OPTION]...

Shuffle the input by outputting a random permutation of input lines. Each output permutation is equally likely. With no FILE, or when FILE is -, read standard input.

Options

--echo, -e

treat each ARG as an input line

--input-range=<LO-HI>, -i <LO-HI>

treat each number LO through HI as an input line

--head-count=<COUNT>, -n <COUNT>

output at most COUNT lines

--output=<FILE>, -o <FILE>

write result to FILE instead of standard output

--random-source=<FILE>

get random bytes from FILE

--repeat, -r

output lines can be repeated

--zero-terminated, -z

line delimiter is NUL, not newline

Examples

Randomize the order of lines in a file and output the result:

shuf {{path/to/file}}

Only output the first 5 entries of the result:

shuf --head-count={{5}} {{path/to/file}}

Write the output to another file:

shuf {{path/to/input}} --output={{path/to/output}}

Generate 3 random numbers in the range 1-10 (inclusive):

shuf --head-count={{3}} --input-range={{1-10}} --repeat

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sleep

v0.0.26
sleep NUMBER[SUFFIX]...
sleep OPTION

Pause for NUMBER seconds.

Options

pause for NUMBER seconds

Pause for NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days. Unlike most implementations that require NUMBER be an integer, here NUMBER may be an arbitrary floating point number. Given two or more arguments, pause for the amount of time specified by the sum of their values.

Examples

Delay in seconds:

sleep {{seconds}}

Execute a specific command after 20 seconds delay:

sleep 20 && {{command}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sort

v0.0.26
sort [OPTION]... [FILE]...

Display sorted concatenation of all FILE(s). With no FILE, or when FILE is -, read standard input.

Options

--help

Print help information.

--version

Print version information.

--sort
--human-numeric-sort, -h

compare according to human readable sizes, eg 1M > 100k

--month-sort, -M

compare according to month name abbreviation

--numeric-sort, -n

compare according to string numerical value

--general-numeric-sort, -g

compare according to string general numerical value

--version-sort, -V

Sort by SemVer version number, eg 1.12.2 > 1.1.2

--random-sort, -R

shuffle in random order

--dictionary-order, -d

consider only blanks and alphanumeric characters

--merge, -m

merge already sorted files; do not sort

--check, -c

check for sorted input; do not sort

--check-silent, -C

exit successfully if the given file is already sorted, and exit with status 1 otherwise.

--ignore-case, -f

fold lower case to upper case characters

--ignore-nonprinting, -i

ignore nonprinting characters

--ignore-leading-blanks, -b

ignore leading blanks when finding sort keys in each line

--output=<FILENAME>, -o <FILENAME>

write output to FILENAME instead of stdout

--reverse, -r

reverse the output

--stable, -s

stabilize sort by disabling last-resort comparison

--unique, -u

output only the first of an equal run

--key, -k

sort by a key

--field-separator, -t

custom separator for -k

--zero-terminated, -z

line delimiter is NUL, not newline

--parallel=<NUM_THREADS>

change the number of threads running concurrently to NUM_THREADS

--buffer-size=<SIZE>, -S <SIZE>

sets the maximum SIZE of each segment in number of sorted items

--temporary-directory=<DIR>, -T <DIR>

use DIR for temporaries, not $TMPDIR or /tmp

--compress-program=<PROG>

compress temporary files with PROG, decompress with PROG -d; PROG has to take input from stdin and output to stdout

--batch-size=<N_MERGE>

Merge at most N_MERGE inputs at once.

--files0-from=<NUL_FILES>

read input from the files specified by NUL-terminated NUL_FILES

--debug

underline the parts of the line that are actually used for sorting

The key format is FIELD[.CHAR][OPTIONS][,FIELD[.CHAR]][OPTIONS].

Fields by default are separated by the first whitespace after a non-whitespace character. Use -t to specify a custom separator. In the default case, whitespace is appended at the beginning of each field. Custom separators however are not included in fields.

FIELD and CHAR both start at 1 (i.e. they are 1-indexed). If there is no end specified after a comma, the end will be the end of the line. If CHAR is set 0, it means the end of the field. CHAR defaults to 1 for the start position and to 0 for the end position.

Valid options are: MbdfhnRrV. They override the global options for this key.

Examples

Sort a file in ascending order:

sort {{path/to/file}}

Sort a file in descending order:

sort --reverse {{path/to/file}}

Sort a file in case-insensitive way:

sort --ignore-case {{path/to/file}}

Sort a file using numeric rather than alphabetic order:

sort --numeric-sort {{path/to/file}}

Sort /etc/passwd by the 3rd field of each line numerically, using ":" as a field separator:

sort --field-separator={{:}} --key={{3n}} {{/etc/passwd}}

Sort a file preserving only unique lines:

sort --unique {{path/to/file}}

Sort a file, printing the output to the specified output file (can be used to sort a file in-place):

sort --output={{path/to/file}} {{path/to/file}}

Sort numbers with exponents:

sort --general-numeric-sort {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

split

v0.0.26
split [OPTION]... [INPUT [PREFIX]]

Create output files containing consecutive or interleaved sections of input

Options

--bytes=<SIZE>, -b <SIZE>

put SIZE bytes per output file

--line-bytes=<SIZE>, -C <SIZE>

put at most SIZE bytes of lines per output file

--lines=<NUMBER>, -l <NUMBER>

put NUMBER lines/records per output file

--number=<CHUNKS>, -n <CHUNKS>

generate CHUNKS output files; see explanation below

--additional-suffix=<SUFFIX>

additional SUFFIX to append to output file names

--filter=<COMMAND>

write to shell COMMAND; file name is $FILE (Currently not implemented for Windows)

--elide-empty-files, -e

do not generate empty output files with '-n'

-d

use numeric suffixes starting at 0, not alphabetic

--numeric-suffixes=<FROM>

same as -d, but allow setting the start value

-x

use hex suffixes starting at 0, not alphabetic

--hex-suffixes=<FROM>

same as -x, but allow setting the start value

--suffix-length=<N>, -a <N>

generate suffixes of length N (default 2)

--verbose

print a diagnostic just before each output file is opened

--separator=<SEP>, -t <SEP>

use SEP instead of newline as the record separator; '\0' (zero) specifies the NUL character

--io-blksize

Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000, and default PREFIX is 'x'. With no INPUT, or when INPUT is -, read standard input.

The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y,R,Q (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on.

CHUNKS may be:

  • N split into N files based on size of input
  • K/N output Kth of N to stdout
  • l/N split into N files without splitting lines/records
  • l/K/N output Kth of N to stdout without splitting lines/records
  • r/N like 'l' but use round robin distribution
  • r/K/N likewise but only output Kth of N to stdout

Examples

Split a file, each split having 10 lines (except the last split):

split -l {{10}} {{path/to/file}}

Split a file into 5 files. File is split such that each split has same size (except the last split):

split -n {{5}} {{path/to/file}}

Split a file with 512 bytes in each split (except the last split; use 512k for kilobytes and 512m for megabytes):

split -b {{512}} {{path/to/file}}

Split a file with at most 512 bytes in each split without breaking lines:

split -C {{512}} {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

stat

v0.0.26
stat [OPTION]... FILE...

Display file or file system status.

Options

--dereference, -L

follow links

--file-system, -f

display file system status instead of file status

--terse, -t

print the information in terse form

--format=<FORMAT>, -c <FORMAT>

use the specified FORMAT instead of the default;
output a newline after each use of FORMAT

--printf=<FORMAT>

like --format, but interpret backslash escapes,
and do not output a mandatory trailing newline;
if you want a newline, include
in FORMAT

Examples

Display properties about a specific file such as size, permissions, creation and access dates among others:

stat {{path/to/file}}

Display properties about a specific file such as size, permissions, creation and access dates among others without labels:

stat --terse {{path/to/file}}

Display information about the filesystem where a specific file is located:

stat --file-system {{path/to/file}}

Show only octal file permissions:

stat --format="%a %n" {{path/to/file}}

Show the owner and group of a specific file:

stat --format="%U %G" {{path/to/file}}

Show the size of a specific file in bytes:

stat --format="%s %n" {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

stdbuf

v0.0.26
stdbuf [OPTION]... COMMAND

Run COMMAND, with modified buffering operations for its standard streams.

Mandatory arguments to long options are mandatory for short options too.

Options

--input=<MODE>, -i <MODE>

adjust standard input stream buffering

--output=<MODE>, -o <MODE>

adjust standard output stream buffering

--error=<MODE>, -e <MODE>

adjust standard error stream buffering

If MODE is 'L' the corresponding stream will be line buffered. This option is invalid with standard input.

If MODE is '0' the corresponding stream will be unbuffered.

Otherwise, MODE is a number which may be followed by one of the following:

KB 1000, K 1024, MB 10001000, M 10241024, and so on for G, T, P, E, Z, Y. In this case the corresponding stream will be fully buffered with the buffer size set to MODE bytes.

NOTE: If COMMAND adjusts the buffering of its standard streams (tee does for e.g.) then that will override corresponding settings changed by stdbuf. Also some filters (like dd and cat etc.) don't use streams for I/O, and are thus unaffected by stdbuf settings.

Examples

Change stdin buffer size to 512 KiB:

stdbuf --input={{512K}} {{command}}

Change stdout buffer to line-buffered:

stdbuf --output={{L}} {{command}}

Change stderr buffer to unbuffered:

stdbuf --error={{0}} {{command}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

stty

v0.0.26
stty [-F DEVICE | --file=DEVICE] [SETTING]...
stty [-F DEVICE | --file=DEVICE] [-a|--all]
stty [-F DEVICE | --file=DEVICE] [-g|--save]

Print or change terminal characteristics.

Options

--all, -a

print all current settings in human-readable form

--save, -g

print all current settings in a stty-readable form

--file=<DEVICE>, -F <DEVICE>

open and use the specified DEVICE instead of stdin

settings to change

Examples

Display all settings for the current terminal:

stty --all

Set the number of rows or columns:

stty {{rows|cols}} {{count}}

Get the actual transfer speed of a device:

stty --file {{path/to/device_file}} speed

Reset all modes to reasonable values for the current terminal:

stty sane

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sum

v0.0.26
sum [OPTION]... [FILE]...

Checksum and count the blocks in a file.

With no FILE, or when FILE is -, read standard input.

Options

-r

use the BSD sum algorithm, use 1K blocks (default)

--sysv, -s

use System V sum algorithm, use 512 bytes blocks

Examples

Compute a checksum with BSD-compatible algorithm and 1024-byte blocks:

sum {{path/to/file}}

Compute a checksum with System V-compatible algorithm and 512-byte blocks:

sum --sysv {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

sync

v0.0.26
sync [OPTION]... FILE...

Synchronize cached writes to persistent storage

Options

--file-system, -f

sync the file systems that contain the files (Linux and Windows only)

--data, -d

sync only file data, no unneeded metadata (Linux only)

Examples

Flush all pending write operations on all disks:

sync

Flush all pending write operations on a single file to disk:

sync {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tac

v0.0.26
tac [OPTION]... [FILE]...

Write each file to standard output, last line first.

Options

--before, -b

attach the separator before instead of after

--regex, -r

interpret the sequence as a regular expression

--separator=<STRING>, -s <STRING>

use STRING as the separator instead of newline

Examples

Concatenate specific files in reversed order:

tac {{path/to/file1 path/to/file2 ...}}

Display stdin in reversed order:

{{cat path/to/file}} | tac

Use a specific [s]eparator:

tac -s {{separator}} {{path/to/file1 path/to/file2 ...}}

Use a specific [r]egex as a [s]eparator:

tac -r -s {{separator}} {{path/to/file1 path/to/file2 ...}}

Use a separator [b]efore each file:

tac -b {{path/to/file1 path/to/file2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tail

v0.0.26
tail [FLAG]... [FILE]...

Print the last 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long flags are mandatory for short flags too.

Options

--bytes, -c

Number of bytes to print

--follow, -f

Print the file as it grows

--lines, -n

Number of lines to print

--pid=<PID>

With -f, terminate after process ID, PID dies

--quiet, --silent, -q

Never output headers giving file names

--sleep-interval=<N>, -s <N>

Number of seconds to sleep between polling the file when running with -f

--max-unchanged-stats=<N>

Reopen a FILE which has not changed size after N (default 5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files); This option is meaningful only when polling (i.e., with --use-polling) and when --follow=name

--verbose, -v

Always output headers giving file names

--zero-terminated, -z

Line delimiter is NUL, not newline

--use-polling

Disable 'inotify' support and use polling instead

--retry

Keep trying to open a file if it is inaccessible

-F

Same as --follow=name --retry

--presume-input-pipe

Examples

Show last 'count' lines in file:

tail --lines {{count}} {{path/to/file}}

Print a file from a specific line number:

tail --lines +{{count}} {{path/to/file}}

Print a specific count of bytes from the end of a given file:

tail --bytes {{count}} {{path/to/file}}

Print the last lines of a given file and keep reading it until Ctrl + C:

tail --follow {{path/to/file}}

Keep reading file until Ctrl + C, even if the file is inaccessible:

tail --retry --follow {{path/to/file}}

Show last 'num' lines in 'file' and refresh every 'n' seconds:

tail --lines {{count}} --sleep-interval {{seconds}} --follow {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tee

v0.0.26
tee [OPTION]... [FILE]...

Copy standard input to each FILE, and also to standard output.

Options

--help, -h

Print help

--append, -a

append to the given FILEs, do not overwrite

--ignore-interrupts, -i

ignore interrupt signals (ignored on non-Unix platforms)

-p

set write error behavior (ignored on non-Unix platforms)

--output-error

set write error behavior

If a FILE is -, it refers to a file named - .

Examples

Copy stdin to each file, and also to stdout:

echo "example" | tee {{path/to/file}}

Append to the given files, do not overwrite:

echo "example" | tee -a {{path/to/file}}

Print stdin to the terminal, and also pipe it into another program for further processing:

echo "example" | tee {{/dev/tty}} | {{xargs printf "[%s]"}}

Create a directory called "example", count the number of characters in "example" and write "example" to the terminal:

echo "example" | tee >(xargs mkdir) >(wc -c)

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

test

v0.0.26
test EXPRESSION
test
test EXPRESSION ]
test ]
test OPTION
test

Check file types and compare values.

Options

Exit with the status determined by EXPRESSION.

An omitted EXPRESSION defaults to false. Otherwise, EXPRESSION is true or false and sets exit status.

It is one of:

  • ( EXPRESSION ) EXPRESSION is true
  • ! EXPRESSION EXPRESSION is false
  • EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true
  • EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true

String operations:

  • -n STRING the length of STRING is nonzero
  • STRING equivalent to -n STRING
  • -z STRING the length of STRING is zero
  • STRING1 = STRING2 the strings are equal
  • STRING1 != STRING2 the strings are not equal

Integer comparisons:

  • INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2
  • INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2
  • INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2
  • INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2
  • INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2
  • INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2

File operations:

  • FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers

  • FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2

  • FILE1 -ot FILE2 FILE1 is older than FILE2

  • -b FILE FILE exists and is block special

  • -c FILE FILE exists and is character special

  • -d FILE FILE exists and is a directory

  • -e FILE FILE exists

  • -f FILE FILE exists and is a regular file

  • -g FILE FILE exists and is set-group-ID

  • -G FILE FILE exists and is owned by the effective group ID

  • -h FILE FILE exists and is a symbolic link (same as -L)

  • -k FILE FILE exists and has its sticky bit set

  • -L FILE FILE exists and is a symbolic link (same as -h)

  • -N FILE FILE exists and has been modified since it was last read

  • -O FILE FILE exists and is owned by the effective user ID

  • -p FILE FILE exists and is a named pipe

  • -r FILE FILE exists and read permission is granted

  • -s FILE FILE exists and has a size greater than zero

  • -S FILE FILE exists and is a socket

  • -t FD file descriptor FD is opened on a terminal

  • -u FILE FILE exists and its set-user-ID bit is set

  • -w FILE FILE exists and write permission is granted

  • -x FILE FILE exists and execute (or search) permission is granted

Except for -h and -L, all FILE-related tests dereference (follow) symbolic links. Beware that parentheses need to be escaped (e.g., by backslashes) for shells. INTEGER may also be -l STRING, which evaluates to the length of STRING.

NOTE: Binary -a and -o are inherently ambiguous. Use test EXPR1 && test EXPR2 or test EXPR1 || test EXPR2 instead.

NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING.

NOTE: your shell may have its own version of test and/or [, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

Examples

Test if a given variable is equal to a given string:

test "{{$MY_VAR}}" = "{{/bin/zsh}}"

Test if a given variable is empty:

test -z "{{$GIT_BRANCH}}"

Test if a file exists:

test -f "{{path/to/file_or_directory}}"

Test if a directory does not exist:

test ! -d "{{path/to/directory}}"

If A is true, then do B, or C in the case of an error (notice that C may run even if A fails):

test {{condition}} && {{echo "true"}} || {{echo "false"}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

timeout

v0.0.26
timeout [OPTION] DURATION COMMAND...

Start COMMAND, and kill it if still running after DURATION.

Options

--foreground

when not running timeout directly from a shell prompt, allow COMMAND to read from the TTY and get TTY signals; in this mode, children of COMMAND will not be timed out

--kill-after, -k

also send a KILL signal if COMMAND is still running this long after the initial signal was sent

--preserve-status

exit with the same status as COMMAND, even when the command times out

--signal=<SIGNAL>, -s <SIGNAL>

specify the signal to be sent on timeout; SIGNAL may be a name like 'HUP' or a number; see 'kill -l' for a list of signals

--verbose, -v

diagnose to stderr any signal sent upon timeout

Examples

Run sleep 10 and terminate it after 3 seconds:

timeout 3s sleep 10

Send a signal to the command after the time limit expires (SIGTERM by default):

timeout --signal {{INT}} {{5s}} {{sleep 10}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

touch

v0.0.26
touch [OPTION]... [USER]

Update the access and modification times of each FILE to the current time.

Options

--help

Print help information.

-a

change only the access time

-t <STAMP>

use [[CC]YY]MMDDhhmm[.ss] instead of the current time

--date=<STRING>, -d <STRING>

parse argument and use it instead of current time

-m

change only the modification time

--no-create, -c

do not create any files

--no-dereference, -h

affect each symbolic link instead of any referenced file (only for systems that can change the timestamps of a symlink)

--reference=<FILE>, -r <FILE>

use this file's times instead of the current time

--time=<WORD>

change only the specified time: "access", "atime", or "use" are equivalent to -a; "modify" or "mtime" are equivalent to -m

Examples

Create specific files:

touch {{path/to/file1 path/to/file2 ...}}

Set the file [a]ccess or [m]odification times to the current one and don't [c]reate file if it doesn't exist:

touch -c -{{a|m}} {{path/to/file1 path/to/file2 ...}}

Set the file [t]ime to a specific value and don't [c]reate file if it doesn't exist:

touch -c -t {{YYYYMMDDHHMM.SS}} {{path/to/file1 path/to/file2 ...}}

Set the files' timestamp to the [r]eference file's timestamp, and do not [c]reate the file if it does not exist:

touch -c -r {{path/to/reference_file}} {{path/to/file1 path/to/file2 ...}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tr

v0.0.26
tr [OPTION]... SET1 [SET2]

Translate or delete characters

Options

--complement, -c, -C

use the complement of SET1

--delete, -d

delete characters in SET1, do not translate

--squeeze-repeats, -s

replace each sequence of a repeated character that is listed in the last specified SET, with a single occurrence of that character

--truncate-set1, -t

first truncate SET1 to length of SET2

Translate, squeeze, and/or delete characters from standard input, writing to standard output.

Examples

Replace all occurrences of a character in a file, and print the result:

tr {{find_character}} {{replace_character}} < {{path/to/file}}

Replace all occurrences of a character from another command's output:

echo {{text}} | tr {{find_character}} {{replace_character}}

Map each character of the first set to the corresponding character of the second set:

tr '{{abcd}}' '{{jkmn}}' < {{path/to/file}}

Delete all occurrences of the specified set of characters from the input:

tr -d '{{input_characters}}' < {{path/to/file}}

Compress a series of identical characters to a single character:

tr -s '{{input_characters}}' < {{path/to/file}}

Translate the contents of a file to upper-case:

tr "[:lower:]" "[:upper:]" < {{path/to/file}}

Strip out non-printable characters from a file:

tr -cd "[:print:]" < {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

true

v0.0.26
true

Returns true, a successful exit status.

Immediately returns with the exit status 0, except when invoked with one of the recognized options. In those cases it will try to write the help or version text. Any IO error during this operation causes the program to return 1 instead.

Options

--help

Print help information

--version

Print version information

Examples

Return a successful exit code:

true

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

truncate

v0.0.26
truncate [OPTION]... [FILE]...

Shrink or extend the size of each file to the specified size.

Options

--io-blocks, -o

treat SIZE as the number of I/O blocks of the file rather than bytes (NOT IMPLEMENTED)

--no-create, -c

do not create files that do not exist

--reference=<RFILE>, -r <RFILE>

base the size of each file on the size of RFILE

--size=<SIZE>, -s <SIZE>

set or adjust the size of each file according to SIZE, which is in bytes unless --io-blocks is specified

SIZE is an integer with an optional prefix and optional unit. The available units (K, M, G, T, P, E, Z, and Y) use the following format: 'KB' => 1000 (kilobytes) 'K' => 1024 (kibibytes) 'MB' => 10001000 (megabytes) 'M' => 10241024 (mebibytes) 'GB' => 100010001000 (gigabytes) 'G' => 102410241024 (gibibytes) SIZE may also be prefixed by one of the following to adjust the size of each file based on its current size: '+' => extend by '-' => reduce by '<' => at most '>' => at least '/' => round down to multiple of '%' => round up to multiple of

Examples

Set a size of 10 GB to an existing file, or create a new file with the specified size:

truncate --size {{10G}} {{filename}}

Extend the file size by 50 MiB, fill with holes (which reads as zero bytes):

truncate --size +{{50M}} {{filename}}

Shrink the file by 2 GiB, by removing data from the end of file:

truncate --size -{{2G}} {{filename}}

Empty the file's content:

truncate --size 0 {{filename}}

Empty the file's content, but do not create the file if it does not exist:

truncate --no-create --size 0 {{filename}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tsort

v0.0.26
tsort [OPTIONS] FILE

Topological sort the strings in FILE. Strings are defined as any sequence of tokens separated by whitespace (tab, space, or newline), ordering them based on dependencies in a directed acyclic graph (DAG). Useful for scheduling and determining execution order. If FILE is not passed in, stdin is used instead.

Options

Examples

Perform a topological sort consistent with a partial sort per line of input separated by blanks:

tsort {{path/to/file}}

Perform a topological sort consistent on strings:

echo -e "{{UI Backend\nBackend Database\nDocs UI}}" | tsort

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

tty

v0.0.26
tty [OPTION]...

Print the file name of the terminal connected to standard input.

Options

--silent, --quiet, -s

print nothing, only return an exit status

Examples

Print the file name of this terminal:

tty

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

uname

v0.0.26
uname [OPTION]...

Print certain system information. With no OPTION, same as -s.

Options

--all, -a

Behave as though all of the options -mnrsvo were specified.

--kernel-name, -s

print the kernel name.

--nodename, -n

print the nodename (the nodename may be a name that the system is known by to a communications network).

--kernel-release, -r

print the operating system release.

--kernel-version, -v

print the operating system version.

--machine, -m

print the machine hardware name.

--operating-system, -o

print the operating system name.

--processor, -p

print the processor type (non-portable)

--hardware-platform, -i

print the hardware platform (non-portable)

Examples

Print kernel name:

uname

Print system architecture and processor information:

uname --machine --processor

Print kernel name, kernel release and kernel version:

uname --kernel-name --kernel-release --kernel-version

Print system hostname:

uname --nodename

Print all available system information:

uname --all

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

unexpand

v0.0.26
unexpand [OPTION]... [FILE]...

Convert blanks in each FILE to tabs, writing to standard output. With no FILE, or when FILE is -, read standard input.

Options

--all, -a

convert all blanks, instead of just initial blanks

--first-only

convert only leading sequences of blanks (overrides -a)

--tabs=<N, LIST>, -t <N, LIST>

use comma separated LIST of tab positions or have tabs N characters apart instead of 8 (enables -a)

--no-utf8, -U

interpret input file as 8-bit ASCII rather than UTF-8

Examples

Convert blanks in each file to tabs, writing to stdout:

unexpand {{path/to/file}}

Convert blanks to tabs, reading from stdout:

unexpand

Convert all blanks, instead of just initial blanks:

unexpand -a {{path/to/file}}

Convert only leading sequences of blanks (overrides -a):

unexpand --first-only {{path/to/file}}

Have tabs a certain number of characters apart, not 8 (enables -a):

unexpand -t {{number}} {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

uniq

v0.0.26
uniq [OPTION]... [INPUT [OUTPUT]]

Report or omit repeated lines.

Options

--all-repeated=<delimit-method>, -D <delimit-method>

print all duplicate lines. Delimiting is done with blank lines. [default: none]

--group=<group-method>

show all items, separating groups with an empty line. [default: separate]

--check-chars=<N>, -w <N>

compare no more than N characters in lines

--count, -c

prefix lines by the number of occurrences

--ignore-case, -i

ignore differences in case when comparing

--repeated, -d

only print duplicate lines

--skip-chars=<N>, -s <N>

avoid comparing the first N characters

--skip-fields=<N>, -f <N>

avoid comparing the first N fields

--unique, -u

only print unique lines

--zero-terminated, -z

end lines with 0 byte, not newline

Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT (or standard output).

Note: uniq does not detect repeated lines unless they are adjacent. You may want to sort the input first, or use sort -u without uniq.

Examples

Display each line once:

sort {{path/to/file}} | uniq

Display only unique lines:

sort {{path/to/file}} | uniq -u

Display only duplicate lines:

sort {{path/to/file}} | uniq -d

Display number of occurrences of each line along with that line:

sort {{path/to/file}} | uniq -c

Display number of occurrences of each line, sorted by the most frequent:

sort {{path/to/file}} | uniq -c | sort -nr

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

unlink

v0.0.26
unlink [FILE]
unlink OPTION

Unlink the file at FILE.

Options

Examples

Remove the specified file if it is the last link:

unlink {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

uptime

v0.0.26
uptime [OPTION]...

Display the current time, the length of time the system has been up, the number of users on the system, and the average number of jobs in the run queue over the last 1, 5 and 15 minutes.

Options

--since, -s

system up since

Examples

Print current time, uptime, number of logged-in users and other information:

uptime

Show only the amount of time the system has been booted for:

uptime --pretty

Print the date and time the system booted up at:

uptime --since

Display version:

uptime --version

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

users

v0.0.26
users [FILE]

Print the user names of users currently logged in to the current host.

Options

Examples

Print logged in usernames:

users

Print logged in usernames according to a given file:

users {{/var/log/wmtp}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

vdir

v0.0.26
vdir [OPTION]... [FILE]...

List directory contents. Ignore files and directories starting with a '.' by default.

Mandatory arguments to long options are mandatory for short options too.

Options

--help

Print help information.

--format

Set the display format.

-C

Display the files in columns.

--long, -l

Display detailed information.

-x

List entries in rows instead of in columns.

--tabsize=<COLS>, -T <COLS>

Assume tab stops at each COLS instead of 8 (unimplemented)

-m

List entries separated by commas.

--zero

List entries separated by ASCII NUL characters.

--dired, -D

generate output designed for Emacs' dired (Directory Editor) mode

--hyperlink=<WHEN>

hyperlink file names WHEN

-1

List one file per line.

-o

Long format without group information. Identical to --format=long with --no-group.

-g

Long format without owner information.

--numeric-uid-gid, -n

-l with numeric UIDs and GIDs.

--quoting-style

Set quoting style.

--literal, -N

Use literal quoting style. Equivalent to --quoting-style=literal

--escape, -b

Use escape quoting style. Equivalent to --quoting-style=escape

--quote-name, -Q

Use C quoting style. Equivalent to --quoting-style=c

--hide-control-chars, -q

Replace control characters with '?' if they are not escaped.

--show-control-chars

Show control characters 'as is' if they are not escaped.

--time=<field>

Show time in :
access time (-u): atime, access, use;
change time (-t): ctime, status.
birth time: birth, creation;

-c

If the long listing format (e.g., -l, -o) is being used, print the status change time (the 'ctime' in the inode) instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the status change time.

-u

If the long listing format (e.g., -l, -o) is being used, print the status access time instead of the modification time. When explicitly sorting by time (--sort=time or -t) or when not using a long listing format, sort according to the access time.

--hide=<PATTERN>

do not list implied entries matching shell PATTERN (overridden by -a or -A)

--ignore=<PATTERN>, -I <PATTERN>

do not list implied entries matching shell PATTERN

--ignore-backups, -B

Ignore entries which end with ~.

--sort=<field>

Sort by : name, none (-U), time (-t), size (-S), extension (-X) or width

-S

Sort by file size, largest first.

-t

Sort by modification time (the 'mtime' in the inode), newest first.

-v

Natural sort of (version) numbers in the filenames.

-X

Sort alphabetically by entry extension.

-U

Do not sort; list the files in whatever order they are stored in the directory. This is especially useful when listing very large directories, since not doing any sorting can be noticeably faster.

--dereference, -L

When showing file information for a symbolic link, show information for the file the link references rather than the link itself.

--dereference-command-line-symlink-to-dir

Do not follow symlinks except when they link to directories and are given as command line arguments.

--dereference-command-line, -H

Do not follow symlinks except when given as command line arguments.

--no-group, -G

Do not show group in long format.

--author

Show author in long format. On the supported platforms, the author always matches the file owner.

--all, -a

Do not ignore hidden files (files with names that start with '.').

--almost-all, -A

In a directory, do not ignore all file names that start with '.', only ignore '.' and '..'.

--directory, -d

Only list the names of directories, rather than listing directory contents. This will not follow symbolic links unless one of --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir is specified.

--human-readable, -h

Print human readable file sizes (e.g. 1K 234M 56G).

--kibibytes, -k

default to 1024-byte blocks for file system usage; used only with -s and per directory totals

--si

Print human readable file sizes using powers of 1000 instead of 1024.

--block-size=<BLOCK_SIZE>

scale sizes by BLOCK_SIZE when printing them

--inode, -i

print the index number of each file

--reverse, -r

Reverse whatever the sorting method is e.g., list files in reverse alphabetical order, youngest first, smallest first, or whatever.

--recursive, -R

List the contents of all directories recursively.

--width=<COLS>, -w <COLS>

Assume that the terminal is COLS columns wide.

--size, -s

print the allocated size of each file, in blocks

--color

Color output based on file type.

--indicator-style

Append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F)

--classify=<when>, -F <when>

Append a character to each file name indicating the file type. Also, for regular files that are executable, append '*'. The file type indicators are '/' for directories, '@' for symbolic links, '|' for FIFOs, '=' for sockets, '>' for doors, and nothing for regular files. when may be omitted, or one of:
none - Do not classify. This is the default.
auto - Only classify if standard output is a terminal.
always - Always classify.
Specifying --classify and no when is equivalent to --classify=always. This will not follow symbolic links listed on the command line unless the --dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir options are specified.

--file-type

Same as --classify, but do not append '*'

-p

Append / indicator to directories.

--time-style=<TIME_STYLE>

time/date format with -l; see TIME_STYLE below

--full-time

like -l --time-style=full-iso

--context, -Z

print any security context of each file

--group-directories-first

group directories before files; can be augmented with a --sort option, but any use of --sort=none (-U) disables grouping

Examples

List files and directories in the current directory, one per line, with details:

vdir

List with sizes displayed in human-readable units (KB, MB, GB):

vdir -h

List including hidden files (starting with a dot):

vdir -a

List files and directories sorting entries by size (largest first):

vdir -S

List files and directories sorting entries by modification time (newest first):

vdir -t

List grouping directories first:

vdir --group-directories-first

Recursively list all files and directories in a specific directory:

vdir --recursive {{path/to/directory}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

wc

v0.0.26
wc [OPTION]... [FILE]...

Display newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when FILE is -, read standard input.

Options

--bytes, -c

print the byte counts

--chars, -m

print the character counts

--files0-from=<F>

read input from the files specified by
NUL-terminated names in file F;
If F is - then read names from standard input

--lines, -l

print the newline counts

--max-line-length, -L

print the length of the longest line

--total=<WHEN>

when to print a line with total counts;
WHEN can be: auto, always, only, never

--words, -w

print the word counts

Examples

Count all lines in a file:

wc --lines {{path/to/file}}

Count all words in a file:

wc --words {{path/to/file}}

Count all bytes in a file:

wc --bytes {{path/to/file}}

Count all characters in a file (taking multi-byte characters into account):

wc --chars {{path/to/file}}

Count all lines, words and bytes from stdin:

{{find .}} | wc

Count the length of the longest line in number of characters:

wc --max-line-length {{path/to/file}}

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

who

v0.0.26
who [OPTION]... [ FILE | ARG1 ARG2 ]

Print information about users who are currently logged in.

Options

--all, -a

same as -b -d --login -p -r -t -T -u

--boot, -b

time of last system boot

--dead, -d

print dead processes

--heading, -H

print line of column headings

--login, -l

print system login processes

--lookup

attempt to canonicalize hostnames via DNS

-m

only hostname and user associated with stdin

--process, -p

print active processes spawned by init

--count, -q

all login names and number of users logged on

--runlevel, -r

print current runlevel

--short, -s

print only name, line, and time (default)

--time, -t

print last system clock change

--users, -u

list users logged in

--mesg, --message, --writable, -T, -w

add user's message status as +, - or ?

Examples

Display the username, line, and time of all currently logged-in sessions:

who

Display information only for the current terminal session:

who am i

Display all available information:

who -a

Display all available information with table headers:

who -a -H

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

whoami

v0.0.26
whoami

Print the current username.

Options

Examples

Display currently logged username:

whoami

Display the username after a change in the user ID:

sudo whoami

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.

yes

v0.0.26
yes [STRING]...

Repeatedly display a line with STRING (or 'y')

Options

Examples

Repeatedly output "message":

yes {{message}}

Repeatedly output "y":

yes

Accept everything prompted by the apt-get command:

yes | sudo apt-get install {{program}}

Repeatedly output a newline to always accept the default option of a prompt:

yes ''

The examples are provided by the tldr-pages project under the CC BY 4.0 License.

Please note that, as uutils is a work in progress, some examples might fail.