We are still actively working on the spam issue.

Difference between revisions of "GNU/Linux"

From InstallGentoo Wiki
Jump to: navigation, search
m (absolutelydisgusting.jpg spelling fixed.)
(Recommended distributions)
Line 17: Line 17:
 
Almost every distro can be riced by setting up the right [[GNU/Linux ricing#Desktop Environments|DE]] and/or [[GNU/Linux ricing#Window managers|WM]]. DEs can be tiling or stacking.
 
Almost every distro can be riced by setting up the right [[GNU/Linux ricing#Desktop Environments|DE]] and/or [[GNU/Linux ricing#Window managers|WM]]. DEs can be tiling or stacking.
  
== Recommended distributions ==
+
==Recommended Distributions==
  
[[File:ospicker.png|thumb|Pick your poison]]
+
These are various distros that are recommended by people on /g/. [http://distrowatch.com Distrowatch] is a good resource for discovering new Linux distributions.
  
These are distros typically recommended by /g/. Refer to [http://distrowatch.com DistroWatch.com] for a more comprehensive list including less common distros.
+
===Debian-based===
 +
 
 +
These Linux distributions are descended from Debian GNU/Linux and typically use the .deb package format and the APT package manager.
 +
 
 +
[[Debian|Debian GNU/Linux]]
 +
 
 +
'''Pros'''
 +
*Along with mainline Stable release, offers the next Stable as Testing along with a rolling release Unstable
 +
*Reported to host over 43000 packages in its repository, has more software available to install than any other distribution
 +
*Available in many architectures that other distributions simply don't support
 +
'''Cons'''
 +
*uses the APT package manager, prone to disastrous dependency problems
 +
*following its erratic release schedule, during which Testing will go into a feature freeze, Unstable will also freeze
 +
*run by orthodox Stallmanites, may take several extra steps to acquire drivers and other software that they deem nonfree
 +
 
 +
[[Ubuntu]]
 +
 
 +
'''Pros'''
 +
*The distro that brought Linux to the common man; if Linux were to ever make a commercial breakthrough, Ubuntu would be on the forefront
 +
'''Cons'''
 +
*leadership is known for making crazy decisions, such as pushing crappy new software such as the Unity desktop, the Mir display server, and the Upstart init system (deprecated by systemd)
 +
*is reported to contain Amazon spyware within the Unity desktop
  
=== Easy to use and install ===
 
See [[Babbies First Linux]] for more information.
 
{| border="0" cellpadding="10" cellspacing="0"
 
|-
 
| colspan="2" style="text-align: center;" | '''[[Ubuntu]]-based'''
 
|-
 
| style="text-align: center;" | [[File:Logo_Linux_Mint.png|frameless|100px|link=Ubuntu#Flavors]]
 
Linux Mint
 
| valign="top" | [http://www.linuxmint.com/ Linux Mint]
 
* Main article: [[Linux Mint]]. Includes step-by-step install with [[VirtualBox]].
 
* Based upon Ubuntu. Debian-based version also available.
 
* Cinnamon DE. GNOME2-esque interface built upon modern technologies. Very extendable.
 
* Custom and often better software including a different Software Center, Update Manager etc.
 
* Comes with Restricted Extras (MP3/Flash/DVD) pre-installed.
 
|-
 
| style="text-align: center;" | [[File:Kubuntu-logo.png|frameless|100px|link=Ubuntu#Flavors]]
 
 
[[Ubuntu#Flavors|Ubuntu Flavors]]
 
[[Ubuntu#Flavors|Ubuntu Flavors]]
| valign="top" | [https://wiki.ubuntu.com/UbuntuFlavors Ubuntu Flavors]
 
* Ubuntu without Unity.
 
* Various desktop environments to choose from.
 
|-
 
| style="text-align: center;" | [[File:Triskel.jpg|frameless|100px|link=Trisquel]]
 
[[Trisquel]]
 
| valign="top" | [http://trisquel.info/en Trisquel]
 
* Fully free Ubuntu for home users, small enterprises and educational centers.
 
* Endorsed by the Free Software Foundation and is Richard Stallman's distro of choice.
 
|-
 
| style="text-align: center;" | [[File:Elementaryos-logo.png|frameless|100px|link=ElementaryOS]]
 
[[ElementaryOS]]
 
| valign="top" | [http://elementaryos.org ElementaryOS]
 
* Designed from the ground up to be easy to use. Similar in appearance to OS X.
 
|-
 
| colspan="2" style="text-align: center;" | '''[[Debian]]'''
 
|-
 
| style="text-align: center;" | [[File:Debian.png|frameless|100px|link=Debian]]
 
| [[Debian|Debian GNU/Linux]]
 
[https://www.debian.org/ Official Website]
 
[http://live.debian.net/ Debian Live ISOs]
 
* Stable, Testing, Unstable or Experimental.
 
* Testing is recommended. Stable is widely used for servers and onboard the ISS for example.
 
* Going strong for +20 years. Most forked distro.
 
|-
 
| style="text-align: center;" |
 
''#!++''
 
|'''CrunchBang++'''
 
[https://crunchbangplusplus.org/ Official Website]
 
[https://crunchbangplusplus.org/public/downloadtorrent BETA 32 ISO]
 
* Debian+Openbox
 
* Continuation of the popular, deprecated #! project.
 
|-
 
| colspan="2" style="text-align: center;" | '''RHEL-based'''
 
|-
 
| style="text-align: center;" | [[File:Fedora-logo.png|frameless|100px|link=Fedora]]
 
[[Fedora]]
 
| valign="top" | [https://fedoraproject.org/ Fedora Project]
 
* Red Hat Enterprise Linux's upstream. All the features here will eventually make it to RHEL and [[CentOS]].
 
* Very up-to-date packages. Is sometimes buggy because of this.
 
* Default repos only contain free open source software (as in freedom)
 
* Very active community
 
|-
 
| style="text-align: center;" | [[File:Centos-logo.png|frameless|100px|link=CentOS]]
 
[[CentOS]]
 
| valign="top" | [https://centos.org/ CentOS]
 
* Community maintained version of Red Hat Enterprise Linux.
 
* Extremely stable. Uses tried-and-true packages with very few bugs. Because of this, available packages tend to be older.
 
|-
 
| colspan = "2" style="text-align: center;" | '''Independent'''
 
|-
 
| style="text-align: center;" | [[File:opensuse-logo.png|frameless|100px|link=openSUSE]]
 
[[openSUSE]]
 
| valign="top" | [https://www.opensuse.org/en/ openSUSE Website]
 
* Stable and recent packages
 
* Rolling release with tumbleweed
 
* Easy and professional installer
 
* YaST is the best linux setup tool
 
* One of the only distributions for both new and experienced users
 
|}
 
  
=== Highly customizable ===
+
'''Pros'''
Distros that are good for [[ricing]].
+
*Ubuntu without Unity, various desktops available
{| cellpadding="10" cellspacing="0"
+
'''Cons'''
|-
+
*still Ubuntu
| style="text-align: center;" | [[File:Gentoo.png|frameless|100px|link=Gentoo]]
+
 
|- valign="top"
+
[[Linux Mint]]
| style="text-align: center;" | [[Gentoo]]
+
 
| [https://www.gentoo.org/ Official Website] 
+
'''Pros'''
|
+
*completely compatible with Ubuntu
* The official /g/ distro.
+
*offers the Cinnamon desktop environment, arguably one of the best DEs ever
|-
+
'''Cons'''
| style="text-align: center;" | [[File:Funtoo.png|frameless|100px|link=Gentoo#Funtoo_Linux|Funtoo]]
+
*often further modify their packages to make them 'mintier', can lead to problems such as breakage
|- valign="top"
+
*run by anti-semites
| style="text-align: center;" | [[Gentoo#Funtoo_Linux|Funtoo]]
+
 
| [http://www.funtoo.org/Welcome Official Website]
+
===RPM-based===
|
+
 
* Directly compatible fork of Gentoo maintained by Gentoo's former chief architect, Daniel Robbins. Includes various features and improvements.
+
These distributions utilize RPM packages, and stemming from the success of Red Hat Enterprise Linux, tend to be more business-oriented than the community-driven Debian.
|-
+
 
| style="text-align: center;" | [[File:Arch-linux-logo.png|frameless|100px|link=Arch]]
+
[[Fedora]]
|- valign="top"
+
 
| style="text-align: center;" | [[Arch]]
+
'''Pros'''
| [https://www.archlinux.org/ Official Website]
+
*Cutting edge of the Linux world, new features will be developed here before spreading across every other distro
|-
+
*sponsored by RedHat, the most successful and powerful organization Linux has ever seen, gets shit done
| style="text-align: center;" | [[File:Lfs.png|frameless|100px|link=Linux From Scratch]]
+
'''cons'''
|- valign="top"
+
*strict guidelines on what gets into its repositories, acquiring niche software can be a real pain in the ass
| style="text-align: center;" | [[Linux From Scratch]]
+
 
| [http://www.linuxfromscratch.org/ Official Website]
+
[[CentOS|Community ENTerprise Operating System]]
|
+
 
* The end all be all of Linux customization.
+
'''Pros'''
|-
+
*recompiled directly from Red Hat Enterprise Linux source code, is essentially a free version of RHEL
| style="text-align: center;" | [[File:Slwr.jpg|frameless|100px|link=Slackware]]
+
*receives assistance from RedHat themselves to make it a premier enterprise Linux distribution
|- valign="top"
+
'''Cons'''
| style="text-align: center;" | [[Slackware]]
+
*being a server-oriented enterprise operating system, packages are very stable thus old and not suited for desktop use
| [http://www.slackware.com/ Official Website]
+
 
|
+
[[openSUSE]]
*Initial release 1993, making it the oldest Linux distribution
+
 
*All utilities are text-based or in an ncurses interface
+
'''Pros'''
*Very stable release schedule
+
*features various powerful tools unique to openSUSE such as the YaST configuration program and the openSUSE Build Service
*Very good hardware compatibility out of the box
+
'''Cons'''
*BSD init with System V compatibility
+
*is weird
|-
+
 
|}
+
===User-centric===
===== Other noteworthy =====
+
 
{| cellpadding="10" cellspacing="0"
+
These distributions are designed for the purpose of giving the user control of their operating system. They are significantly harder to into than those mentioned previously.
|- valign="top"
+
 
| style="text-align: center;" | [[Gentoo#Sabayon|Sabayon]]
+
[[Arch Linux]]
| [http://sabayon.org/ Official Website]
+
 
| [[Gentoo]] based with binary package manager and 3D drivers OOTB.
+
'''Pros'''
|- valign="top"
+
*features an extensive wiki that can enable even not very smart people to use their operating system
| style="text-align: center;" | [[Slackware#Slax|Slax]]
+
*is known for its Arch User Repository, a collection of ports package files written by community members for building packages unsupported by the OS
| [http://www.slax.org/ Official Website]
+
'''Cons'''
| Portable Slackware, modular live system
+
*uses the systemd init system and a full-blown binary-based package manager, in terms of customizability is generally outclassed by other distros
|- valign="top"
+
*is maintained by the same incompetent teenagers who use it
| style="text-align: center;" | '''Deepin'''
 
| [http://www.linuxdeepin.com/index.en.html Official Website]
 
| [[Ubuntu]] based
 
|- valign="top"
 
| style="text-align: center;" | '''Mageia'''
 
| [http://www.mageia.org/en// Official Website]
 
| Mandriva fork
 
|- valign="top"
 
| style="text-align: center;" | ''Zorin OS''
 
| [http://www.zorin-os.com Official Website]
 
| Ubuntu based distro with Avant Window Navigator, which is standard configured to look like Windows 7. Free and premium/paid versions, paid version has more programs out of the box, and a few more Windows/Mac themes.
 
|-
 
  
|}
+
[[CRUX]]
  
=== Free as in [[Freedom]] ===
+
'''Pros'''
{| cellpadding="10" cellspacing="0"
+
*is very small, a full installation is usually less than 2GB in size
|- valign="top"
+
*based on the philosophy of 'keep it simple', uses BSD-style init system and ports for package management
| style="text-align: center;" | [[GPL|Free Software Foundation approved]]
+
'''Cons'''
| [https://gnu.org/distros/free-distros List of GNU+Linux-Libre distros]
+
*only provides software for a basic desktop install, if you require any unique software you may find yourself writing a lot of pkgfiles
|- valign="top"
 
| style="text-align: center;" | Parabola GNU/Linux-libre
 
| [https://parabolagnulinux.org/ Official Website]
 
| Parabola is essentially [[Arch|Arch Linux]], but its repositories only contain free software. You can convert an existing Arch installation to a Parabola installation very easily.
 
|- valign="top"
 
| style="text-align: center;" | Dragora GNU/Linux
 
| [http://www.dragora.org/ Official Website]
 
| Build from scratch on Freedom
 
|- valign="top"
 
| style="text-align: center;" | Trisquel GNU/Linux
 
| [http://trisquel.info/ Official Website]
 
| Trisquel is essentially [[Ubuntu]], but its repositories only contain free software. It is oriented toward small enterprises, domestic users and educational centers.
 
|-
 
|}
 
  
=== Security ===
+
[[Gentoo]]
{| cellpadding="10" cellspacing="0"
 
|- valign="top"
 
| style="text-align: center;" | Pentoo
 
| [http://pentoo.ch Official Website]
 
|- valign="top"
 
| style="text-align: center;" | BlackArch
 
| [http://www.blackarch.org/ Official Website]
 
|- valign="top"
 
| style="text-align: center;" | Kali Linux
 
| [http://www.kali.org/ Official Website]
 
|-
 
|}
 
  
=== Partially Free ===
+
'''Pros'''
 +
*features the omnipotent Portage packge manager
 +
*uses USE flags to install dependencies based on specific applications and uses
 +
*uses a stage 3 tarball instead of a bootstrap script, can be installed anywhere from anywhere
 +
*every aspect of installing packages can be controlled by a simple make.conf that dictates CFLAGS, build options, and USE flags
 +
'''Cons'''
 +
*is famous for an incredibly daunting install process, spawning the 'install gentoo' meme
 +
*is fucking huge
  
[[Ubuntu]] is a distro made without respecting completely software freedom. <i>The removal of Gnome with the heavy Unity UI may be enough to scare users away</i>{{Citation needed}}. As well as that, the search tool built into their OS is linked to Amazon, which may make or break people who care about their software freedom. The website [https://fixubuntu.com Fix Ubuntu] offers a script to disable Amazon search along with other privacy issues. This OS is mostly for beginners.
+
[[Slackware]]
  
[[Linux Mint]] is a distribution made without respecting completely software freedom. Some distributions will offer to install closed-source drivers to get your hardware to work; Mint automatically installs any closed-source program its developers believe might be useful. This OS is based on Ubuntu and it is mostly for beginners.  <i>The numerous closed-source browser plugins Mint ships with are a serious security risk, and (with the possible exception of Flash) largely obsolete on the modern web</i>.
+
'''Pros'''
 +
*oldest Linux distribution still in active development, hailed as the 'elder god distro'
 +
*follows UNIX philosophy to the letter
 +
*run by a singular benevolent dictator for life, will not change without his sayso, will not push a stable release unless he feels a particular build is good enough
 +
*is complete in user-centricism, won't even resolve its own dependencies
 +
'''Cons'''
 +
*See above
  
 
== Installation ==
 
== Installation ==

Revision as of 00:39, 12 June 2015

GNU and Tux

Linux at its core is a kernel, the central driving force of an operating system that allocates resources to other aspects of the system. Linux, along with the GNU system (which is closely associated with Free Software Foundation) are now collectively referred to as GNU/Linux, and make up a complete operating system which is widely used today by millions across the world. To read more about the history of the GNU project and Linux, see this article.

Why use GNU/Linux?

The free software philosophy is about an open and shared operating system which not only free as in money, but free as in freedom. The GNU/Linux system gives users more control over their computing experience than competing operating systems such as Windows, which could contain malicious features to them without the user's knowledge.

What's all this about distributions?

There are a lot of GNU/Linux distributions, also known as distros.

Most distros are at least somewhat similar with each other. The main differences are between the init system, package manager (and the repositories it has access to), desktop environment, (bloat) and default configurations. Most distros have their own little niche. Some are FSF compatible (or almost), for ricing, for getting shit done or just because you hate yourself or just love pain (Arch/Gentoo). Always at least try another distro before saying that you hate it. You will find that all of them have their own qualities.

When choosing a distro, keep some things in mind. Linux is about choice. There are stable and rolling distributions. Some stable distros can be made rolling by selecting the proper repositories and vice versa. Some are semi-rolling, they release snapshots of packages. Stable is best for beginners and rolling is best for developers and advanced users who want the latest and greatest.

Almost every distro can be riced by setting up the right DE and/or WM. DEs can be tiling or stacking.

Recommended Distributions

These are various distros that are recommended by people on /g/. Distrowatch is a good resource for discovering new Linux distributions.

Debian-based

These Linux distributions are descended from Debian GNU/Linux and typically use the .deb package format and the APT package manager.

Debian GNU/Linux

Pros

  • Along with mainline Stable release, offers the next Stable as Testing along with a rolling release Unstable
  • Reported to host over 43000 packages in its repository, has more software available to install than any other distribution
  • Available in many architectures that other distributions simply don't support

Cons

  • uses the APT package manager, prone to disastrous dependency problems
  • following its erratic release schedule, during which Testing will go into a feature freeze, Unstable will also freeze
  • run by orthodox Stallmanites, may take several extra steps to acquire drivers and other software that they deem nonfree

Ubuntu

Pros

  • The distro that brought Linux to the common man; if Linux were to ever make a commercial breakthrough, Ubuntu would be on the forefront

Cons

  • leadership is known for making crazy decisions, such as pushing crappy new software such as the Unity desktop, the Mir display server, and the Upstart init system (deprecated by systemd)
  • is reported to contain Amazon spyware within the Unity desktop

Ubuntu Flavors

Pros

  • Ubuntu without Unity, various desktops available

Cons

  • still Ubuntu

Linux Mint

Pros

  • completely compatible with Ubuntu
  • offers the Cinnamon desktop environment, arguably one of the best DEs ever

Cons

  • often further modify their packages to make them 'mintier', can lead to problems such as breakage
  • run by anti-semites

RPM-based

These distributions utilize RPM packages, and stemming from the success of Red Hat Enterprise Linux, tend to be more business-oriented than the community-driven Debian.

Fedora

Pros

  • Cutting edge of the Linux world, new features will be developed here before spreading across every other distro
  • sponsored by RedHat, the most successful and powerful organization Linux has ever seen, gets shit done

cons

  • strict guidelines on what gets into its repositories, acquiring niche software can be a real pain in the ass

Community ENTerprise Operating System

Pros

  • recompiled directly from Red Hat Enterprise Linux source code, is essentially a free version of RHEL
  • receives assistance from RedHat themselves to make it a premier enterprise Linux distribution

Cons

  • being a server-oriented enterprise operating system, packages are very stable thus old and not suited for desktop use

openSUSE

Pros

  • features various powerful tools unique to openSUSE such as the YaST configuration program and the openSUSE Build Service

Cons

  • is weird

User-centric

These distributions are designed for the purpose of giving the user control of their operating system. They are significantly harder to into than those mentioned previously.

Arch Linux

Pros

  • features an extensive wiki that can enable even not very smart people to use their operating system
  • is known for its Arch User Repository, a collection of ports package files written by community members for building packages unsupported by the OS

Cons

  • uses the systemd init system and a full-blown binary-based package manager, in terms of customizability is generally outclassed by other distros
  • is maintained by the same incompetent teenagers who use it

CRUX

Pros

  • is very small, a full installation is usually less than 2GB in size
  • based on the philosophy of 'keep it simple', uses BSD-style init system and ports for package management

Cons

  • only provides software for a basic desktop install, if you require any unique software you may find yourself writing a lot of pkgfiles

Gentoo

Pros

  • features the omnipotent Portage packge manager
  • uses USE flags to install dependencies based on specific applications and uses
  • uses a stage 3 tarball instead of a bootstrap script, can be installed anywhere from anywhere
  • every aspect of installing packages can be controlled by a simple make.conf that dictates CFLAGS, build options, and USE flags

Cons

  • is famous for an incredibly daunting install process, spawning the 'install gentoo' meme
  • is fucking huge

Slackware

Pros

  • oldest Linux distribution still in active development, hailed as the 'elder god distro'
  • follows UNIX philosophy to the letter
  • run by a singular benevolent dictator for life, will not change without his sayso, will not push a stable release unless he feels a particular build is good enough
  • is complete in user-centricism, won't even resolve its own dependencies

Cons

  • See above

Installation

Virtual Machines

If you are not ready to commit to installing a GNU/Linux system, you may want to try one out in a virtual environment first.

Making a Bootable USB Installer

In addition to installing from CD, you can also install from a USB flash drive. A USB installer created using the following steps should work with both BIOS and UEFI systems. However, for UEFI systems you may need to disable "Secure Boot" in the UEFI configuration panel.

Note: For UEFI support your flash drive MUST be formatted as fat32 (also called vfat in GNU/Linux) when attempting to boot from it.

Windows Method

  • Download the disk image of your chosen distribution.
  • Download USB Image Tool and use it to copy the image to your USB-drive.

GNU/Linux Method

Manually

This method is more reliable

  • This method requires an iso specifically crafted for usb drives or a "hybrid" cd/usb image. Most distributions will mention the type of iso on their download page.
  • Locate your USB drive using the command lsblk. You should see the path for your USB drive, for example: /dev/sdb1. Through running this command, you should also see the size of the USB drive so you can be sure you are running your commands to the correct storage device.
  • Next, use the command dd as root. The dd command has the following usage (where if is the source and of is the target):
   dd if=/path/to/disc/image of=/path/to/usb/drive

WARNING!!!

  • The dd command is also known as "Disk Destroyer" because it is very easy to annihilate the data on a device unintentionally.
  • Make absolutely sure that "of=/path/to/usb/drive" is the correct device!

An example of using the dd command could be:

   dd bs=4M if=/home/moot/Downloads/debian-7.3.0-amd64-netinst.iso of=/dev/sdb
  • Last, wait patiently until the command has executed. You can check progress of a dd command by finding the process ID with ps aux | grep dd and issuing the kill -s USR1 <pid> command against it. Just don't forget the USR1 signal or you will terminate the process.

UNetBootin

  • Install UnetBootin from your distribution's repositories, or if they are unavailable there (unlikely) download a package or tarball from the project page.
  • Launch UnetBootin with root privileges. (e.g. sudo unetbootin)
  • Either have UnetBootin retrieve the installation image for a distribution automatically or specify the path to an image that you have already downloaded.
  • Select the location of the flash drive and press OK.

GNU/Linux Naming Controversy

The GNU/Linux naming controversy is a dispute regarding whether or not to refer to the operating system commonly known as Linux as GNU/Linux. GNU/Linux was a term originally created by the Free Software Foundation to refer to the combination of the GNU corelibs and the Linux Kernel, which they argued to form a functioning operating system. The Free Software Foundation recommends the term GNU/Linux because it argues the GNU project was part of a project to develop an operating system, from which the kernel was the last piece to complete (see GNU HURD). The Free Software Foundation suggests that the inclusion of the term GNU in the operating system’s name would recognize their contribution and their free software ideals ("Free Software as a Social Movement". ZNet.). Richard M. Stallman writes:

Today tens of millions of users are using an operating system that was developed so they could have freedom—but they don't know this, because they think the system is Linux and that it was developed by a student 'just for fun'.

On the opposite side of the argument, Linux supporters argue that the contribution of the Free Software Foundation is minimal (for example, GNU components make up only 8% of Ubuntu). Eric S. Raymond writes:

Some people object that the name "Linux" should be used to refer only to the kernel, not the entire operating system. This claim is a proxy for an underlying territorial dispute; people who insist on the term GNU/Linux want the FSF to get most of the credit for Linux because [Stallman] and friends wrote many of its user-level tools. Neither this theory nor the term GNU/Linux has gained more than minority acceptance.

Linux proponents also argue that since the operating system is often referred to as Linux by the mainstream media and most users, that it should be used as such, as opposed to GNU/Linux.


Let's Learn About GNU/Linux

The Terminal

The terminal, also known as the Command Line, Shell, or just cold, emotionless text on a black background, gives you access to the real power and beating heart of Linux. Linux by default uses BASH, or Bourne-Again Shell which is based on the shell program `sh' from UNIX, written by Steven Bourne of Bell Labs. Bash will be all of our terminal interaction.

To manage multiple user sessions on a single machine, Linux (and UNIX) uses what is called a TeleTYpeWriter (TTY) for each user to interface with the main kernel. Each tty is handled by its own special device file, located in the directory /dev. It also uses Pseudo Terminal Slave (pts) to handle other types of terminal interface, but this is beyond the scope of this guide.

You may be wondering what the difference between shell and TTY is. Shell is the command interpreter that runs everything you type in, and TTY is the connection that handles the data between Linux and the shell.

The shell uses files called stdout, stdin and stderr to handle text input and output to and from programs.

  • stdin - Standard Input - All your typed text input goes into programs through here.
  • stdout - Standard Output - All successful program output goes to here.
  • stderr - Standard Error - All error messages and problem codes go to here.

You should get familiar with the man pages, which are essentially the manual, and will display help pages on almost all commands.

   Usage: man COMMAND

Where COMMAND is replaced with whatever command you want help on. Press 'q' to exit a manual page. Alternatively, most commands will allow you to add --help on the end to get their own personal help pages.

Every key pressed sends a character to the terminal and you can send different characters by holding down keys like [Ctrl] or [Alt]. This is how the shell can tell what key is pressed, and thus, allow shortcuts to be defined. Some of the more useful keyboard shortcuts are defined:

  • Up arrow or Down arrow - Scroll through typed commands
  • Shift + Page Up or Page Down - Scroll up or down through shell output
  • Home or End - Move to the start or end of a line, respectively
  • Tab - Autocomplete a file name, directory name or command name.
  • Ctrl + C - End a running process
  • Ctrl + D - End-Of-File (EOF) character (usually ends a process or signifies the end of input data)
  • Ctrl + Z - Send the currently running process to the background
  • Ctrl + L - Clear the screen, same as running the clear command

If you're using BASH as your shell (most distros default to this) you can customize it to your liking.

Common Commands

  • pwd - Print Working Directory. Outputs the full path of the current directory.
  • cd - Change Directory. Used to switch to a different directory.
  • ls - List. Lists files and directories in the current directory.
    • ls -a Lists "hidden" files and directories also. Hidden files in linux are preceded with a full stop.
    • ls -l Lists further information about the files, including size, modify date, owner and permissions.
    • ls -t List by modify date, with the most recently modified files at the top.
  • cp - Copy a file/directory.
    • cp -r Descend into directories (recursively copy all directory contents).
  • mv - Move a file.
  • rm - Delete a file.
    • rm -r Delete directory contents. (Never rm -r /)
  • chmod - Changes file permissions for the Owner, Group and Others.
  • chown - Changes the owner of a file.
  • chgrp - Changes the group of a file.
  • date - Display current date and time.
  • who - Displays a list of currently logged in users.
  • echo - Prints to stdout.
  • cat - Concatenates text to stdout.
  • grep - Searches for strings in a file or stdin.
  • su - Switch user. Defaults to root.
  • sudo - Run a command as root, if you have permission.
  • passwd - Change password. Defaults to current account.
  • rsync - Synchronizes files and directories.
  • halt - halt the system
    • halt -p - also shut off the power
  • systemctl - Interface to SystemD.
    • systemctl poweroff - Shutdown.
    • systemctl reboot - Reboot.
    • systemctl start <service> Start a service.
    • systemctl stop <service> Stop a service.
  • journalctl - Interface to SystemD logging.

Piping and redirection

There are a number of little quirks that the shell has that gives it more functionality. Piping takes the stdout of the left program and connects it (i.e. pipes it) into stdin of the right program with the pipe operator.

For example:

 # Count number of words in helloworld.txt
 cat helloworld.txt | wc -w

Redirection directs data in and out of files, i.e.

 # Redirect stdout to file
 echo "Hello world" > helloworld.txt
 # Redirect stdout to the end of a file
 echo "world." >> hello.txt
 # Redirect a file to stdin
 more < helloworld.txt

Kernel

The kernel is the central nervous system of an operating system. Luckily, The Linux kernel is still maintained by Linus Torvalds. Find out about the version, kernel hacking and security on kernel.org.

External Resources