Linux is one of the most popular operating systems for servers and cloud-based infrastructures. It gives access to a robust CLI (Command Line Interface), a scripting environment, essential tools and utilities, strong security features, and powerful diagnostic tools for troubleshooting. In order to master the art of delivering high-quality software and infrastructure, it is required for a DevOps Engineer to master Linux.
The REPL: Read iput, Evaluate command, Print input, Loop back to read input.
Opening Terminal (macOS):
pwd - print working directory
¶$ pwd
/Users/TeslaPython
ls - list
¶$ ls
Applications
Desktop
Documents
Downloads
library
Movies
Music
Music
Pictures
Public
list -l(long) and -h(human-readable)
¶$ ls -l -h
total 8
drwx------@ 5 TeslaPython staff 160 Mar 25 10:26 Applications
drwx------+ 19 TeslaPython staff 608 Mar 18 21:20 Desktop
drwx------+ 6 TeslaPython staff 192 Feb 1 22:22 Documents
drwx------@ 50 TeslaPython staff 1600 Apr 4 11:35 Downloads
drwx------@ 88 TeslaPython staff 2816 Mar 16 19:28 Library
drwx------ 3 TeslaPython staff 96 Dec 30 10:02 Movies
drwx------+ 4 TeslaPython staff 128 Dec 30 11:08 Music
drwx------+ 5 TeslaPython staff 160 Jan 25 18:39 Pictures
drwxr-xr-x+ 4 TeslaPython staff 128 Dec 30 10:02 Public
Now, we explain this:
cd - change directory
¶$ pwd
/Users/TeslaPython
$ cd projects
$ pwd
/Users/TeslaPython/projects
find - find files
¶$ find / TeslaPython
It means the above will search “/” the whole system with the name “TeslaPython”. Keep in mind that when you are not executing this as the all powerful root (administrator) user, “find” will not have permissions to list the contents of many directories, so you will receive output like find: ‘/root’: Permission denied
fing - find files
¶$ find / -type d -name TeslaPython
The above will search “/” the whole system for a directory “-type d” with the name “TeslaPython”
less - Reading files
¶$ less teslapython.txt
alabaster==1.0.0
asgiref==3.8.1
babel==2.17.0
cachetools==5.5.2
certifi==2025.1.31
For example, the above will read “teslapython.txt” file, to quit hit q.
mkdir - make a directory
¶$ mkdir TeslaPython
$ ls
TeslaPython
rmdir - remove (empty) directories
¶$ rmdir TeslaPython
$ ls
(nothing)
rm - remove (not empty) files and directories
¶$ rm filename
rm -rf remove (not empty) files and directories
¶$ rm -rf filename
The above will let you delete directories that are critical to the operation of your system. You’d like to delete the root directory, which contains everything on the system. -rf means recursively force.
Move or rename files and directories. First, we’ll create a file using touch:
mv - move or rename files and directories
¶$ touch teslapython.txt
$ ls
teslapython.txt
Then, we’ll rename the file in place, this command would overwrite any existing file name teslapython.txt:
mv - move or rename files and directories
¶$ touch teslapython.txt docsteslapython.txt
$ ls
docsteslapythonlab.txt
To move the file to a new directory, we’ll create a new directory and then move the file there:
mv - move or rename files and directories
¶$ mkdir teslapythondir
$ mv docsteslapython.txt teslapythondir/
$ ls teslapythondir/
docsteslapython.txt
Remember you can always skim the relevant information using specific flags, “man” (man means manual) will print something like this:
man - getting help
¶$ man find
NAME
find – walk a file hierarchy
SYNOPSIS
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
DESCRIPTION
The find utility recursively descends the directory tree for each path listed, evaluating an expression (composed of the “primaries” and “operands” listed below) in terms of each file in
the tree.
The options are as follows:
-E Interpret regular expressions following the -regex and -iregex primaries as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.
Or using “apropos”
apropos - display online manual documentation pages
¶$ apropos find
git-bisect(1) - Use binary search to find the commit that introduced a bug
git-cherry(1) - Find commits yet to be applied to upstream
git-merge-base(1) - Find as good common ancestors as possible for a merge
git-name-rev(1) - Find symbolic names for given revs
git-pack-redundant(1) - Find redundant pack files
strings(1) - find the printable strings in a object, or other binary, file
BIO_find_type(3ssl), BIO_next(3ssl), BIO_method_type(3ssl) - BIO chain traversal
Or using “whatis”
whatis - display online manual documentation pages
¶$ whatis find
git-bisect(1) - Use binary search to find the commit that introduced a bug
git-cherry(1) - Find commits yet to be applied to upstream
git-merge-base(1) - Find as good common ancestors as possible for a merge
git-name-rev(1) - Find symbolic names for given revs
git-pack-redundant(1) - Find redundant pack files
strings(1) - find the printable strings in a object, or other binary, file
SPI_cursor_find(3) - find an existing cursor by name
XkbFindOverlayForKey(3) - Find the alternate name by using the primary name for a key that is part of an overlay
XkbLookupKeyBinding(3) - Find the string bound to a key by XRebindKeySym
XkbLookupKeySym(3) - Find the symbol associated with a key for a particular state
XkbTranslateKeySym(3) - Find the string and symbol associated with a keysym for a given keyboard state
Connecting to Remote Servers via SSH
SSH stands for Secure Shell. It is a cryptographic network protocol that allows secure communication between two systems. The default port for SSH is 22
ssh
¶$ ssh -p 443 teslapython@216.24.57.252
Why Linux API?
Development
Malware analysis
Vulnerability analysis and exploitation
Reversing
Diagnostics
Debugging
Monitoring
Memory forensics
Crash and hang analysis
Secure coding
Static code analysis
Trace and log analysis
What Linux API?
Source code prespective
ABI (Application Binary Interface) perspective: Libraries and Syscalls
May 11, 2025