Linux and Git-GitHub Cheat Sheet
Tags: github, git, linux, devops
Published: 2024-06-14 15:51:33

**here's a basic Linux file system commands cheat sheet:**

**Navigating the File System:**

`pwd:` Print working directory (displays the current directory).

`ls:` List files and directories.

`ls -l:` Long format, shows detailed information.

`ls -a:` List all files, including hidden files.

`ls -lh:` Long format with human-readable file sizes.

`cd:` Change directory.

`cd ..:` Move to the parent directory.

`cd ~:` Move to the home directory.

`mkdir:` Create a new directory.

`rmdir:` Remove an empty directory.


**Working with Files:**

`touch:` Create an empty file.

`cp:` Copy files or directories.

`cp source destination:` Copy a file.

`cp -r source destination:` Copy a directory recursively.

`mv:` Move or rename files or directories.

`rm:` Remove files or directories.

`rm file:` Remove a file.

`rm -r directory:` Remove a directory and its contents recursively.

`cat:` Display the contents of a file.

`more:` Display the contents of a file page by page.

`less:` Display the contents of a file with backward navigation.

`head:` Display the beginning of a file.

`tail:` Display the end of a file.

`nano or vim:` Text editors to create and edit files.

**File Permissions:**

`chmod:` Change file permissions.

`chown:` Change file ownership.

**Searching:**

`grep:` Search for a pattern in files.

`find:` Search for files and directories.

`sort:` Sort lines of text files.

`uniq:` Display or filter duplicate lines in a file.

**File Compression and Archiving:**

`tar:` Create or extract tar archives.

`tar -cvf archive.tar files:` Create a tar archive.

`tar -xvf archive.tar:` Extract files from a tar archive.

`gzip or gunzip:` Compress or decompress files.

`gzip file:` Compress a file (creates .gz file).

`gunzip file.gz:` Decompress a compressed file.

**Disk Usage:**

`df:` Display disk space usage.

`du:` Display file and directory space usage.

`du -h:` Human-readable sizes.

`du -sh directory:` Summarize directory size.

**Other:**

`ln:` Create symbolic or hard links.

`file:` Determine file type.

`mount and umount:` Mount and unmount filesystems.

**Managing Processes:**
`ps:` Display information about currently running processes.

`ps aux:` Display detailed information about all processes.

`ps -ef:` Similar to ps aux, different syntax.

`top: `Display real-time system monitoring and process information.

`htop:` Interactive version of top with more features and controls.

`pgrep:` Search for processes by name.

Example: pgrep firefox to find the process ID of the Firefox browser.
`pkill: `Terminate processes by name.

Example: pkill firefox to terminate all Firefox processes.
`kill:` Send signals to processes (commonly used with process IDs).

kill -9 PID: Forcefully terminate a process with the given process ID.
`killall:` Terminate processes by name.

Example: killall chrome to terminate all Chrome browser processes.
`nice and renice:` Adjust process priority.

`nice -n 10 command:` Run a command with a lower priority (higher niceness value).

`renice -n 5 -p PID:` Change the priority of a running process.

**Background and Foreground Execution:**
`&:` Run a command in the background.

Example: command & runs command in the background.
`jobs:` List background jobs.

`fg:` Bring a background job to the foreground.

`bg:` Resume a suspended background job.

**Process Control:**
`Ctrl+C:` Interrupt (terminate) the currently running foreground process.

`Ctrl+Z:` Suspend the currently running foreground process.

`nohup:` Run a command that keeps running even after the terminal is closed.

Example: nohup command &.
**System Monitoring and Logs:**
`uptime:` Display system uptime and load average.

`vmstat:` Display virtual memory statistics.

`dmesg:` Display kernel ring buffer (boot messages).

`sar:` Collect and display system activity information.

`iostat:` Display I/O statistics.

**Network Configuration:**
`ifconfig or ip addr:` Display network interface information.

`ifup interface_name:` Bring a network interface up.

`ifdown interface_name:` Bring a network interface down.

`ip link set interface_name up:` Another way to bring an interface up.

`ip link set interface_name down:` Another way to bring an interface down.

`ping host:` Send ICMP echo request packets to a host.

`traceroute host: `Trace the route that packets take to reach a host.

**Network Connectivity:**
`ping host:` Check network connectivity to a host.

`traceroute host:` Display the path taken by packets to reach a host.

`nslookup host:` Perform DNS lookups to retrieve IP addresses.

`dig host:` Another tool to query DNS information.

`host host:` Display DNS information.

**Networking and Transfers:**
`wget:` Download files from the internet.

`curl:` Transfer data to/from servers.

**Network Diagnostics:**
`netstat:` Display network statistics (deprecated; use ss instead).

`ss:` Display socket statistics.

`nmap host:` Perform network scanning to discover open ports and services.

`arp:` Display and manipulate the ARP cache.

`iftop:` Display bandwidth usage on an interface.

`iftop -i interface_name:` Monitor bandwidth of a specific interface.

**Firewall and Security:**
`ufw:` Uncomplicated Firewall management tool.

`iptables:` Powerful tool for configuring firewall rules.

**Package Management:**

**Debian-based Distributions (e.g., Ubuntu):**

`apt-get update:` Update the package list.

`apt-get upgrade:` Upgrade installed packages.

`apt-get install package_name:` Install a package.

`apt-get remove package_name:` Remove a package (keeps configuration files).

`apt-get purge package_name:` Completely remove a package (including configuration files).

`apt-cache search keyword:` Search for packages.

`apt-cache show package_name:` Display package information.

`dpkg -i package.deb:` Install a package from a .deb file.

`dpkg -r package_name:` Remove a package.

`dpkg -l:` List all installed packages.

**Red Hat-based Distributions (e.g., CentOS):**

`yum update: `Update installed packages.

`yum install package_name:` Install a package.

`yum remove package_name:` Remove a package.

`yum search keyword:` Search for packages.

`yum info package_name:` Display package information.

`rpm -ivh package.rpm:` Install a package from an .rpm file.

`rpm -e package_name:` Remove a package.

`rpm -qa:` List all installed packages.

**Common for Both:**
`apt (Ubuntu) / yum (CentOS):` Package managers to manage software.

`snap:` Package manager for installing and managing snap packages.

`dnf:` Modern package manager replacing yum in newer Fedora distributions.

**Git and GitHub Cheat Sheet: Key Operations**
**Cloning a Repository:**
`git clone <repository_url>: `Clone a remote repository to your local machine.
**Basic Workflow:**
**Checking Status:**

`git status:` Check the status of your working directory and staged changes.
**Adding Changes:**

`git add <file>:` Stage a specific file for commit.

`git add . or git add -A:` Stage all changes for commit.

**Committing Changes:**

`git commit -m "Your commit message":` Commit staged changes with a message.
**Pushing Changes:**

`git push origin <branch>:` Push committed changes to a remote branch.
**Branching and Merging:**
**Creating and Switching Branches:**

`git branch:` List all branches.

`git branch <new_branch>:` Create a new branch.

`git checkout <branch>:` Switch to an existing branch.

**Merging Branches:**

`git merge <branch_to_merge>:` Merge changes from another branch into the current branch.
**Pulling Changes:**
`git pull origin <branch>:` Fetch and merge remote changes into your local branch.

**Inspecting History:**
`git log:` Display commit history.

`git log --oneline:` Display compact commit history.

`git diff:` Show differences between working directory and staging area.

`git diff --staged:` Show differences between staging area and last commit.

**Remote Repositories:**
`git remote -v:` List remote repositories.

`git remote add <name> <repository_url>:` Add a new remote repository.

`git remote remove <name>: `Remove a remote repository.

`git push origin -d <branch-name> :` Delete remote branch

**Undoing Changes:**
`git reset <file>:` Unstage changes from a file.

`git checkout -- <file>:` Discard changes in a file.

`git revert <commit>:` Create a new commit that undoes changes of a previous commit.

**Resetting Commits:**
`git reset --soft <commit>:` Move the branch pointer to a specific commit, keeping changes staged.

`git reset --mixed <commit> (default behavior):` Move the branch pointer and unstage changes, preserving changes in working directory.

`git reset --hard <commit>:` Move the branch pointer, unstage changes, and discard changes in working directory.

**Ignoring Files:**
Create a `.gitignore` file in the repository to list files and patterns to be ignored.
**Renaming and Deleting:**
`git mv <old_file_name> <new_file_name>:` Rename a file.

`git rm <file>:` Delete a file.

**Remote Collaboration:**
`git clone <repository_url>:` Clone a remote repository.

`git fetch:` Fetch changes from a remote repository.

`git pull origin <branch>:` Fetch and merge remote changes.

`git push origin <branch>:` Push changes to a remote branch.

**Removing Untracked Files:**
`git clean -n:` List untracked files that will be removed.

`git clean -f:` Remove untracked files from the working directory.

**Stashing Changes:**
`git stash:` Stash your changes (both staged and unstaged).

`git stash save "message":` Stash changes with a descriptive message.

**Listing Stashes:**
`git stash list:` List all stashes with their IDs and messages.
**Applying Stashes:**
`git stash apply:` Apply the most recent stash and keep it in the stash list.

`git stash apply stash@{n}:` Apply a specific stash by its index.

**Popping Stashes:**
`git stash pop:` Apply and remove the most recent stash.

`git stash pop stash@{n}:` Apply and remove a specific stash by its index.

**Dropping Stashes:**
`git stash drop stash@{n}:` Remove a specific stash by its index.

`git stash clear:` Remove all stashes.