Bash Commands That Save Me Time and Frustration
Here’s a list of bash commands that stand between me and insanity.
Bash Commands That Save Me Time and Frustration
Here’s a list of bash commands that stand between me and insanity.
This article will be accompanied by the following github repository which will contain all the commands listed as well as folders that demonstrate before and after usage!
The readme for this git repo will provide a much more condensed list… whereas this article will break up the commands with explanations… images & links!
I will include the code examples as both github gists (for proper syntax highlighting) and as code snippets adjacent to said gists so that they can easily be copied and pasted… or … if you’re like me for instance; and like to use an extension to grab the markdown content of a page… the code will be included rather than just a link to the gist!
Here’s a Cheatsheet:
Getting Started (Advanced Users Skip Section):
✔ Check the Current Directory ➡ pwd
:
pwd
:On the command line, it’s important to know the directory we are currently working on. For that, we can use pwd
command.
✔ Display List of Files ➡ ls
:
ls
:To see the list of files and directories in the current directory use ls
command in your CLI.
To show the contents of a directory pass the directory name to the
ls
command i.e.ls directory_name
.Some useful
ls
command options:-
OptionDescriptionls -alist all files including hidden file starting with ‘.’ls -llist with the long formatls -lalist long format including hidden files
✔ Create a Directory ➡ mkdir
:
mkdir
:We can create a new folder using the mkdir
command. To use it type mkdir folder_name
.
I created a cli-practice directory in my working directory i.e. Desktop directory.
✔ Move Between Directories ➡ cd
:
cd
:It’s used to change directory or to move other directories. To use it type cd directory_name
.
Changed my directory to the cli-practice directory. And the rest of the tutorial I’m gonna work within this directory.
✔ Parent Directory ➡ ..
:
..
:We have seen cd
command to change directory but if we want to move back or want to move to the parent directory we can use a special symbol ..
after cd
command, like cd ..
✔ Create Files ➡ touch
:
touch
:We can create an empty file by typing touch file_name
. It's going to create a new file in the current directory (the directory you are currently in) with your provided name.
Now open your hello.txt file in your text editor and write Hello Everyone! into your hello.txt file and save it.
✔ Display the Content of a File ➡ cat
:
cat
:We can display the content of a file using the cat
command. To use it type cat file_name
.
✔ Move Files & Directories ➡ mv
:
mv
:To move a file and directory, we use mv
command.
By typing mv file_to_move destination_directory
, you can move a file to the specified directory.
By entering mv directory_to_move destination_directory
, you can move all the files and directories under that directory.
Before using this command, we are going to create two more directories and another txt file in our cli-practice directory.
mkdir html css touch bye.txt
✔ Rename Files & Directories ➡ mv
:
mv
:mv
command can also be used to rename a file and a directory.
You can rename a file by typing mv old_file_name new_file_name
& also rename a directory by typing mv old_directory_name new_directory_name
.
✔ Copy Files & Directories ➡ cp
:
cp
:To do this, we use the cp
command.
You can copy a file by entering
cp file_to_copy new_file_name
.
You can also copy a directory by adding the
-r
option, likecp -r directory_to_copy new_directory_name
.
The -r
option for "recursive" means that it will copy all of the files including the files inside of subfolders.
✔ Remove Files & Directories ➡ rm
:
rm
:To do this, we use the rm
command.
To remove a file, you can use the command like
rm file_to_remove
.
To remove a directory, use the command like
rm -r directory_to_remove
.
✔ Clear Screen ➡ clear
:
clear
:Clear command is used to clear the terminal screen.
✔ Home Directory ➡ ~
:
~
:The Home directory is represented by ~
. The Home directory refers to the base directory for the user. If we want to move to the Home directory we can use cd ~
command. Or we can only use cd
command.
MY COMMANDS:
1.) Recursively unzip zip files and then delete the archives when finished:
here is a folder containing the before and after… I had to change folder names slightly due to a limit on the length of file-paths in a github repo.
2.) Install node modules recursively:
3.) Clean up unnecessary files/folders in git repo:
In Action:
The following output from my bash shell corresponds to the directory:
which was created by running the aforementioned commands in in a perfect copy of this directory:
…..below is the terminal output for the following commands:
After printing the working directory for good measure:
The above command deletes empty files recursively starting from the directory in which it was run:
The command seen below deletes empty folders recursively starting from the directory in which it was run:
The resulting directories….
The command seen below deletes .git folders as well as .gitignore, .gitattributes, .gitmodule files
The command seen below deletes most SECURITY, RELEASE, CHANGELOG, LICENSE, CONTRIBUTING, & HISTORY files that take up pointless space in repo’s you wish to keep exclusively for your own reference.
!!!Use with caution as this command removes the attribution of the work from it’s original authors!!!!!
4.) Generate index.html file that links to all other files in working directory:
In Action:
I will use this copy of my Data Structures Practice Site to demonstrate the result:
here is a link to and photo of the resulting html file:
index.html _CONTENT/DS-n-Algos/_quirky-meninsky-4181b5.netlify.app
5.) Download all links to a files of a specified extension on a user provided (url) webpage:
The result is stored in this directory:
6.)Recursively remove lines of text containing the string badFolder from files in the working directory.
As an example I will run this command on a file containing the text:
I modified the command slightly to apply only to files called ‘result.md’:
The result is :
the test.txt and result.md files can be found here:
7.) Execute command recursively:
Here I have modified the command I wish to run recursively to account for the fact that the ‘find’ command already works recursively, by appending the -maxdepth 1 flag…
I am essentially removing the recursive action of the find command…
That way, if the command affects the more deeply nested folders we know the outer RecurseDirs function we are using to run the _find/pandoc_** line once in every subfolder of the working directory… is working properly!**
The results of said operation can be found in the following directory
In Action:
🢃 Below 🢃
The final result is:
If you want to run any bash script recursively all you have to do is substitue out line #9 with the command you want to run once in every sub-folder.
TBC….
Here are some of the other commands I will cover in greater detail… at a later time:
9. Copy any text between <script> tags in a file called example.html to be inserted into a new file: out.js
10. Recursively Delete node_modules folders
11. Sanatize file and folder names to remove illegal characters and reserved words.
12. Start postgresql in terminal
13. Add closing body and script tags to each html file in working directory.
14. Batch Download Videos
15. Change File Extension from ‘.txt’ to .doc for all files in working directory.
16. Recursivley change any file with extension .js.download to .js
17. Copy folder structure including only files of a specific extension into an ouput Folder
Discover More:
Part 2 of this series:
By Bryan Guner on June 29, 2021.
Exported from Medium on August 31, 2021.
Last updated