Tag Archives: command line

A Guide To Using Command Line Tools

There are a lot of books out there to help you learn command line tools, and of course, they mostly cover the same things because there is a fixed number of things you need to learn to get started down this interesting and powerful path.

Small, Sharp, Software Tools: Harness the Combinatoric Power of Command-Line Tools and Utilities by Brian P. Hogan is the latest iteration (not quite in press yet but any second now) of one such book.

I really like Hogan’s book. Here’s what you need to know about it.

First, and this will only matter to some but is important, the book does cover using CLI tools across platforms (Linux, Mac, Windows) in the sense that it helps get you set up to use the bash command line system on all three.

Second, this book is does a much better than average job as a tutorial, rather than just as a reference manual, than most other books I’ve seen. You can work from start to finish, with zero knowledge at the start, follow the examples (using the provided files that you are guided to download using command line tools!) and become proficient very comfortably and reasonably quickly. The topic are organized in such a way that you can probably skip chapters that interest you less (but don’t skip the first few).

Third, the book does give interesting esoteric details here and there, but the author seems not compelled to obsessively fill your brain with entirely useless knowledge such as how many arguments the POSIX standard hypothetically allows on a command line (is it 512 or 640? No one seems to remember) as some other books do.

I found Small, Sharp, Software Tools a very comfortable, straight forward, well organized, accurate read from Pragmatic.

Ubuntu and Linux Books

Ubuntu is a form of Linux. Most references on Linux will be applicable to Ubuntu, but each distribution of Linus has its own features, so if you are going to use a specific operating system (Ubuntu vs. Fedora, for example) you will be happier with a book about that distribution.

This is a selection of what I regard as the best books for the purpose, but if you are reading this post in late 2017 or later, and you click through to a particular book, do look around for more recent editions. Also, check out the book reviews on my other blog, which will include all sorts of science books, some politics, and a good number of computer related books.

For books on programming (in various languages, for kids and adults) check out this post.

Linux: General books

Recently updated:

How Linux Works, 2nd Edition: What Every Superuser Should Know

Unlike some operating systems, Linux doesn’t try to hide the important bits from you—it gives you full control of your computer. But to truly master Linux, you need to understand its internals, like how the system boots, how networking works, and what the kernel actually does.

In this completely revised second edition of the perennial best seller How Linux Works, author Brian Ward makes the concepts behind Linux internals accessible to anyone curious about the inner workings of the operating system. Inside, you’ll find the kind of knowledge that normally comes from years of experience doing things the hard way. You’ll learn:

  • How Linux boots, from boot loaders to init implementations (systemd, Upstart, and System V)
  • How the kernel manages devices, device drivers, and processes
  • How networking, interfaces, firewalls, and servers work
  • How development tools work and relate to shared libraries
  • How to write effective shell scripts
  • You’ll also explore the kernel and examine key system tasks inside user space, including system calls, input and output, and filesystems. With its combination of background, theory, real-world examples, and patient explanations, How Linux Works will teach you what you need to know to solve pesky problems and take control of your operating system.

    Yes, this is good: Linux For Dummies, 9th Edition

    Eight previous top-selling editions of Linux For Dummies can’t be wrong. If you’ve been wanting to migrate to Linux, this book is the best way to get there. Written in easy-to-follow, everyday terms, Linux For Dummies 9th Edition gets you started by concentrating on two distributions of Linux that beginners love: the Ubuntu LiveCD distribution and the gOS Linux distribution, which comes pre-installed on Everex computers. The book also covers the full Fedora distribution.

    Ubuntu Linux

    Ubuntu Unleashed 2019 Edition: Covering 18.04, 18.10, 19.04 (13th Edition)

    … unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system. This new edition has been thoroughly updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 16.04 LTS release with forthcoming online updates for 16.10, 17.04, and 17.10 when they are released.

    Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 16.04 installation, configuration, productivity, multimedia, development, system administration, server operations, networking, virtualization, security, DevOps, and more—including intermediate-to-advanced techniques you won’t find in any other book.

    Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of navigation via Unity Dash, wireless networking, VPNs, software repositories, new NoSQL database options, virtualization and cloud services, new programming languages and development tools, monitoring, troubleshooting, and more.

    Other Linux Distributions

    Not at all current, but of historical interest and probably available used: The Debian System: Concepts and Techniques and A Practical Guide to Fedora and Red Hat Enterprise Linux (7th Edition).


    Using the Linux Command Line and bash shell

    The Linux Command Line: A Complete Introduction

    You’ve experienced the shiny, point-and-click surface of your Linux computer—now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you’ll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more. In addition to that practical knowledge, author William Shotts reveals the philosophy behind these tools and the rich heritage that your desktop Linux machine has inherited from Unix supercomputers of yore. As you make your way through the book’s short, easily-digestible chapters, you’ll learn how to: Create and delete files, directories, and symlinks Administer your system, including networking, package installation, and process management Use standard input and output, redirection, and pipelines Edit files with Vi, the world’s most popular text editor Write shell scripts to automate common or boring tasks Slice and dice text files with cut, paste, grep, patch, and sed Once you overcome your initial “shell shock,” you’ll find that the command line is a natural and expressive way to communicate with your computer. Just don’t be surprised if your mouse starts to gather dust.

    Linux Pocket Guide: Essential Commands

    If you use Linux in your day-to-day work, this popular pocket guide is the perfect on-the-job reference. The third edition features new commands for processing image files and audio files, running and killing programs, reading and modifying the system clipboard, and manipulating PDF files, as well as other commands requested by readers. You’ll also find powerful command-line idioms you might not be familiar with, such as process substitution and piping into bash.

    Linux Pocket Guide provides an organized learning path to help you gain mastery of the most useful and important commands. Whether you’re a novice who needs to get up to speed on Linux or an experienced user who wants a concise and functional reference, this guide provides quick answers.

    Wicked Cool Shell Scripts, 2nd Edition: 101 Scripts for Linux, OS X, and UNIX Systems>

    Shell scripts are an efficient way to interact with your machine and manage your files and system operations. With just a few lines of code, your computer will do exactly what you want it to do. But you can also use shell scripts for many other essential (and not-so-essential) tasks.

    This second edition of Wicked Cool Shell Scripts offers a collection of useful, customizable, and fun shell scripts for solving common problems and personalizing your computing environment. Each chapter contains ready-to-use scripts and explanations of how they work, why you’d want to use them, and suggestions for changing and expanding them. You’ll find a mix of classic favorites, like a disk backup utility that keeps your files safe when your system crashes, a password manager, a weather tracker, and several games, as well as 23 brand-new scripts…

    Command Line Science

    A worthy Kickstarter science related project is afoot.

    Face it. Most science is done on the command line. When it is not, we call it “science by spreadsheet” or name it by some other epithet.

    Much of that is done on Linux or Linux like computers, but that actually includes Macs, and if you must, it can be done on Windows.

    Bioinformatics, climate simulations, basic statistics using the r language, fancy math things using the appropriate python library, making graphs with gnuplot, and even producing nice looking results for dissimnation to our geeky peers using LaTex. Science-related engineering uses the command line too, if it involves any programming of controllers or sensor equipment.

    This is not to say that all science is done this way. Quite a bit isn’t. But there are many tools used in science that are best handled with the command line or something like the command line.

    Brian Hall, a computer science guy, is developing an on line training class to teach the methods of command line science. He is developing the class using Kickstarter, which is fairly unique as far as I know. He isn’t even asking for that much money, and is over half way to his goal. Visit the Kickstarter site to see what you get if you donate. He has a nice video explaining the project.

    This video course is designed for scientists with little or no programming experience. It’s okay if you’ve never even touched the command line (or if you did once but it felt icky).

    You’ll have fun learning a new, powerful way of communicating with your computer. Along the way, you’ll acquire access to a whole world of amazing open source data and software. Who knows what you’ll do next?

    The project home will be at Udemy, here. You can go there and see a draft of the course, which will give you a very good idea of what it entails.

    The class will probably cost $199, but Brian is considering discount rates for teachers.

    Here’s the press release for Brian’s project:

    Crowd­funded Video Course to Boost Scientists’ Computational Skills

    “Learn the Command Line … for Science!”

    Nearly every field of science has a significant computational component ­­ but few working scientists have been trained as programmers. Universities are adapting, but not nearly as fast as the sciences are exploding with new applications. Simulation, data mining, bioinformatics ­­ these are the fields that are driving innovation in physics, astronomy, biology, and medicine. New tools and techniques are being developed every day, but we need more scientists with the interdisciplinary skills necessary to harness them.

    A new video course called “Learn the Command Line … for Science!” is calling for backers on the crowd funding site Kickstarter.com. This class will walk trained scientists through the basics of using the command line interface, an absolute requirement to run scientific applications and take advantage of high performance computing resources. It’s also great preparation for learning to code, and eventually contribute new and novel tools to computational science.

    The class is being developed by Brian David Hall, a Computer Science instructor with experience doing bioinformatics for the USDA. The course is upbeat, fast­paced and targeted at the needs of working scientists. It goes into detail where necessary ­­ for example, covering how to install software and download datasets from the command line ­­ but it skips topics which are less relevant to scientists, such as the system administration tasks emphasized by other command line courses.

    Kickstarter campaigns operate under an “all­or­nothing” funding model, so if “Learn the Command Line … for Science!” doesn’t reach its funding goal of $1,500 after 30 days then Brian gets no funding, and nobody gets to take the course! Be sure to follow him on Twitter (@_bruab_) to stay up to date on the project’s progress, and help spread the word to your social media networks. Just $5 is enough to become a backer of this project. For Science!