knowledge/technology/applications/cli/Core Utils.md
2023-12-04 11:02:23 +01:00

629 lines
No EOL
36 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`