Not every task requires a graphical user interface. Often it is quicker and more efficient to simply type a command. Command line tools allow you to perform powerful operations with just a few keystrokes and make it possible to automate repetitive tasks. Below is a selection of tools that I find particularly useful. All of them are free and open-source.
Bash
Here are some basic commands for the linux shell:
cd ~/ (change directory)
pwd (print working directory)
ls (list files and directories)
tree (display content in tree like format)
mkdir name (create new directory)
rm -r name (delete file or directory)
mv old new (move file or directory)
cp old new (copy file or directory)
top (display system information)
-d seconds (refresh rate)
u name (only for user name)
du -sh (display disk usage)
uptime -p (how long is the system running)
clear (clear terminal)
ssh (remote login)
scp (copy file to other computer)
command & (runs command in background)
ctrl+z (pause running job)
bg (continue running in background)
fg (continue running in terminal)
jobs (lists running jobs)
ImageMagick
ImageMagick can convert and resize images.
magick input_image.jpg -resize 300x output_image.webp
we can convert a SVG to a png
magick -background none -size 64x64 input.svg output.png
or combine multiple png files to create a .ico file
magick icon_small.png icon_medium.png icon_large.png icon.ico
ExifTool
The metadata is ExifTool can be used to modify the metadata of an image.
exiftool image.jpg
But we are more interested to remove it
exiftool -all:all= -r -overwrite_original image.jpg
FFmpeg
FFmpeg can be used to convert audio and video files.
ffmpeg -i input.mp3 -vn -acodec copy -ss 00:00:10 -to 00:00:30 output.mp3
wget
This will download the entire website (including css files).
wget -mkE www.example.com
wget --user= --ask-password www.example.com