The Linux Command Line
Linux is an open source operating system which is available to anyone. For most coders and developers, learning Linux CLI will help them as they work to develop cross platform applications and access development tools. Here is everything you need to know about using the Linux CLI so you can execute code on Linux based systems and apps.
Understanding and Using the File System
Linux Directories Explained
/bin
Born in shell (enhanced version of the shell)
/ to separate directories
Linux is case sensitive in terminal (applicable everywhere!)
Arrows let you go up and down to repeat commands Up or Down
- History command will show you the command
- !2 will execute the 2nd command in history list
Managing Packages
Popular Package Managers Include: npm for JavaScrip and Node, pip for Python, brew for homebrew, & yarn.
Apt is the package manager for Linux (apt-get also exists)
Navigating the File System
$ pwd (print working directory) - see where you are in the file system
$ ls (list) - see the files in the pwd
$ ls -1 (Number One) - will show one list item per line
$ ls -l (letter L) - will show additional information about the item
$ cd (change directory) + relative path / absolute path
Example: $ cd Desktop (relative path)
$ cd Documents/codingExamples/linux (absolute path)
$ cd .. (go one level up, or back, with this command)
$ cd ../.. (go two levels up)
View Content in Another Directory
$ ls bin
This will show you all files within the bin directory
$ cd /root
changes directory to specified path
$ cd ~ (user root) - go to your home directory no matter where you are
Manipulating Files and Directories
$ cd ~
$ mkdir (create directory)
$ mkdir test
$ ls
test/
$ mv (rename directory
$ mv test documents
$ ls
documents/
$ cd documents
Using the touch and mv Commands
~/documents
Create a new file using touch
$ touch hello.txt
Create multiple files at once
$ touch file1.txt file2.txt file3.txt
$ ls
hello.txt file1.txt file2.txt
file3.txt
Rename the file with mv
$ mv hello.txt hello-world.txt
Move file to another directory
$ mv hello-world.txt/etc
Remove one or more files
Delete or remove files
$ rm
$ rm file1.txt file2.txt
rm file* (delete all files starting with file)
rm: cannot remove ‘docker/’: Is a directory (you can not delete dir with rm)
$ rm -r (-r means recursively and will remove both the file and its contents)
$ rm -r docker/
$ ls (verify that the pwd is empty)
Manipulating Files and Directories
Nano is the basic file editor in Linux and can be installed with the following command:
apt install nano
Use Nano:
installing nano on your system:
$ sudo apt update $ apt install nano Remove Nano command: $ apt remove nano
Open file for editing:
$ nano file1.txt
Create content within the new file
hello World
Save and Exit ^X (ctrl + x) && Y (save buffer)
File Name to Write: file1.txt (keep or change)
View the Content of the File in Terminal Window
$ cat >> will concatenate the information on the terminal & can be used to combine files. $ cat file1.txt Hello World
Easy accessing content in terminal when dealing with long files:
$ more /etc/adduser.conf >> will let you see parts of the content at a time. Use the space key to move to the next page. Enter will let you navigate down. $q will exit. $ apt install less $ less /etc/adduser.conf >> will let you scroll up or down with the arrow keys.
Additional Commands for viewing parts of content
$ head (used to display the first few lines) $ head -n 5 /etc/adduser.conf $ tail (used to display the last few lines) $ tail -n 5 /etc/adduser.conf
Redirection | Concepts of Standard Input Output / IO
Standard Input – represents the keyboard
Standard Output – represents the terminal window or screen
Change the source of the input and output using Redirection //# cat file1.txt
$ cat file1.txt Hello World
Write content from one file to another using the cat command and > character
$ cat file1.txt > file2.txt
Redirection Operator to combine multiple files
$ cat file1.txt file2.txt Hello World Hello World
$ cat file.txt file2.txt > combined.txt
The Redirection Operator is not limited to the cat command. It can be used practically anywhere.
Redirection Operator Examples
Echo can write content to a file without using Nano
$ echo hello Hello $ echo hello > hello.txt $ echo whatever > whatever.txt $ ls -l/etc > files.txt >> This will create a list of items and write to a .txt file
Searching for Text in Files
$ grep hello file1.txt >> This will show nothing because of case sensitivity.
To remove case this, use:
$ grep -i hello file1.txt
View list of user accounts:
$ grep -i root /etc/passwd
Search in multiple files:
$ grep -i hello file1.txt file2.txt $ grep -i hello file* file1.txt:Hello file2.txt:Hello
Search this directory and then subdirectories recursively
$ grep -i -r hello
Linux will let you combine options. Thus: -i -r == -ir
Finding Files and Directories
Use the command to find files and directories:
$ find $ find ./ (hidden file that will not display with the ls command) $ ls -a (option to show all files, including hidden files) $ find + path (Search other files and directories) $ find -type d (show only files in current directory) $ find -type f -name "f*"
Search for files of a specific extension type, case insensitive, with the following command:
$ find / -type f -name "*.py" > python-files.txt
Chaining Commands
$ mkdir test $ cd test $ echo done
Chain commands so all commands are executed one after another:
$ mkdir test;cd test;echo done
Note: you can use spaces between the ; if you want. Doesn’t matter during execution.
How to stop the process if one of your commands fail:
$ mkdir test && cd test && echo done
If the first command fails, the following will not be executed. Unlike the ; which will execute the other commands if one fails.
Use || as the “Either Or” operator for commands:
$ mkdir test || echo "directory exists"
This way, if the first command fails, the second command will execute to alert you to the failure.
Chaining commands using piping
Create a list of the /bin directory and pipe it to the less command.
$ ls /bin | less
Less gets input from first command and doesn’t need its own file name. You can use a lot of other commands after the | while working in your terminal, for example:
Split into multiple lines:
$ mkdir hello ; cd hello ; echo done ...... or split lines with \ $ mkdir hello;\ > cd hello;\ > echo done;
Environment Variables (Major Area of Confusion)
$ printenv (see all env variables) HOSTNAME=2f759e6996e9 PWD=/root HOME=/root LS_COLORS=rs=0: .... … PATH=/usr/local/sbin:/....
Manny commands need to be added to path when the code package, software, etc. is installed on your system. For example, when you install Python3, to use the code, you must add the python3 variable to your path.
The OS will look at the path variable for the machine to run commands and code. If the command gives a path error despite the code being installed, it is not added to PATH.
More Environment Commands
$ echo $PATH ($ = env variable) $ export DB_USER=alizarin $ echo $DB_USER Austin
When used, this variable will only available in the current terminal session, and will not be saved.
$ exit
The exit command will terminate the container/session in terminal.
Want to Try Linux?
If you are interested in trying out Linux, check out our tutorial for using Linux on your Windows 10 Computer. This is an easy way to get started without setting up an entirely new OS on your computers hardware.
Blog Article: Run Linux on Windows