Linux CLI and Shell scripting
Collection of resources for Linux command line, shell scripting (mostly bash
) and a few on topics like Linux Kernel, distributions, applications, etc.
Installation and Documentation
A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that is based upon the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices (for example, OpenWrt) and personal computers (for example, Linux Mint) to powerful supercomputers (for example, Rocks Cluster Distribution) — wikipedia
- /r/linux4noobs wiki — Linux distribution selection for noobs
- Linux/Bash on Windows
- Git for Windows — provides a Bash emulation used to run Git from the command line
- Cygwin — large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows
- Linux Subsystem for Windows — compatibility layer for running Linux binary executables natively on Windows
- Linux man pages — one of several websites that host man pages online
- ArchWiki — comprehensive documentation for Arch Linux and other distributions
- Debian Reference — broad overview of the Debian system, covers many aspects of system administration through shell-command examples
CLI text tutorials
- Linux for Beginners — solid foundation in how to use the terminal, to get the computer to do useful work for you
- UNIX Tutorial for Beginners — eight simple tutorials which cover the basics of UNIX / Linux commands
- Linux Basics — cli basics, shell scripting, text processing, package management, etc
- Learn Enough Command Line to Be Dangerous — a tutorial introduction to the command line
- The Front-End Developer's Guide to the Terminal — missing manual of terminal fundamentals needed to work with modern JS frameworks
CLI video and interactive courses
- Linux Journey — cli basics, text manipulation, processes, packages, networking, etc
- MIT: The Missing Semester of Your CS Education — master the command-line, use a powerful text editor, use fancy features of version control systems, and much more
- edx: Introduction to Linux — cli basics, shell scripting, text manipulation, etc
- Linux Survival — free tutorial designed to make it as easy as possible to learn Linux, uses a simulated terminal
- Terminus — use basic commands to explore the filesystem
Shell Scripting
- Bash Guide — aspires to teach good practice techniques for using Bash, and writing simple scripts
- Bash Scripting Tutorial — solid foundation in how to write Bash scripts, to get the computer to do complex, repetitive tasks for you
- Bash Handbook — for those who want to learn Bash without diving in too deeply
- Serious Shell Programming — focuses on POSIX-compliant Bourne Shell for portability
Scripting companion
- shellcheck — linting tool to avoid common mistakes and improve your script
- Comprehensive lists on
mywiki.wooledge.org
website: - Google shell style guide
- Reliability and robustness
- safe ways to do things in bash
- better scripting
- robust scripting
- Unix shell script tactics — write better Unix shell script code for speed, security, stability, and portability
Books
- Linux Command Line Computing — my ebook on Linux command line and Shell Scripting for beginner to intermediate level users
- The Linux Command Line — basics of command line use and shell scripting, environment configuration, and more
- wizard zines — programming zines
- Linux Bible — basic operations, server management, administration, automated deployment, etc
- How Linux Works: What Every Superuser Should Know — booting, device drivers, networking, development tools, effective shell scripts, etc
- UNIX and Linux System Administration Handbook — definitive guide to installing, configuring and maintaining any Unix or Linux system
- Linux kernel and its insides — kernel insides, and other low-level subject matter
- Linux command line for you and me — for newcomers to command line environment
- The Debian Administrator's Handbook — reference book presenting the Debian distribution, from initial installation to configuration of services
Tips and Tricks
- The Art of Command Line — notes and tips on using the command-line, suitable for both beginners and experienced users
- stackoverflow: Command line tricks
- commandlinefu — command-line gems, includes a handy search feature
- Bash-Oneliner — collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance
- Bash Idioms — decipher old bash code and write new code that's as clear and readable as possible
- Unix oneliners — mostly unorganized collection of bash oneliners
Cheatsheets
- tldr — collection of community-maintained help pages for command-line tools
- explainshell — write down a command-line to see the help text that matches each argument
- General purpose command-line tools — examples for most common usecases
- Bash reference cheatsheet — nicely formatted and explained well
- Bash scripting cheatsheet — quick reference to getting started with Bash scripting
- GNU BRE/ERE cheatsheet — also highlights subtle differences between grep, sed and awk regex flavors
Text processing
- My ebooks:
- CLI text processing with GNU grep and ripgrep
- CLI text processing with GNU sed
- CLI text processing with GNU awk
- Perl One-Liners Guide
- Ruby One-Liners Guide
- CLI text processing with GNU Coreutils —
head
,tail
,tr
,sort
,pr
,paste
,join
, etc - Command line text processing with Rust tools —
ripgrep
,frawk
,hck
,huniq
,zet
, etc - Linux Command Line Computing — includes several text processing tools
- Data Science at the Command Line — Obtain, Scrub, Explore, and Model Data with Unix Power Tools
- Data ops on the Linux command line — analysing, archiving, auditing, cleaning, de-duplicating, etc
Miscellaneous
- Unix and Linux Permissions Primer
- How To Use Rsync to Sync Local and Remote Directories
- htop explained — explanation of everything you can see in htop/top on Linux
- cron — job scheduler on Unix-like operating systems
- SSH commands — popular SSH commands, key generation, SSH agents, etc
- Editing Videos with FFmpeg — clipping, adding fade in/out, scaling, concat, etc
- ffmpeg.guide — GUI tool to create complex FFmpeg filtergraphs quickly and correctly
- ffmprovisr — making FFmpeg easier, this app helps users through the command generation process
- Mastering curl: interactive text guide
- How To Use Wget to Download Files and Interact with REST APIs
Further Reading
- Unix as IDE
- unix.stackexchange: command-line Q&A sorted by votes
- Resource lists
- Application lists for audio, video, graphics & design, development, games etc
- Arch wiki — general list of applications sorted by category, as a reference for those looking for packages
- AlternativeTo — crowdsourced software recommendations
- GNU packages — find a tool based on categories
Forums
Read instructions provided by respective forums before asking a question. Try solving it yourself before asking — searching online, manual, ask a colleague, etc.
- unix.stackexchange
- /r/commandline
- /r/bash
- /r/linux4noobs
- /r/linuxquestions
- /r/linux — general linux discussion
- askubuntu — Ubuntu and general Linux topics
- TuxURLs — Linux news aggregator