Bash tips and tricks
Updated:
Edit: Fix some typos
This article should provide some tips and tricks for bash and command line in general. It's part sharing knowledge of things I use a lot, and part saving things for later I might use some day and I don't think I'll remember. I'm planning to slowly expand this article with more things, as I remember them or find something new.
Content:- History
- Files and Directories
- Misc. bash shortcuts
History
history
command is quite useful. Especially if you use terminal a lot.
List last [10] commands
If you want to list last 10 commands, you can use history 10
(mind you, this will include history 10
itself, as it's the last command in ~/.bash_history
file. Change the number to whatever number you desire.
Reuse last command
If you want to use the same command you've just used, you can use your arrow key, or !!
.
Advantage of using !!
is that you can use regexp to substitute parts of the command.
!!:s/[what you want to change]/[to what you want it to change]/
Note: Great thing about !!
is that if a command fails, because you forgot to use sudo
, you can write sudo !!
and run it again.
Note: If you just want to re-run the last command, you can also use a shortcut ALT+.
Search your history
This is a shortcut. You can use CTRL+R to search your bash history.
Clear history
If you need to clear history (not the same as clear
command which clears the screen) for whatever reason, remember history -c
.
Files and directories
Reading files
tail
tail file
is a command that by default outputs last 10 lines of a file (it's tail).
You can use arguments, such as -n 24
to print last 24 files, or -n +7
to get all lines after 7th (including) line.
What I use a lot is tail -f file
, which appends data as the file grows.
Quite helpful with logs.
tac
tac
is essentially reverse cat command, where it outputs a file last line first.
Create nested directories
Example: You want to create ~/a/b/c/d
, but there's no directory a
. If you use mkdir ~/a/b/c/d/
, you will get an error telling you so.
Use -p
flag to create all the directories in the path. That would be mkdir -p ~/a/b/c/d
and directories a
, b
, c
, and d
will be created.
Change extension of files easily
If you're changing extension of a file, it can get annoying with long names.
The most obvious way would be mv file.abc file.xyz
. However, you could also use mv file{abc,xyz}
, which does the same job.
Optimise images
Image files can take a lots of space on your hard drive. Let's see how we could make them smaller. Optimisation won't work every time, sometimes the output file will be bigger, however on average you can save some space.
Optimise png files
We will use optipng
, first we have to download it. Run dnf install optipng
(or equivalent on your system, for example apt-get install optipng
) with root privileges (sudo
if you're not logged in as root)
Run optipng FileToOptimise.png
You can run optipng ./*.png
for all png images in your directory.
Optimise jpg files
We will use jpegoptim
, make sure it's installed.
Run jpegoptim FileToOptimise.jpg
or jpegoptim FileToOptimise.jpeg
dependinding on its extension.
You can run jpegoptim ./*.jpg
for all jpg images in your directory. Alternatively run jpegoptim ./*.jpeg
for all images with jpeg extension in your directory.
Optimise gif files
Warning: Reducing colours will degrade quality of the image!
We will use gifsicle
which needs ffmpeg
. dnf install gifsicle
and if you don't have ffmpeg
installed yet, install it, too. dnf install ffmpeg
You can compress gif files by reducing (limiting) colours in the file. This will result in a smaller file, but also fewer colours (reduced quality). We can limit colours to 256.
gifsicle -i original.gif -O3 --colors 256 -o smallerGIF.gif
Misc. shortcuts
- ALT+. - mentioned above, gives you the last used command
- CTRL+R - mentioned above, search your bash history.
- CTRL+← - move by one word to the left
- CTRL+→ - move by one word to the right
- CTRL+U - cut everything in front of your cursor
- CTRL+K - cut everything after your cursor
13/01/24
see you, space cowboy