Linux Commands for Devops
✍ As a DevOps engineer, you’re expected to know your way around Linux command line tools. This cheat sheet can help.
Let’s get started! 💯
⫸ Basic commands 😊
✍ mkdir
mkdir linux-basics
: creates a new directory with the specified name.
mkdir dev qa prod
: creates multiple directories at once.mkdir logfolder{1..10}
: creates a range of directories with sequential numbers from 1 to 10.
✍ sudo: stands for ‘superuser do’
sudo [options] [cmd]
: It is used to execute commands as a root user or super user.
sudo apt-get update
: updates the package list
sudo -u username touch file.txt
: creates a new file “file.txt” with the ownership of “username”.
sudo -s
: starts a new shell with root privileges.
✍ history
history
: display all the commands which we have executed on a terminal.
✍ ls
ls
: list the contents of the current working directory
ls -l
: list the content in long format with permissions, owner, size, and last modified date for each directoryls -a
: list all files in the directory, including hidden files that start with a dot (.) character.
ls -R
: list the content of the current directory and its sub-directories recursively.
ls -r
: reverse the order of display. Older files are listed first.ls -h
: display file size in a human-readable format. eg KB, MB, or GB.
we can also combine the above options:
ls -alh
: display the content of the directory including hidden files in a long format with file size displayed in a human-readable format.
✍ cd
cd <path/to/directory>
: will take you to the specified directory path.
cd ~
: used to navigate to the home directory.cd /
: take you to the root directorycd ..
: move up one directory
✍ pwd
pwd
: It stands for print working directory. It prints the current working directory in which the user currently is.
⫸ File Operations 📁
✍ touch
touch
: This command helps to create a new file.
✍ cat
cat filename
: used to display the content of the file
cat file1 file2 > newfile
: concatenate file1 , file2 content in newfile.cat file1 >> file2
: appends the file1 content to file2.cat -n filename
: display the content with line numbers.cat -E filename
: display the content with a $ sign at the end of each line.cat -T filename
: display the content of the filename with tabs.
✍ cp
cp src dest
: copy a file/ directory to another location
cp file1.txt file2.txt
: This will copy the content of file1 to file2 which is in the same directory.
cp -v file.txt dev
: It copies the file.txt to the dev directory in verbose mode. Hence you were able to see the progress.
cp -r dev qa
: copies dir and sub-dir to destination dir
✍ mv
mv file.txt file3.txt
: moves or renames a file or directory.
✍ rm
rm file/directory_name
: removes a file or directory
rm file.txt
: delete the filerm -r qa
: recursively delete the file and folders.
rm -rf prod
: forcefully deletes the directory/file, to remove a directory we need to use-r
.
⫸ Text Processing 📋
grep
grep [options] [pattern] [filename]
: ‘globally search for a regular expression and print’. It is used for text search and filtering based on regular expressions and returns the lines which match the pattern.
Eg: log analysis, system monitoring, and code debugging.
grep "INFO" logfile.txt
: this will return the search which has the INFO keyword from logfile.txt
grep "ERROR" -r -i /home/ubuntu
: this will try to find the ‘error’ keyword in the path /home.
top | grep -i systemd
: grep can be combined with other Linux commands and search for the exact pattern.
df -h | grep -i /dev/shm
: here we combined grep with disk space command and searched for /dev/shm
✍ awk
awk <condition> {<action>} filename
: awk is a programming language and has its own syntax. It is used for text processing and manipulation.
Eg: Data extraction, Report generation or Data Manipulation.
awk '/INFO/ {print $1 $2 $3 $6} logfile.txt
: here, you can pass the pattern ‘INFO’ and condition to print columns 1, 2, 3, and 6 of a log file.
awk -F',' '{print $1, $3}' fruits.txt
: This will split on delimiter and print the values of columns 1 and 3 in the output
awk -F',' '$2 > 75 {print $1}' marks.txt
: This will split on delimiter and then the marks of students and will print their names if marks are greater than 75.
✍ find
find
: used to find files and directories in a given directory. It uses the name, size, type, or modified time of the file to search.
Eg: file management, backup, and system administration.
find . -name "logfile.txt"
: this will find the file by name in the current dir and its sub-directories.find . -name "*.txt"
: this will find all the files with the extension .txt
find . -type d
: this finds all the directories from the current directory.find . -type f -size +10M
: this finds all the greater than 10Mfind . -name "logfile.txt" -delete
: deletes all the files which match the filename.
✍ sed
sed [options] [pattern] [filename]
: It's used to search, transform and replace in the file/output of the command.
sed -i 's/bitter/awesome/g' logfile.txt
: It will replace the old text with the new text in a file.-i
stands for editing a file in place,-g
stands for replacing all occurrences, and-s
stands for substituting the old value with the new one.
sed -i '3s/cool/sweet/' file.txt
: replace the first occurrence of old text with new text but only on line 3 of a file
sed -i ‘/awesome/d’ file.txt
: delete all lines containing the word ‘awesome’ in a file.
⫸ System Information
✍ top
top
: It gives the system resources usage in real-time.
✍ ps
ps
: gives information about running processes.
✍ df
df
: gives the disk space usage
✍ free
free
: gives the system memory usage
✍ uname
uname -u
: displays system name
⫸ Networking
ping
ping google.com
: checks the connectivity by sending packets to the host.
✍ ssh
ssh -i user@remote_host
: This allows to connect to remote server via ssh
✍ scp
scp filename remotehost:localpath
: these commands copy files from the remote host to the local system.
⫸ User and Group Management
These commands are used for managing user accounts, groups, and passwords.
✍ useradd
useradd username
: this will add a new user
✍ passwd
passwd username
: change the password of the user
cat \etc\passwd
: to view all users
✍ groupadd
groupadd grpname
: it will create a new group
cat \etc\group
: to view all the groups
✍ gpasswd
gpasswd -a username grpname
: add a single user to the group
gpasswd -M user1,user2 groupname
: add multiple users to the group.gpasswd -A username grpname
: create an admin of the group.gpasswd -d username groupname
: delete the user from the group.
✍ deluser
deluser username
: this will delete a user account.
⫸ File Permission
✍ chmod
Permission Classes:
Type: Type of file or directory.
- Owners: They are owners of the file
- Group: Permission for groups
- Other: Permission for other users. eg you might have used the share button in a Word document.
There are three types of permissions: read (r), write (w), and execute (x).
Let’s take example
In the above example, the fruits.txt has
- Owner : it has read and write permission (4: read) + (2: write) = 6
- Group: it has read and write permission (4: read) + (2: write) = 6
- Other: it has only read (4: read) = 4
Hence the current permission for a file is 664
To change the file permission to 772, we will be using chmod cmd.
- The first 7 indicates the owner, to change his permission we need read(4), write(2), and execute (1) permissions, which are represented by 4+2+1=7
- The group has read(4), write(2), and execute (1) permissions, which are represented by 4+2+1=7
- All other users have only write permission which is represented by 0+2+0=2
chmod 772 fruits.txt
: This will change the permission of the fruits.txt file from 664 to 772.
Here in -rwxrwx-w-
` the first —
represents the normal file.
⫸ Miscellaneous
head
head filename
: display the top contents of the file, default 10 lines.
head -n 3 filename
: This displays the top 3 lines of the file.
✍ tail
tail filename
: display the bottom lines of files
tail -n 3 filename
: display the bottom 3 lines of files
✍ diff
diff file1 file2
: it shows the difference between the two files.
- Any line unique in file1 will be indicated by < symbol
- Lines unique in file2 will be indicated by symbol >
Great! If you have come to the end. This indicates you have a lot of patience.
diff
diff file1 file2
: it shows the difference between the two files.
- Any line unique in file1 will be indicated by < symbol
- Lines unique in file2 will be indicated by symbol >
Great! If you have come to the end. This indicates you have a lot of patience.