Learning the Unix OS
Learning the Unix OS - 5th Edition
Jerry Peek, Grace Todino & John Strang ( O'Reilly, 2002 )
This book is now over 20 years old, yet it has aged gracefully.
Roughly 90% of the information inside is still relevant today and the other 10% can be treated as a history lesson.
The reason can be found in the book's preface.
This book teaches basic system utility commands to get you started with Unix... We cover a commands most useful features...
And it more than lives up to its purpose. While Linux & Unix have changed a lot over the years the command line itself hasn't changed radically. The reason why the commands shown are interchangeable is that many of the core commands are identical in terms of syntax and functionality between Unix & Linux. There are of course some differences, but they are not enough to be a problem at our current level. We won't learn about Modern Filesystems or Containers, but we will learn enough to get even more confident with working through Linux.
Book Overview
Our next step in the systems fundamentals course will be Learning The Unix OS by O'Reilly. You may treat this book as a Practical Guide to Unix. This book is 157 pages long and will take you 7 days to finish if you dedicate between 2-3 hours every day to work through it.
When you look at the title you will notice the word Unix, but don't let the word Unix discourage you. Much of what we will be going over will be regarding the Command Line Interface. Which for our purposes is practically interchangeable with Linux. Don't misunderstand, they are two different operating systems, with the key difference being that Linux is Open-Source while Unix is Proprietary
The main goal of this book is to serve as a Practical Starter Guide, covering the main essentials of the CLI and Unix OS. That is why this book is still remains relevant even today. While we did go through an introductory course already, that being the Linux Upskill Challenge, there are some nuances that that this book goes through that will be very helpful to us.
We'll explore the various types of commands, Windows Systems, basic File Management, I/O-Redirection and even some interesting pieces of Linux history. When I finished going through this book, I felt confident that I could start working on this roadmap and bring something interesting to the table. We still have a long way to go before we can call ourselves true adepts, but steadily, we are making progress.
✨Personal Note
( The following has been added to the overview page. But I am keeping this here as this was when I thought of the idea. )
Throughout this journey I will do my best to be as objective as I can. However, I am still in the middle of my learning and I am only human. While technology itself is neutral, the way we use it, how we think about it, what we think is best moving forward and so on, are things that are human viewpoints. There are of course times when things are simply 0 or 1, but as you go through your own journey you will find that you will have to come up with your own definitions and reasons for doing things backed by personal preference or well researched analysis or simply that's the way things are done.
So, to carry on with that spirit I will place the sparkling star icon✨ whenever certain notes or topics are things I am speaking my own mind on. I encourage you to come up with your own analysis or thoughts on those topics.
Goals of this Book
- Gain a basic understanding of the various use cases for Linux as well as cover its strengths and weaknesses
- Learn how to find the current shell you're working in: ps $$ & echo $SHELL
- Cover the formatting of Unix command arguments
- Go over Jobs and how to: show, restart, stop and kill them: jobs | fg | ctrl-z | kill %
- Cover Window Systems going over virtual consoles, terminal windows vs alphanumeric terminals
- Root vs relative path names
- 3 permission types of files and directories
- Understand group ownership and how to give specific groups access to files and directories
- How to remove files with spaces between them
- Cover the Primary Wildcards ( *, ?, [ ] )
- Go over the main ways to find files in Unix ( find | locate )
- I/O Redirection with: ( >, >>, <, |, grep, sort )
- Pager program commands ( less | more | pg )
- Examine CLI web browsers and their use case
Course Notes
I quite enjoyed making the notes for this book since it led me to making several web searches on various different topics about Linux both old and new.
- ✨Why should we use Linux?
- The FOSS nature of the OS allows groups to have a very powerful tool. Making it a great choice for smaller teams or groups without much money.
- Linux is also made to be run on practically anything. From the weakest hardware to the most powerful, although Linux's best potential can be extracted on more powerful systems.
- As another note, Linux supports both windowed and non-windowed systems.
- Chapter 1 - Getting Started
- You can find the current shell you are working in with ps $$ & echo $SHELL
- whoami - Will show the username you are logged in as
- who - Will show a list of users that are logged on
- There are control characters you can use in Linux. The most common of which is CTRL+C & CTRL+D
- CTRL+C ( ^C ) : Cancel the currently running process or command
- CTRL+D ( ^D ) : Marks the End-Of-File. Will have no effect if the program isn't reading input from the terminal. If used in a shell terminal it will exit.
- Unix Command Arguments
- command option(s) filename(s)
- Options modify the way a command works
- Can be letters ( -ltr ) or words ( --delete )
- At times there will be special exceptions for certain commands
- Daemon - May also be called a background process. It is a Unix or Linux program that executes in the background. The main distinction between a daemon and a job is that a daemon operates autonomously, performing tasks without user intervention.
- Job - Any programs that are started interactively by the user that don't detach in the background, ( ie. becoming a daemon ) are jobs.
- jobs - shows running jobs in the current shell
- ps - lists running processes
- Jobs in the foreground can be stopped with ctrl-z
- job & - starts a job and places it as a background process
- fg - places a background process into the foreground
- kill % job_num - sends a signal to kill a job or process
- Chapter 1 Summary - In this chapter we covered the basics of working in a Unix environment. We learned about processes, starting them and stopping them, We also briefly covered control characters and some command syntax
- Chapter 2
- Alphanumeric terminals handle a single session on a single screen
- Virtual consoles exist as a way to get Fullscreen log-in sessions on the same OS. You may switch between consoles with Ctrl-LeftAlt-[F1…F6]
- Unix Systems have windows managers. One of the most important types being terminal windows
- A Unix session inside a shell prompt is a terminal window
- Terminal windows allow us to interact with Unix from a shell prompt
- Use Ctrl+Alt+F6 to get a non-graphical log-in prompt
- Chapter 2 Summary - In this chapter we learned about the history of windows terminals. And we also covered various ways to deal with crashing windows
- Chapter 3
- A file is the unit of storage in Unix. Files can hold anything from Text to programs, digitally encoded data, etc
- Any time we log into a Linux/Unix machine we will start in the home directory which is also our working directory
- All directories in the Unix system is organized into a tree-like hierarchy structure.
- Networked Filesystems allow us to access a remote computer's files, and have them appear in our computer's directory tree.
- Absolute vs Relative Paths
- Root starts with a slash ( / )
- Relative path names
never start with a ( /) - Unix/Linux filesystems can also hold things that aren't directories or files.
- Symbolic-links, FIFOs, & sockets
- Sysadmins are users that have full control over Linux files
- There are 3 permission types to files and directories
- Read | Write | Execute
- Both files and directories have their own permissions
- File Access Permissions | Directory Access Permissions
- This books goes over chmod and chattr as well. You can find this information the Linux Upskills Challenge Notes Section.
- Protecting and Sharing Files
- Group ownership is the way to give certain groups of users access to files or directories
- List all groups: groups; compgen -u; compgen -g;
- Add groups: sudo addgroup local_group
- Add users to groups: sudo usermod -a -G local_group user_name
- Change group owner: sudo chgrp user_name target-file
- Change owner: sudo chown user_name dirname
- Make Sub-Files and Sub-Directories have same group as parent: chmod g+s dirname
- Profile customization can done through the following:
( .login, .cshrc, .tcsrhc, .bashrc, .bash_profile, .bash_login ) - PATH= > Tells the shell which directories to search for Unix Programs
- umask > Sets the default file permissions assigned to all files you create
- Chapter 3 Summary - We have now gone over file management, profile management and the PATH variable. And we are now aware about network file sharing.
- Chapter 4
- In Linux everything can be viewed as a file. Directories are simply a special type of file.
- Chapter 5
- text
- Chapter 6
- text
- Chapter 7
- text