UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

477 lines (308 loc) 27.5 kB
Related articles * [Bash](/index.php/Bash "Bash") * [Zsh](/index.php/Zsh "Zsh") * [General recommendations](/index.php/General_recommendations "General recommendations") * [GNU Project](/index.php/GNU_Project "GNU Project") * [sudo](/index.php/Sudo "Sudo") * [cron](/index.php/Cron "Cron") * [man page](/index.php/Man_page "Man page") * [Securely wipe disk#shred](/index.php/Securely_wipe_disk#shred "Securely wipe disk") * [File permissions and attributes](/index.php/File_permissions_and_attributes "File permissions and attributes") * [Color output in console](/index.php/Color_output_in_console "Color output in console") * [Archiving and compression tools](/index.php/Archiving_and_compression_tools "Archiving and compression tools") This article deals with so-called *core* utilities on a GNU/Linux system, such as *less*, *ls*, and *grep*. The scope of this article includes, but is not limited to, those utilities included with the GNU [coreutils](https://www.archlinux.org/packages/?name=coreutils) package. What follows are various tips and tricks and other helpful information related to these utilities. ## Contents * [1 Basic commands](#Basic_commands) * [2 awk](#awk) * [3 cat](#cat) * [4 chmod](#chmod) * [5 chown](#chown) * [6 dd](#dd) * [7 find](#find) * [8 grep](#grep) * [9 iconv](#iconv) * [9.1 Convert a file in place](#Convert_a_file_in_place) * [10 ip](#ip) * [11 less](#less) * [11.1 Vim as alternative pager](#Vim_as_alternative_pager) * [12 locate](#locate) * [13 ls](#ls) * [13.1 Long format](#Long_format) * [13.2 File names containing spaces enclosed in quotes](#File_names_containing_spaces_enclosed_in_quotes) * [14 lsblk](#lsblk) * [15 mkdir](#mkdir) * [16 mv](#mv) * [17 od](#od) * [18 pv](#pv) * [19 rm](#rm) * [20 sed](#sed) * [21 seq](#seq) * [22 ss](#ss) * [23 tar](#tar) * [24 which](#which) * [25 wipefs](#wipefs) * [26 See also](#See_also) ## Basic commands The following table lists basic shell commands every Linux user should be familiar with. See the below sections and *Related articles* for details. | Command | Description | Manual page | Example | | man | Show manual page for a command | [man(7)](https://jlk.fjfi.cvut.cz/arch/manpages/man/man.7) | man ed | | cd | Change directory (shell built-in command) | [cd(1p)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cd.1p) | cd /etc/pacman.d | | mkdir | Create a directory | [mkdir(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mkdir.1) | mkdir ~/newfolder | | rmdir | Remove empty directory | [rmdir(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/rmdir.1) | rmdir ~/emptyfolder | | rm | Remove a file | [rm(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/rm.1) | rm ~/file.txt | | rm -r | Remove directory and contents | rm -r ~/.cache | | ls | List files | [ls(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ls.1) | ls *.mkv | | ls -a | List hidden files | ls -a /home/archie | | ls -al | List hidden files and file properties | | mv | Move a file | [mv(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mv.1) | mv ~/compressed.zip ~/archive/compressed2.zip | | cp | Copy a file | [cp(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cp.1) | cp ~/.bashrc ~/.bashrc.bak | | chmod +x | Make a file [executable](/index.php/Executable "Executable") | [chmod(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/chmod.1) | chmod +x ~/.local/bin/myscript.sh | | cat | Show file contents | [cat(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cat.1) | cat /etc/hostname | | strings | Show printable characters in binary files | [strings(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/strings.1) | strings /usr/bin/free | | find | Search for a file | [find(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/find.1) | find ~ -name myfile | | mount | Mount a partition | [mount(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mount.8) | mount /dev/sdc1 /media/usb | | df -h | Show remaining space on all partitions | [df(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/df.1) | | ps -A | Show all running processes | [ps(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ps.1) | | killall | Kill all running instances of a process | [killall(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/killall.1) | | ss -at | Display a list of open TCP sockets | [ss(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ss.8) | ## awk [AWK](https://en.wikipedia.org/wiki/AWK "wikipedia:AWK") is a pattern scanning and processing language. There are multiple implementations: * **gawk** — GNU version of awk, see [gawk(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/gawk.1). [https://www.gnu.org/software/gawk/](https://www.gnu.org/software/gawk/) || [gawk](https://www.archlinux.org/packages/?name=gawk) (part of [base](https://www.archlinux.org/groups/x86_64/base/)) * **nawk** — The one, true implementation of AWK, see [nawk(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/nawk.1). [https://www.cs.princeton.edu/~bwk/btl.mirror/](https://www.cs.princeton.edu/~bwk/btl.mirror/) || [nawk](https://www.archlinux.org/packages/?name=nawk) * **mawk** — A very fast AWK implementation. [http://invisible-island.net/mawk/](http://invisible-island.net/mawk/) || [mawk](https://aur.archlinux.org/packages/mawk/) * [BusyBox](/index.php/BusyBox "BusyBox") also includes an AWK implementation. ## cat [cat](https://en.wikipedia.org/wiki/cat_(Unix) is a standard Unix utility that concatenates files to standard output. * Because *cat* is not built into the shell, on many occasions you may find it more convenient to use a [redirection](https://en.wikipedia.org/wiki/Redirection_(computing) "wikipedia:Redirection (computing)"), for example in scripts, or if you care a lot about performance. In fact `< *file*` does the same as `cat *file*`. * *cat* can work with multiple lines: ``` $ cat << EOF >> *path/file* *first line* ... *last line* EOF ``` Alternatively, using `printf`: ``` $ printf '%s ' 'first line' ... 'last line' ``` * If you need to list file lines in reverse order, there is a coreutil command called [tac](https://en.wikipedia.org/wiki/tac_(Unix) (*cat* reversed). ## chmod See [File permissions and attributes#Changing permissions](/index.php/File_permissions_and_attributes#Changing_permissions "File permissions and attributes"). ## chown See [File permissions and attributes#Changing ownership](/index.php/File_permissions_and_attributes#Changing_ownership "File permissions and attributes"). ## dd [dd](https://en.wikipedia.org/wiki/dd_(Unix) is a utility for Unix and Unix-like operating systems whose primary purpose is to convert and copy a file. Similarly to *cp*, by default *dd* makes a bit-to-bit copy of the file, but with lower-level I/O flow control features. Some notable applications of *dd* are: * [Disk cloning#Using dd](/index.php/Disk_cloning#Using_dd "Disk cloning"), * Binary file patching: let say one wants to replace offset `0x123AB` of a file with the `FF C0 14` hexadecimal sequence, this can be done with the command line: `# printf '\xff\xc0\x14' | dd seek=$((0x123AB)) conv=notrunc bs=1 of=*/path/to/file*` For more information see [dd(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/dd.1) or the [full documentation](https://www.gnu.org/software/coreutils/dd). **Tip:** By default, *dd* outputs nothing until the task has finished. To monitor the progress of the operation, add the `status=progress` option to the command. **Warning:** One should be extremely cautious using *dd*, as with any command of this kind it can destroy data irreversibly. ## find *find* is part of the [findutils](https://www.archlinux.org/packages/?name=findutils) package, which belongs to the [base](https://www.archlinux.org/groups/x86_64/base/) package group. **Tip:** [fd](https://www.archlinux.org/packages/?name=fd) is a simple, fast and user-friendly alternative to `find` that provides more sensible defaults (e.g. ignores hidden files, directories and `.gitignore`'d files, `fd PATTERN` instead of `find -iname '*PATTERN*'`). It features colorized output (similar to `ls`), Unicode awareness, regular expressions and more. One would probably expect a *find* command to take as argument a file name and search the filesystem for files matching that name. For a program that does exactly that see [#locate](#locate) below. Instead, find takes a set of directories and matches each file under them against a set of expressions. This design allows for some very powerful "one-liners" that would not be possible using the "intuitive" design described above. See [GregsWiki:UsingFind](https://mywiki.wooledge.org/UsingFind "gregswiki:UsingFind") for usage details. ## grep [grep](https://en.wikipedia.org/wiki/grep "wikipedia:grep") (from [ed](https://en.wikipedia.org/wiki/Ed_(text_editor) "wikipedia:Ed (text editor)")'s *g/re/p*, *global/regular expression/print*) is a command line text search utility originally written for Unix. The *grep* command searches files or standard input for lines matching a given regular expression, and prints these lines to standard output. * Remember that *grep* handles files, so a construct like `cat *file* | grep *pattern*` is replaceable with `grep *pattern* *file*` * There are *grep* alternatives optimized for VCS source code, such as [ripgrep](https://www.archlinux.org/packages/?name=ripgrep), [the_silver_searcher](https://www.archlinux.org/packages/?name=the_silver_searcher), and [ack](https://www.archlinux.org/packages/?name=ack). * To include file line numbers in the output, use the `-n` option. * *grep* can also be used for hexadecimal search in a binary file, to look for let say the `A1 F2` sequence in a file, the command line is: `$ LANG=C grep --text --perl-regexp "\xA1\xF2" */path/to/file*` **Note:** Some commands send their output to [stderr(3)](https://jlk.fjfi.cvut.cz/arch/manpages/man/stderr.3), and grep has no apparent effect. In this case, redirect *stderr* to *stdout* with `*command* 2>&1 | grep *args*` or (for Bash 4) `*command* |& grep *args*`. See also [I/O Redirection](http://www.tldp.org/LDP/abs/html/io-redirection.html). For color support, see [Color output in console#grep](/index.php/Color_output_in_console#grep "Color output in console"). See [grep(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/grep.1) for more details. ## iconv *iconv* converts the encoding of characters from one codeset to another. The following command will convert the file `*foo*` from ISO-8859-15 to UTF-8, saving it to `*foo*.utf`: ``` $ iconv -f ISO-8859-15 -t UTF-8 *foo* > *foo*.utf ``` See [iconv(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/iconv.1) for more details. ### Convert a file in place **Tip:** You can use [recode](https://www.archlinux.org/packages/?name=recode) instead of iconv if you do not want to touch the mtime. Unlike [sed](#sed), *iconv* does not provide an option to convert a file in place. However, `sponge` from the [moreutils](https://www.archlinux.org/packages/?name=moreutils) package can help: ``` $ iconv -f WINDOWS-1251 -t UTF-8 *foobar*.txt | sponge *foobar*.txt ``` See [sponge(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/sponge.1) for details. ## ip [ip](https://en.wikipedia.org/wiki/Iproute2 "wikipedia:Iproute2") allows you to show information about network devices, IP addresses, routing tables, and other objects in the Linux [IP](https://en.wikipedia.org/wiki/Internet_Protocol "wikipedia:Internet Protocol") software stack. By appending various commands, you can also manipulate or configure most of these objects. **Note:** The *ip* utility is provided by the [iproute2](https://www.archlinux.org/packages/?name=iproute2) package, which is included in the [base](https://www.archlinux.org/groups/x86_64/base/) group. | Object | Purpose | Manual page | | ip addr | protocol address management | [ip-address(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-address.8) | | ip addrlabel | protocol address label management | [ip-addrlabel(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-addrlabel.8) | | ip l2tp | tunnel Ethernet over IP (L2TPv3) | [ip-l2tp(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-l2tp.8) | | ip link | network device configuration | [ip-link(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-link.8) | | ip maddr | multicast addresses management | [ip-maddress(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-maddress.8) | | ip monitor | watch for netlink messages | [ip-monitor(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-monitor.8) | | ip mroute | multicast routing cache management | [ip-mroute(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-mroute.8) | | ip mrule | rule in multicast routing policy db | | ip neigh | neighbour/ARP tables management | [ip-neighbour(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-neighbour.8) | | ip netns | process network namespace management | [ip-netns(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-netns.8) | | ip ntable | neighbour table configuration | [ip-ntable(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-ntable.8) | | ip route | routing table management | [ip-route(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-route.8) | | ip rule | routing policy database management | [ip-rule(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-rule.8) | | ip tcp_metrics | management for TCP Metrics | [ip-tcp_metrics(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-tcp_metrics.8) | | ip tunnel | tunnel configuration | [ip-tunnel(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-tunnel.8) | | ip tuntap | manage TUN/TAP devices | | ip xfrm | manage IPsec policies | [ip-xfrm(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-xfrm.8) | The `help` command is available for all objects. For example, typing `ip addr help` will show you the command syntax available for the address object. For advanced usage see the [iproute2 documentation](http://www.policyrouting.org/iproute2.doc.html). The [Network configuration](/index.php/Network_configuration "Network configuration") article shows how the *ip* command is used in practice for various common tasks. **Note:** You might be familiar with the [ifconfig](https://en.wikipedia.org/wiki/ifconfig "wikipedia:ifconfig") command, which was used in older versions of Linux for interface configuration. It is now deprecated in Arch Linux; you should use *ip* instead. ## less [less](https://en.wikipedia.org/wiki/less_(Unix) is a terminal pager program used to view the contents of a text file one screen at a time. Whilst similar to other pagers such as [more](https://en.wikipedia.org/wiki/more_(command) and the [deprecated](https://git.kernel.org/cgit/utils/util-linux/util-linux.git/tree/Documentation/deprecated.txt) [pg](https://en.wikipedia.org/wiki/pg_(Unix) "wikipedia:pg (Unix)"), *less* offers a more advanced interface and complete [feature-set](http://www.greenwoodsoftware.com/less/faq.html). See [List of applications#Terminal pagers](/index.php/List_of_applications#Terminal_pagers "List of applications") for alternatives. ### Vim as alternative pager [Vim](/index.php/Vim "Vim") includes a script to view the content of text files, compressed files, binaries and directories. Add the following line to your shell configuration file to use it as a pager: `~/.bashrc` `alias less='/usr/share/vim/vim80/macros/less.sh'` There is also an alternative to the *less.sh* macro, which may work as the `PAGER` environment variable. Install [vimpager](https://www.archlinux.org/packages/?name=vimpager) and add the following to your shell configuration file: `~/.bashrc` ``` export PAGER='vimpager' alias less=$PAGER ``` Now programs that use the `PAGER` environment variable, like [git](/index.php/Git "Git"), will use *vim* as pager. ## locate [Install](/index.php/Install "Install") the [mlocate](https://www.archlinux.org/packages/?name=mlocate) package. The package contains an `updatedb.timer` unit, which invokes a database update each day. The timer is enabled right after installation, [start](/index.php/Start "Start") it manually if you want to use it before reboot. You can also manually run *updatedb* as root at any time. By default, paths such as `/media` and `/mnt` are ignored, so *locate* may not discover files on external devices. See [updatedb(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/updatedb.8) for details. The *locate* command is a common Unix tool for quickly finding files by name. It offers speed improvements over the [find](https://en.wikipedia.org/wiki/Find_(Unix) tool by searching a pre-constructed database file, rather than the filesystem directly. The downside of this approach is that changes made since the construction of the database file cannot be detected by *locate*. Before *locate* can be used, the database will need to be created. To do this, execute `updatedb` as root. See also [How locate works and rewrite it in one minute](http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/). ## ls [ls](https://en.wikipedia.org/wiki/ls "wikipedia:ls") lists directory contents. See `info ls` or [the online manual](https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html#ls-invocation) for more information. [exa](https://the.exa.website) is a modern, and more user friendly alternative to `ls` and `tree`, that has more features, such as displaying [Git](/index.php/Git "Git") modifications along with filenames, colouring differently each columnn in `--long` mode, or displaying `--long` mode metadata along with a `tree` view. [exa](https://www.archlinux.org/packages/?name=exa) ### Long format The `-l` option displays some metadata, for example: `$ ls -l */path/to/directory*` ``` total 128 drwxr-xr-x 2 archie users 4096 Jul 5 21:03 Desktop drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents drwxr-xr-x 2 archie users 4096 Jul 5 13:45 Downloads -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 customers.ods -rw-r--r-- 1 archie users 3339 Jun 27 08:28 todo -rwxr-xr-x 1 archie users 2048 Jul 6 12:56 myscript.sh ``` The `total` value represents the total disk allocation for the files in the directory, by default in number of blocks. Below, each file and subdirectory is represented by a line divided into 7 metadata fields, in the following order: * type and permissions: * the first character is the entry type, see `info ls -n "What information is listed"` for an explanation of all the possible types; for example: * `-` denotes a normal file; * `d` denotes a directory, i.e. a folder containing other files or folders; * `p` denotes a named pipe (aka FIFO); * `l` denotes a symbolic link; * the remaining characters are the entry's [permissions](/index.php/Permissions "Permissions"); * number of [hard links](https://en.wikipedia.org/wiki/Hard_link "wikipedia:Hard link") for the entity; files will have at least 1, i.e. the showed reference itself; folders will have at least 2: the showed reference, the self-referencing `.` entry, and then a `..` entry in each of its subfolders; * owner [user](/index.php/User "User") name; * [group](/index.php/Group "Group") name; * size; * last modification timestamp; * entity name. ### File names containing spaces enclosed in quotes By default, file and directory names that contain spaces are displayed surrounded by single quotes. To change this behavior use the `-N` or `--quoting-style=literal` options. Alternatively, set the `QUOTING_STYLE` [environment variable](/index.php/Environment_variable "Environment variable") to `literal`. [[1]](https://unix.stackexchange.com/questions/258679/why-is-ls-suddenly-surrounding-items-with-spaces-in-single-quotes) ## lsblk [lsblk(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/lsblk.8) will show all available [block devices](https://en.wikipedia.org/wiki/Device_file#Block_devices "wikipedia:Device file") along with their partitioning schemes, for example: `$ lsblk -f` ``` NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat C4DA-2C4D /boot ├─sda2 swap 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP] └─sda3 ext4 56adc99b-a61e-46af-aab7-a6d07e504652 / ``` The beginning of the device name specifies the type of block device. Most modern storage devices (e.g. hard disks, [SSDs](/index.php/SSD "SSD") and USB flash drives) are recognised as SCSI disks (`sd`). The type is followed by a lower-case letter starting from `a` for the first device (`sda`), `b` for the second device (`sdb`), and so on. *Existing* partitions on each device will be listed with a number starting from `1` for the first partition (`sda1`), `2` for the second (`sda2`), and so on. In the example above, only one device is available (`sda`), and that device has three partitions (`sda1` to `sda3`), each with a different [file system](/index.php/File_system "File system"). Other common block device types include for example `mmcblk` for memory cards and `nvme` for [NVMe](/index.php/NVMe "NVMe") devices. Unknown types can be searched in the [kernel documentation](https://www.kernel.org/doc/Documentation/devices.txt). ## mkdir [mkdir](https://en.wikipedia.org/wiki/mkdir "wikipedia:mkdir") makes directories. To create a directory and its whole hierarchy, the `-p` switch is used, otherwise an error is printed. Changing mode of a just created directory using *chmod* is not necessary as the `-m` option lets you define the access permissions. **Tip:** If you just want a temporary directory, a better alternative may be [mktemp](https://en.wikipedia.org/wiki/Temporary_file "wikipedia:Temporary file"): `mktemp -d` ## mv [mv](https://en.wikipedia.org/wiki/mv "wikipedia:mv") moves and renames files and directories. **Note:** "Security aliases" are dangerous because you get used to them, resulting in potential data loss when you use another system / user that doesn't have these aliases. To limit potential damage caused by the command, use an alias: ``` alias mv='mv -iv' ``` This alias asks for confirmation before overwriting any existing files and lists the operations in progress. ## od The [od](https://en.wikipedia.org/wiki/od_(Unix) (*o*ctal *d*ump) command is useful for visualizing data that is not in a human-readable format, like the executable code of a program, or the contents of an unformatted device. See the [manual](https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation) for more information. ## pv You can use [pv](https://www.archlinux.org/packages/?name=pv) (*pipe viewer*) to monitor the progress of data through a pipeline, for example: ``` # dd if=*/source/filestream* | pv -*monitor_options* -s *size_of_file* | dd of=*/destination/filestream* ``` In most cases `pv` functions as a drop-in replacement for `cat`. ## rm [rm](https://en.wikipedia.org/wiki/rm_(Unix) removes files or directories. **Note:** "Security aliases" are dangerous because you get used to them, resulting in potential data loss when you use another system / user that doesn't have these aliases. To limit potential damage caused by the command, use an alias: ``` alias rm='rm -Iv --one-file-system' ``` This alias asks confirmation to delete three or more files, lists the operations in progress, does not involve more than one file systems. Substitute `-I` with `-i` if you prefer to confirm even for one file. Zsh users may want to prefix `noglob` to avoid implicit expansions. To remove directories believed to be empty, use *rmdir* as it fails if there are files inside the target. ## sed [sed](https://en.wikipedia.org/wiki/sed "wikipedia:sed") is stream editor for filtering and transforming text. Here is a handy [list](http://sed.sourceforge.net/sed1line.txt) of *sed* one-liners examples. **Tip:** More powerful alternatives are [awk](#awk) and the [Perl](/index.php/Perl "Perl") language. ## seq *seq* prints a sequence of numbers. Shell built-in alternatives are available, so it is good practice to use them as explained on [Wikipedia](https://en.wikipedia.org/wiki/Seq_(Unix) "wikipedia:Seq (Unix)"). ## ss *ss* is a utility to investigate network ports and is part of the [iproute2](https://www.archlinux.org/packages/?name=iproute2) package in the [base](https://www.archlinux.org/groups/x86_64/base/) group. It has a similar functionality to the [deprecated](https://www.archlinux.org/news/deprecation-of-net-tools/) netstat utility. Common usage includes: Display all TCP Sockets with service names: ``` $ ss -at ``` Display all TCP Sockets with port numbers: ``` $ ss -atn ``` Display all UDP Sockets: ``` $ ss -au ``` For more information see [ss(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ss.8) or `ss.html` from the [iproute2](https://www.archlinux.org/packages/?name=iproute2) package. ## tar As an early Unix archiving format, .tar files—known as "tarballs"—are widely used for packaging in Unix-like operating systems. Both [pacman](/index.php/Pacman "Pacman") and [AUR](/index.php/AUR "AUR") packages are compressed tarballs, and Arch uses [GNU's](/index.php/GNU_Project "GNU Project") *tar* program by default. For *.tar* archives, *tar* by default will extract the file according to its extension: ``` $ tar xvf *file.EXTENSION* ``` Forcing a given format: | File Type | Extraction Command | | `*file*.tar` | `tar xvf *file*.tar` | | `*file*.tgz` | `tar xvzf *file*.tgz` | | `*file*.tar.gz` | `tar xvzf *file*.tar.gz` | | `*file*.tar.bz` | `bzip -cd *file*.bz | tar xvf -` | | `*file*.tar.bz2` | `tar xvjf *file*.tar.bz2` `bzip2 -cd *file*.bz2 | tar xvf -` | | `*file*.tar.xz` | `tar xvJf *file*.tar.xz` `xz -cd *file*.xz | tar xvf -` | | `*file*.tar.zst` | `tar -I zstd xvf *file*.tar.zst` | The construction of some of these *tar* arguments may be considered legacy, but they are still useful when performing specific operations. See [tar(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/tar.1) for details. ## which [which](https://en.wikipedia.org/wiki/Which_(Unix) shows the full path of shell commands. In the following example the full path of `ssh` is used as an argument for `journalctl`: ``` # journalctl $(which sshd) ``` ## wipefs *wipefs* can list or erase [file system](/index.php/File_system "File system"), [RAID](/index.php/RAID "RAID") or [partition-table](/index.php/Partition "Partition") signatures (magic strings) from the specified device. It does not erase the file systems themselves nor any other data from the device. See [wipefs(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/wipefs.8) for more information. For example, to erase all signatures from the device `/dev/sdb` and create a signature backup `~/wipefs-sdb-*offset*.bak` file for each signature: ``` # wipefs --all --backup /dev/sdb ``` ## See also * [A sampling of coreutils](http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/) [, part 2](http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/) [, part 3](http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/) - Overview of commands in coreutils * [GNU Coreutils online documentation](https://www.gnu.org/software/coreutils/manual/coreutils.html) * [Learn the DD command](https://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/)