DEV Community

Cover image for Bash-n-Dash: Fast-Track Your Way to Shell Mastery
Jimmy McBride
Jimmy McBride Subscriber

Posted on • Originally published at jimmymcbride.dev

Bash-n-Dash: Fast-Track Your Way to Shell Mastery

Welcome back, fellow shell wizards! 🧙‍♂️ Now that we’ve got you comfortable with the basics of the terminal, it’s time to really dig into the core commands you’ll be using on a daily basis. These commands are like your spellbook—master them, and you’ll be able to conjure up powerful actions with just a few keystrokes. We’ll cover the most essential commands for file manipulation, text manipulation, and permissions. And, because you’re on your fast track to shell mastery, I’ll show you how to combine them to level up your workflow.


File Manipulation Commands

File manipulation is the bread and butter of your command-line experience. You’ll be moving, copying, and deleting files constantly, so these commands will quickly become second nature.

1. Copy Files (cp)

Want to make a copy of a file? Easy:

cp original.txt copy.txt
Enter fullscreen mode Exit fullscreen mode

This creates a duplicate of original.txt called copy.txt. If you’re copying a directory and its contents, use the -r flag for recursive:

cp -r source_directory/ destination_directory/
Enter fullscreen mode Exit fullscreen mode

2. Move/Rename Files (mv)

Need to move a file? The mv command is your go-to. This moves file.txt to a new directory:

mv file.txt /path/to/destination/
Enter fullscreen mode Exit fullscreen mode

Want to rename a file? The mv command handles that too:

mv oldname.txt newname.txt
Enter fullscreen mode Exit fullscreen mode

One command, two purposes—how efficient is that? 😉

3. Delete Files (rm)

Be careful with this one! Deleting files is easy with rm, but remember—there’s no trash bin. Once it’s gone, it’s gone for good.

To delete a file:

rm file.txt
Enter fullscreen mode Exit fullscreen mode

To delete a directory and all its contents, use the recursive -r flag (and maybe take a deep breath before hitting Enter):

rm -rf folder_name/
Enter fullscreen mode Exit fullscreen mode

Use this command carefully, especially when you’re working with important files. Triple-check your target!


Text Manipulation Commands

Next up: working with text files. Whether you’re extracting info or transforming text, these commands are essential to any shell wizard's toolkit.

1. View File Contents (cat)

The cat command lets you quickly view the contents of a file:

cat file.txt
Enter fullscreen mode Exit fullscreen mode

It’s simple, but when combined with other commands (like grep), it becomes way more powerful.

2. Search Inside Files (grep)

Need to find a specific line of text in a file? grep is like a magical search tool for text files:

grep "search_term" file.txt
Enter fullscreen mode Exit fullscreen mode

It’ll search through the file and show you all the lines containing "search_term". Combine this with cat to search through a whole directory of files:

cat *.txt | grep "search_term"
Enter fullscreen mode Exit fullscreen mode

3. Stream Editing (sed)

Want to replace specific text within a file? sed (stream editor) is your best friend for quick, in-place edits. Let’s say you want to replace “hello” with “goodbye”:

sed 's/hello/goodbye/g' file.txt
Enter fullscreen mode Exit fullscreen mode

This command will output the updated content to the terminal. If you want to save the changes back to the file, use the -i flag:

sed -i 's/hello/goodbye/g' file.txt
Enter fullscreen mode Exit fullscreen mode

4. Awkwardly Powerful (awk)

Don’t be put off by awk’s intimidating syntax—once you get used to it, it’s a powerhouse for processing and analyzing text files. Here’s an example that prints the first column of a file:

awk '{print $1}' file.txt
Enter fullscreen mode Exit fullscreen mode

There’s a whole lot you can do with awk, but we’ll keep it simple for now.


Permissions and File Ownership

In the world of Linux, every file and directory has a set of permissions and an owner. Understanding how to manage these is key to keeping your system secure and organized.

1. Change File Permissions (chmod)

Let’s break this down: permissions determine who can read, write, or execute a file. To view file permissions, use:

ls -l
Enter fullscreen mode Exit fullscreen mode

The output will look something like this:

-rw-r--r-- 1 user group 4096 Sep 16 12:34 file.txt
Enter fullscreen mode Exit fullscreen mode

Here, the first part (-rw-r--r--) represents the permissions:

  • The owner can read and write (rw).
  • The group and others can only read (r--).

To change permissions, use chmod. If you want to give the owner execute permissions, for example:

chmod u+x file.txt
Enter fullscreen mode Exit fullscreen mode

You can also use numeric mode (e.g., 755):

chmod 755 file.txt
Enter fullscreen mode Exit fullscreen mode

2. Change File Ownership (chown)

The chown command is used to change the owner of a file. Here’s how you’d give ownership of file.txt to a user named newowner:

chown newowner file.txt
Enter fullscreen mode Exit fullscreen mode

You can also change both the owner and the group:

chown newowner:newgroup file.txt
Enter fullscreen mode Exit fullscreen mode

Combining Commands

Now that you’ve got the basics, let’s talk about combining these commands to work faster and smarter. One of the best things about the shell is how you can pipe commands together to create powerful one-liners.

For example, here’s how to search for a word in all .txt files and display the results with line numbers:

grep -n "search_term" *.txt
Enter fullscreen mode Exit fullscreen mode

Or, if you want to search, replace, and save changes in multiple files:

grep -l "old_text" *.txt | xargs sed -i 's/old_text/new_text/g'
Enter fullscreen mode Exit fullscreen mode

Wrapping Up

By now, you’ve learned the essentials of file manipulation, text processing, and managing permissions. These commands are like the spells you’ll use every day in your shell wizardry. Once you’ve mastered them, you’ll be able to fly through tasks that would take ages with a graphical interface.

In the next part of this series, we’ll dive even deeper into shell scripting and automating your workflow. Until then, keep practicing—shell mastery is all about repetition and building your muscle memory.


Join the Community!

If you’re into coding, Linux, and just love being around people who want to learn, grow, and help each other out, come hang out with us on Discord! It’s a community of like-minded folks who share tips, talk shop, and support each other on our coding journeys. Whether you're a beginner or a seasoned pro, there's a place for you.

Click here to join the conversation!

Top comments (2)

Collapse
 
drazenbebic profile image
Drazen Bebic

Love it! I would really love a deep-dive into awk itself. Like you said, it's a powerhouse and I feel like I could do so much more with it but I haven't bothered to learn it properly (yet!).

One thing I would add to grep is the --color flag. It can help immensely when looking for something very specific in a place with a lot of lines of text/code.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I've never used the color flag with grep! Very cool! I have a deep dive for awk and sed planned! I feel like this blog would have been way too long of I gave them the attention they needed, so I'm going to try and have a dedicated blog to give them the spotlight they deserve. Idk if I'm going to do them together or separate yet, but we'll see!