---
obj: application
website: https://www.gnu.org/software/coreutils/
repo: https://git.savannah.gnu.org/git/coreutils.git
wiki: https://en.wikipedia.org/wiki/GNU_Core_Utilities
---
# GNU Core Utils
The GNU Core Utilities or coreutils is a package of GNU software containing implementations for many of the basic tools, such as cat, ls, and rm, which are used on Unix-like operating systems.

## base64
[base64](../../../files/Base64.md) encode/decode data and print to standard output

Usage: `base64 [OPTION]... [FILE]`
### Flags
| Flag                   | Description                                   |
| ---------------------- | --------------------------------------------- |
| `-d, --decode`         | Decode Input                                  |
| `-i, --ignore-garbage` | when decoding, ignore non-alphabet characters | 

## basename
strip directory and suffix from filenames
Usage: `basename NAME`

## cat
concatenate files and print on the standard output
Usage: `cat [OPTION]... [FILE]...`

### Flags
| Flag                    | Description                                  |
| ----------------------- | -------------------------------------------- |
| `-b, --number-nonblank` | number nonempty output lines, overrides `-n` |
| `-n, --number`          | number all output lines                      |

## chmod
change file mode (permissions) bits
Usage: `chmod [OPTION]... OCTAL-MODE FILE...`

### Options
| Option                  | Description                                                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------- |
| `-c, --changes`         | like verbose but report only when a change is made                                                    |
| `-f, --silent, --quiet` | suppress most error messages                                                                          |
| `-v, --verbose`         | output a diagnostic for every file processed                                                          |
| `--reference=RFILE`     | use RFILE's mode instead of specifying MODE values.  RFILE is always dereferenced if a symbolic link. |
| `-R, --recursive`       | change files and directories recursively                                                              |                                                      |

## chown
change file owner and group
Usage: `chown [OPTION]... [OWNER][:[GROUP]] FILE...`

### Options
| Option                  | Description                                                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------- |
| `-c, --changes`         | like verbose but report only when a change is made                                                    |
| `-f, --silent, --quiet` | suppress most error messages                                                                          |
| `-v, --verbose`         | output a diagnostic for every file processed                                                          |
| `--reference=RFILE`     | use RFILE's owner and group rather than specifying OWNER:GROUP values.  RFILE is always dereferenced. |
| `-R, --recursive`       | operate on files and directories recursively                                                                                                      |

## chroot
run command or interactive shell with special root directory
Usage: `chroot [OPTION] NEWROOT [COMMAND [ARG]...]`

## cksum
compute and verify file checksums
Usage: `cksum [OPTION]... [FILE]...`

### Options
| Option                 | Description                   |
| ---------------------- | ----------------------------- |
| `-a, --algorithm=TYPE` | select the digest type to use | 

### Digests
- crc
- md5
- sha1
- sha224
- sha256
- sha384
- sha512
- blake2b

## cp
copy files and directories
Usage: `cp [OPTION]... SOURCE DEST`

### Options
| Option                             | Description                                                                 |
| ---------------------------------- | --------------------------------------------------------------------------- |
| `-l, --link`                       | hard link files instead of copying                                          |
| `-R, -r, --recursive`              | copy directories recursively                                                |
| `-s, --symbolic-link`              | make symbolic links instead of copying                                      |
| `-S, --suffix=SUFFIX`              | override the usual backup suffix                                            |
| `-t, --target-directory=DIRECTORY` | copy all SOURCE arguments into DIRECTORY                                    |
| `--update[=UPDATE]`                | control which existing files are updated; UPDATE={all,none,older(default)}. |
| `-u`                               | equivalent to `--update[=older]`                                            |
| `-v, --verbose`                    | explain what is being done                                                  |
| `-x, --one-file-system`            | stay on this file system                                                    |
| `-b`                               | Create a backup file if destination already exists                                                                             |

## cut
remove sections from each line of files
Usage: `cut OPTION... [FILE]...`

### Options
| Option                      | Description                                                                                                              |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `-d, --delimiter=DELIM`     | use DELIM instead of TAB for field delimiter                                                                             |
| `-f, --fields=LIST`         | select only these fields;  also print any line that contains no delimiter character, unless the `-s` option is specified |
| `-s, --only-delimited`      | do not print lines not containing delimiters                                                                             |
| `--output-delimiter=STRING` | use STRING as the output delimiter the default is to use the input delimiter                                                                                                                         |

## date
print or set the system date and time
Usage: `date [OPTION]... [+FORMAT]`

### Options
| Option                 | Description                                |
| ---------------------- | ------------------------------------------ |
| `-d, --date=STRING`    | display time described by STRING           |
| `-r, --reference=FILE` | display the last modification time of FILE |
| `-s, --set=STRING`     | set time described by STRING               |

## dd
convert and copy a file
Usage: `dd [OPERAND]...`

### Operands
| Operand        | Description                                                                                                                                                                                     |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bs=BYTES`     | read and write up to BYTES bytes at a time (default: 512)                                                                                                                                       |
| `count=N`      | copy only N input blocks                                                                                                                                                                        |
| `if=FILE`      | read from FILE instead of stdin                                                                                                                                                                 |
| `of=FILE`      | write to FILE instead of stdout                                                                                                                                                                 |
| `status=LEVEL` | The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer statistics | 

## df
report file system space usage
Usage: `df [OPTION]... [FILE]...`

### Options
| Option                 | Description                                          |
| ---------------------- | ---------------------------------------------------- |
| `-a, --all`            | include pseudo, duplicate, inaccessible file systems |
| `-h, --human-readable` | print sizes in powers of 1024 (e.g., 1023M)          |
| `-H, --si`             | print sizes in powers of 1000 (e.g., 1.1G)           |
| `-i, --inodes`         | list inode information instead of block usage        |

## dirname
strip last component from file name
Usage: `dirname [OPTION] NAME...`

## du
estimate file space usage
Usage: `du [OPTION]... [FILE]...`

### Options
| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `-h, --human-readable` | print sizes in human readable format   |
| `-s, --summarize`      | display only a total for each argument | 

## echo
display a line of text
Usage: `echo [OPTION]... [STRING]...`

### Options
| Option | Description                                           |
| ------ | ----------------------------------------------------- |
| `-n`   | do not output the trailing newline                    |
| `-e`   | enable interpretation of backslash escapes            |
| `-E`   | disable interpretation of backslash escapes (default) |

### Backslash Interpretations
| Sequence | Meaning                                   |
| -------- | ----------------------------------------- |
| \\       | 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)   | 

## env
run a program in a modified environment
Print [Environment Variables](../../../linux/Environment%20Variables.md) with only `env`
Usage: `env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]`

### Options
| Option                     | Description                                        |
| -------------------------- | -------------------------------------------------- |
| `-i, --ignore-environment` | start with an empty environment                    |
| `-u, --unset=NAME`         | remove variable from the environment               |
| `-C, --chdir=DIR`          | change working directory to DIR                    |
| `--block-signal[=SIG]`     | block delivery of SIG signal(s) to COMMAND         |
| `--ignore-signal[=SIG]`    | set handling of SIG signal(s) to do nothing        |
| `-v, --debug`              | print verbose information for each processing step |

## false
do nothing, unsuccessfully
Usage: `false`

## head
output the first part of files
Usage: `head [OPTION]... [FILE]...`

### Options
| Option                  | Description                                                                                                            |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `-c, --bytes=[-]NUM`    | print the first NUM bytes of each file; with the leading '-', print all but the last NUM bytes of each file            |
| `-n, --lines=[-]NUM`    | print the first NUM lines instead of the first 10; with the leading '-', print all but the last NUM lines of each file |
| `-q, --quiet, --silent` | never print headers giving file names                                                                                  |

## id
print real and effective user and group IDs
Usage: `id [OPTION]... [USER]...`

### Option
| Option         | Description                                  |
| -------------- | -------------------------------------------- |
| `-g, --group`  | print only the effective group ID            |
| `-G, --groups` | print all group IDs                          |
| `-n, --name`   | print a name instead of a number, for `-ugG` |
| `-u, --user`   | print only the effective user ID             |

## install
copy files and set attributes
Usage: `install [OPTION]... SOURCE... DIRECTORY`

### Options
| Option                             | Description                                                                                                                                     |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `-b`                               | make a backup of each existing destination file                                                                                                 |
| `-S, --suffix=SUFFIX`              | override the usual backup suffix                                                                                                                |
| `-C, --compare`                    | compare  content of source and destination files, and if no change to content, ownership, and permissions, do not modify the destination at all |
| `-d, --directory`                  | treat all arguments as directory names; create all components of the specified directories                                                      |
| `-g, --group=GROUP`                | set group ownership, instead of process' current group                                                                                          |
| `-m, --mode=MODE`                  | set permission mode (as in chmod), instead of rwxr-xr-x                                                                                         |
| `-o, --owner=OWNER`                | set ownership (super-user only)                                                                                                                 |
| `-p, --preserve-timestamps`        | apply access/modification times of SOURCE files to corresponding destination files                                                              |
| `-s, --strip`                      | strip symbol tables                                                                                                                             |
| `-t, --target-directory=DIRECTORY` | copy all SOURCE arguments into DIRECTORY                                                                                                        |
| `-v, --verbose`                    | print the name of each created file or directory                                                                                                |

## kill
terminate a process
Usage: `kill  [-signal|-s signal|-p]  [-q value] [-a] [--timeout milliseconds signal] [--] pid|name...`

### Options
| Option                | Description                                                                      |
| --------------------- | -------------------------------------------------------------------------------- |
| `-s, --signal signal` | The signal to send. It may be given as a name or a number.                       |
| `-p, --pid`           | Only print the process ID (PID) of the named processes, do not send any signals. |
| `--verbose`           | Print PID(s) that will be signaled with kill along with the signal.              |

## ln
make links between files
Usage: `ln [OPTION]... TARGET LINK_NAME`

### Options
| Option                             | Description                                        |
| ---------------------------------- | -------------------------------------------------- |
| `-s, --symbolic`                   | make symbolic links instead of hard links          |
| `-t, --target-directory=DIRECTORY` | specify the DIRECTORY in which to create the links |
| `-v, --verbose`                    | print name of each linked file                     |

## ls
list directory contents
Usage: `ls [OPTION]... [FILE]...`

### Options
| Option                 | Description                                         |
| ---------------------- | --------------------------------------------------- |
| `-a, --all`            | do not ignore entries starting with .               |
| `-h, --human-readable` | with `-l` print sizes like 1K 234M 2G etc |
| `-I, --ignore=PATTERN` | do not list implied entries matching shell PATTERN  |
| `-l`                   | use a long listing format                           |
| `-r, --reverse`        | reverse order while sorting                         |
| `-R, --recursive`      | list subdirectories recursively                     |

## mkdir
make directories
Usage: `mkdir [OPTION]... DIRECTORY...`

### Options
| Option            | Description                                                                                                 |
| ----------------- | ----------------------------------------------------------------------------------------------------------- |
| `-m, --mode=MODE` | set file mode (as in chmod), not a=rwx - umask                                                              |
| `-p, --parents`   | no error if existing, make parent directories as needed, with their file modes unaffected by any -m option. |
| `-v, --verbose`   | print a message for each created directory                                                                  |

## mkfifo
make FIFOs (named pipes)
Usage: `mkfifo [OPTION]... NAME...`

## mv
move (rename) files
Usage: `mv [OPTION]... SOURCE... DIRECTORY`

### Options
| Option                             | Description                                      |
| ---------------------------------- | ------------------------------------------------ |
| `-b`                               | make a backup of each existing destination file  |
| `-S, --suffix=SUFFIX`              | override the usual backup suffix                 | 
| `-t, --target-directory=DIRECTORY` | copy all SOURCE arguments into DIRECTORY         |
| `-v, --verbose`                    | print the name of each created file or directory |

## nl
number lines of files
Usage: `nl [FILE]...`

## nproc
print the number of processing units available
Usage: `nproc`

## pwd
print name of current/working directory
Usage: `pwd`

## readlink
print resolved symbolic links or canonical file names
Usage: `readlink [OPTION]... FILE...`

### Options
| Option                        | Description                                                                                                                            |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `-f, --canonicalize`          | canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist        |
| `-e, --canonicalize-existing` | canonicalize by following every symlink in every component of the given name recursively, all components must exist                    |
| `-m, --canonicalize-missing`  | canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence |
| `-n, --no-newline`            | do not output the trailing delimiter                                                                                                   |

## realpath
print the resolved path
Usage: `realpath [OPTION]... FILE...`

### Options
| Option                        | Description                                     |
| ----------------------------- | ----------------------------------------------- |
| `-e, --canonicalize-existing` | all components of the path must exist           |
| `-m, --canonicalize-missing`  | no path components need exist or be a directory |
| `-L, --logical`               | resolve '..' components before symlinks         |
| `--relative-to=DIR`           | print the resolved path relative to DIR         |
| `--relative-base=DIR`         | print absolute paths unless paths below DIR     |
| `-s, --strip, --no-symlinks`  | don't expand symlinks                           |

## rm
remove files or directories
Usage: `rm [OPTION]... [FILE]...`

### Options
| Option                | Description                                                                                                                                         |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-f, --force`         | ignore nonexistent files and arguments, never prompt                                                                                                |
| `-i`                  | prompt before every removal                                                                                                                         |
| `--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 |
| `-r, -R, --recursive` | remove directories and their contents recursively                                                                                                   |
| `-d, --dir`           | remove empty directories                                                                                                                            |
| `-v, --verbose`       | explain what is being done                                                                                                                                                    |

## rmdir
remove empty directories
Usage: `rmdir [OPTION]... DIRECTORY...`

### Options
| Option          | Description                                                                          |
| --------------- | ------------------------------------------------------------------------------------ |
| `-p, --parents` | remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b' is similar to 'rmdir a/b a' |
| `-v, --verbose` | output a diagnostic for every directory processed                                    |

## seq
print a sequence of numbers
Usage:
- `seq [OPTION]... LAST`
- `seq [OPTION]... FIRST LAST`
- `seq [OPTION]... FIRST INCREMENT LAST`

### Options
| Option                   | Description                                   |
| ------------------------ | --------------------------------------------- |
| `-f, --format=FORMAT`    | use printf style floating-point FORMAT        |
| `-s, --separator=STRING` | use STRING to separate numbers (default: \n)  |
| `-w, --equal-width`      | equalize width by padding with leading zeroes | 

## shred
overwrite a file to hide its contents, and optionally delete it
Usage: `shred [OPTION]... FILE...`

### Options
| Option                 | Description                                      |
| ---------------------- | ------------------------------------------------ |
| `-f, --force`          | change permissions to allow writing if necessary |
| `-n, --iterations=N`   | overwrite N times instead of the default (3)     |
| `--random-source=FILE` | get random bytes from FILE                       |

## shuf
generate random permutations
Usage: `shuf [OPTION]... [FILE]`

### Options
| Option                    | Description                                      |
| ------------------------- | ------------------------------------------------ |
| `-i, --input-range=LO-HI` | treat each number LO through HI as an input line |
| `-n, --head-count=COUNT`  | output at most COUNT lines                       |
| `-o, --output=FILE`       | write result to FILE instead of standard output  |
| `--random-source=FILE`    | get random bytes from FILE                       |
| `-r, --repeat`            | output lines can be repeated                                                 |

## sleep
delay for a specified amount of time
Usage: `sleep NUMBER[SUFFIX]...`

## sort
sort lines of text files
Usage: `sort [OPTION]... [FILE]...`

### Options
| Option                        | Description                                      |
| ----------------------------- | ------------------------------------------------ |
| `-b, --ignore-leading-blanks` | ignore leading blanks                            |
| `-d, --dictionary-order`      | consider only blanks and alphanumeric characters |
| `-f, --ignore-case`           | fold lower case to upper case characters         |
| `-g, --general-numeric-sort`  | compare according to general numerical value     |
| `-i, --ignore-nonprinting`    | consider only printable characters               |
| `-M, --month-sort`            | compare (unknown) < 'JAN' < ... < 'DEC'          |
| `-h, --human-numeric-sort`    | compare human readable numbers (e.g., 2K 1G)     |
| `-n, --numeric-sort`          | compare according to string numerical value      |
| `-r, --reverse`               | reverse the result of comparisons                                                 |

## split
split a file into pieces
Usage: `split [OPTION]... [FILE [PREFIX]]`

### Options
| Option                       | Description                                               |
| ---------------------------- | --------------------------------------------------------- |
| `-a, --suffix-length=N`      | generate suffixes of length N (default 2)                 |
| `--additional-suffix=SUFFIX` | append an additional SUFFIX to file names                 |
| `-b, --bytes=SIZE`           | put SIZE bytes per output file                            |
| `-C, --line-bytes=SIZE`      | put at most SIZE bytes of records per output file         |
| `-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           |
| `-l, --lines=NUMBER`         | put NUMBER lines/records per output file                  |
| `-n, --number=CHUNKS`        | generate CHUNKS output files; see explanation below       |
| `--verbose`                  | print a diagnostic just before each output file is opened |

## stat
display file or file system status
Usage: `stat [OPTION]... FILE...`

### Options
| Option                | Description                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------ |
| `-L, --dereference`   | follow links                                                                               |
| `-f, --file-system`   | display file system status instead of file status                                          |
| `-c  --format=FORMAT` | use the specified FORMAT instead of the default; output a newline after each use of FORMAT |

### Format Modifiers
| Format | Description                                                            |
| ------ | ---------------------------------------------------------------------- |
| %a     | permission bits in octal (note '#' and '0' printf flags)               |
| %A     | permission bits and file type in human readable form                   |
| %b     | number of blocks allocated (see %B)                                    |
| %B     | the size in bytes of each block reported by %b                         |
| %C     | SELinux security context string                                        |
| %d     | device number in decimal (st_dev)                                      |
| %D     | device number in hex (st_dev)                                          |
| %Hd    | major device number in decimal                                         |
| %Ld    | minor device number in decimal                                         |
| %f     | raw mode in hex                                                        |
| %F     | file type                                                              |
| %g     | group ID of owner                                                      |
| %G     | group name of owner                                                    |
| %h     | number of hard links                                                   |
| %i     | inode number                                                           |
| %m     | mount point                                                            |
| %n     | file name                                                              |
| %N     | quoted file name with dereference if symbolic link                     |
| %o     | optimal I/O transfer size hint                                         |
| %s     | total size, in bytes                                                   |
| %r     | device type in decimal (st_rdev)                                       |
| %R     | device type in hex (st_rdev)                                           |
| %Hr    | major device type in decimal, for character/block device special files |
| %Lr    | minor device type in decimal, for character/block device special files | 
| %t     | major device type in hex, for character/block device special files     |
| %T     | minor device type in hex, for character/block device special files     |
| %u     | user ID of owner                                                       |
| %U     | user name of owner                                                     |
| %w     | time of file birth, human-readable; - if unknown                       |
| %W     | time of file birth, seconds since Epoch; 0 if unknown                  |
| %x     | time of last access, human-readable                                    |
| %X     | time of last access, seconds since Epoch                               |
| %y     | time of last data modification, human-readable                         |
| %Y     | time of last data modification, seconds since Epoch                    |
| %z     | time of last status change, human-readable                             |
| %Z     | time of last status change, seconds since Epoch                        |
| %a     | free blocks available to non-superuser                                 |
| %b     | total data blocks in file system                                       |
| %c     | total file nodes in file system                                        |
| %d     | free file nodes in file system                                         |
| %f     | free blocks in file system                                             |
| %i     | file system ID in hex                                                  |
| %l     | maximum length of filenames                                            |
| %n     | file name                                                              |
| %s     | block size (for faster transfers)                                      |
| %S     | fundamental block size (for block counts)                              |
| %t     | file system type in hex                                                |
| %T     | file system type in human readable form                                |

## tac
concatenate and print files in reverse
Usage: `tac [FILE]...`

## tail
output the last part of files
Usage: `tail [OPTION]... [FILE]...`

### Options
| Option               | Description                                                                                          |
| -------------------- | ---------------------------------------------------------------------------------------------------- |
| `-c, --bytes=[+]NUM` | output the last NUM bytes; or use `-c` +NUM to output starting with byte NUM of each file            |
| `-f`                 | output appended data as the file grows;                                                              |
| `-n, --lines=[+]NUM` | output the last NUM lines, instead of the last 10; or use `-n` +NUM to skip NUM-1 lines at the start |
| `--pid=PID`          | with `-f`, terminate after process ID, PID dies                                                        |

## tee
read from standard input and write to standard output and files
Usage: `tee [OPTION]... [FILE]...`

### Options
| Option         | Description                                 |
| -------------- | ------------------------------------------- |
| `-a, --append` | append to the given FILEs, do not overwrite |

## touch
change file timestamps
Usage: `touch [OPTION]... FILE...`

### Options
| Option                 | Description                                     |
| ---------------------- | ----------------------------------------------- |
| `-a`                   | change only the access time                     |
| `-c, --no-create`      | do not create any files                         |
| `-d, --date=STRING`    | parse STRING and use it instead of current time |
| `-r, --reference=FILE` | use this file's times instead of current time   |

## tr
translate or delete characters
Usage: `tr [OPTION]... STRING1 [STRING2]`

### Options
| Option         | Description                                    |
| -------------- | ---------------------------------------------- |
| `-d, --delete` | delete characters in STRING1, do not translate |

## true
do nothing, successfully
Usage: `true`

## truncate
shrink or extend the size of a file to the specified size
Usage: `truncate OPTION... FILE...`

### Options
| Option                  | Description                               |
| ----------------------- | ----------------------------------------- |
| `-c, --no-create`       | do not create any files                   |
| `-r, --reference=RFILE` | base size on RFILE                        |
| `-s, --size=SIZE`       | set or adjust the file size by SIZE bytes |

## uname
print system information
Usage: `uname [OPTION]...`

### Options
| Option                 | Description                     |
| ---------------------- | ------------------------------- |
| `-a, --all`            | print all information           |
| `-s, --kernel-name`    | print the kernel name           |
| `-n, --nodename`       | print the network node hostname |
| `-r, --kernel-release` | print the kernel release        |
| `-v, --kernel-version` | print the kernel version        |
| `-m, --machine`        | print the machine hardware name |

## uniq
report or omit repeated lines
Usage: `uniq [OPTION]... [INPUT [OUTPUT]]`

### Options
| Option               | Description                                    |
| -------------------- | ---------------------------------------------- |
| `-c, --count`        | prefix lines by the number of occurrences      |
| `-d, --repeated`     | only print duplicate lines, one for each group |
| `-i, --ignore-case`  | ignore differences in case when comparing      |
| `-s, --skip-chars=N` | avoid comparing the first N characters         |
| `-u, --unique`       | only print unique lines                        |

## uptime
Tell how long the system has been running
Usage: `uptime [options]`

### Options
| Option         | Description                                    |
| -------------- | ---------------------------------------------- |
| `-p, --pretty` | show uptime in pretty format                   |
| `-s, --since`  | system up since, in yyyy-mm-dd HH:MM:SS format |

## wc
print newline, word, and byte counts for each file
Usage: `wc [OPTION]... [FILE]...`

### Options
| Option        | Description                |
| ------------- | -------------------------- |
| `-c, --bytes` | print the byte counts      |
| `-m, --chars` | print the character counts |
| `-l, --lines` | print the newline counts   |
| `-w, --words` | print the word counts      | 

## whoami
print effective user name
Usage: `whoami`