`apt update` refreshes the package index, but does no upgrade; so `apt update <package>` just fails with a usage error. Use `apt upgrade` for upgrading, or to allow dependency resolution to remove installed packages, which is relevant for upgrades between major releases, use `apt full-upgrade`.
`apt list` lists all pacakages known to apt, not only local ones; if you want locally installed ones use `apt list --installed`, e.g.:
$ apt list | wc -l
59316
$ apt list --installed | wc
426
`ip show link` just isn't a thing and will only get you `Object "show" is unknown, try "ip help".`.Rather I'd recommend adding `alias ip="ip -c"` to your `.bashrc` or `.zshrc` to always get color output, that makes things much easier to read and then either use `ip a` or for a brief output that's very easy to read quickly `ip -br a`. If you want all details and statistics about bytes send/received and packets accepted/dropped use `ip -s -s a` (`a` is short for `addr` or `address`).
Mixes rsyslog and journald.
The "Shell Tips and Tricks" section could really do with a short sentence or a few keywords besides the tools.
It seems to be an open book, so maybe I can contribute some fixes; but with that many errors in such a short text I'd not share that guide currently to anyone.
And it's awesome. This is just the thing a new Linux user needs to start understanding the ecosystem.
Back in the day, when I was first exposed to Unix (on Sun3), one of the sysadmins pointed me to the 'man' feature. After a while I figured out that I could do a man -k - to get a list of all the man pages (because the summary for each page includes a '-'). So I did that and printed out the result (lp/lpr). At that time, the total number of man page entries fit on something like half a dozen pages. I spent a few days (part time) reading each one. It was a great way to learn.
My current Linux desktop (Mint) gives the following for man -k - | wc: 2943 26748 200002
That list would fit on 50 printed pages, which is about 10x what it was 37 years ago.
So if you have the patience to read almost 3k man pages, you too can become a Linux expert.
If you're wanting to dive a little deeper than this guide touches check out:
- https://man7.org/tlpi/ - Really good for understanding how to build applications within a Linux ecosystem.
- https://www.amazon.com/Linux-Kernel-Development-Robert-Love/... - Really good for understanding why Linux is the way it is. The Kernel this book was written on is awful old, but the principles shine through.
From the ToC:
> https://abarrak.gitbook.io/linux-sysops-handbook/#1-processe...
The working link is:
> https://abarrak.gitbook.io/linux-sysops-handbook/#1.-process...
For more such resources, I have a list here: https://learnbyexample.github.io/curated_resources/linux_cli...
I have also written CLI one-liner books for grep/sed/awk, currently free for Twosday: https://learnbyexample.gumroad.com/l/oneliners/Twosday
If you really want a trip down memory lane, dig up some earlier editions and learn how to deal with the quirks of the SGI, DEC, SUN, IBM, & HP menagerie.
I'd definitely start with this one.
Not sure what commands there are or what they do? Try this out:
zcat -f /usr/{,share/}man/man[18]/*.[18].gz | grep -A2 "\.SH NAME" | grep -v "^\.\|^$\|^--" | sed 's/\\//g' | sort -u | less
Then read the manual for those tools that interest you. (learn how man, info, less and more work)The source code is also free. Many of these tools come as part of a package of other tools and libraries. Find out what package the tools come from, find the source code, download it, peruse through it (even if you don't know the language). I guarantee you will find out new things you didn't know about how the system works.
You can also use debugging tools like strace, ltrace, gdb, lsof, etc to find out more about what these tools are doing. The more you understand what it's actually doing, the deeper your knowledge, and the less you need a handbook to tell you what to do.
Another way to play around with commands is to just run a Docker container like docker run --rm -it ubuntu:18.04 and try anything you want in the container. On exit it will be destroyed. To play around with systemd tools, install Vagrant and spin up a mini Linux VM.
Something 10k+ pages in length doesn't fit that description.
Thanks so much the author!