LIN-001-EN Linux Introduction - command line skills

Duration: 1 day

The objective of the training is to introduce students to the use of command-line tools in Unix-like environments commonly used in modern DevOps, Cloud environments. The skills learnt in this training are prerequisites of other trainings in this catalog, skills which apply equally well in the following environments:

  • Linux or other Unix derivatives
  • macOS
  • Windows when using WSL, git bash and other Linux tools

The training will cover the following skills:

  • What is Unix, what is Linux ?
  • What is the Shell ?
  • Making remote connections to Linux
  • Filesystems, devices
  • Basic command tools
  • Users, groups, processes, files, stdin, stdout
  • Editing files at the command-line
  • Using VSCode with Linux
  • Unix tool philosophy
  • Pipelines, environment variables
  • Installing tools

The training consists of about 50% theory and 50% hands-on labs.

Training Outcomes

The training participant will acquire basic Linux skills allowing to understand and follow many DevOps or other tutorials, in particular:

  • Working with and editing files
  • Navigating the file system
  • Using basic Linux commands
  • Combining commands through pipelines
  • The use of variables & environment variables
  • More common Linux tools
  • Writing scripts

Target Audience

This training is ideal for engineers with little or no experience with Linux or command-line working. Participants must provide their own PC with internet access, with the ability:

  • to use a browser to connect to sites hosted on AWS
  • to connect to AWS EC2 VMs using SSH: alternative connection methods can be provided

Pre-requisites

To take full advantage of this training, participants:

  • despite inexperience, should be willing to work at the command line

Evaluation

At the beginning of the training we will verify the domain experience, if any, and any expectations of each participant. An accompaniment can be proposed at extra cost after the formation.

Programme

Proposed as a 1 day training, this may be extended according to specific needs.

Working from concrete examples, the following aspects will be covered

Module: What is an Operating System ?

  • Review of different Operating Systems
  • A brief history of Unixes and Linux
  • Linux distributions (families), the Linux Kernel
  • The Unix (Linux) philosophy
  • The filesystem, disks, partitions, processes, users, groups, /proc, swap
  • Binaries, Libraries, Include files, Device files
  • Everything is a file

Module: Using Linux

  • Logging in
  • Shells (bash, fish, zsh), shell history
  • Navigating the Filesystem (cd, ls, pwd, df, du, tree, find)
  • Basic linux commands (id, whoami, cat, touch, mv, cp, rm, ps, sleep)
  • variables, environment variables, aliases, $PATH
  • Graphical environments

Module: Working with Linux

  • Editing files with vi (vi, vim, neovim), emacs, nano …
  • Command-line editing
  • man pages
  • Connecting using VSCode
  • Using VSCode the Remote Shell extension
  • Using VSCode extensions

Module: More Linux Commands

  • Common linux text manipulation tools (sed, awk, perl, tac, head, tail, tr, sort, uniq, diff)
  • More common commands (tee, xargs, pstree, wc)
  • Pipes, redirection, stdin, stdout, signals, kill
  • Quoting
  • Regular expressions Globbing
  • rsync, mkdir, rmdir, top, tmux

Module: Writing scripts

  • Using loops (for, while, until)
  • error codes
  • Using pipes
  • Specifying an interpreter with Shebang notation
  • Heredocs

Module: Package management

  • Installing and managing tools (using apt, apt-get, dpkg)
  • Listing, removing, upgrading tool packages
  • Archiving and compressing files (zip, tar, xz)
  • System services

Module: Virtualization

  • Virtualization (kvm, virtualbox, proxmox)
  • Containers (LXC, Docker, Podman)
  • Container Orchestration (Docker Swarm, Kubernetes, AWS ECS)|