Skip to content

Useful Ubuntu Commands

shamik edited this page Apr 25, 2024 · 6 revisions

Useful Ubuntu Commands

To configure a default Ubuntu editor

sudo update-alternatives --config editor

Environment variables

Checking and adding environment variables.

To print all environment variables

printenv

To print a specific environment variable(HOME)

printenv HOME
echo $HOME

To print a specific environment variable(PATH)

printenv PATH
echo $PATH

To print a multiple environment variables(HOME & PATH)

printenv HOME PATH

Adding a specific path to the $PATH environment variable

# replace my username with yours in the command below
export PATH="/home/shamik/.local/bin:$PATH"

To set an envrionment permanently

In order to configure a new environment variable to be persistent, we’ll need to edit the Bash configuration files. This can be done through three different files, depending on exactly how you plan to access the environment variable.

  • ~/.bashrc – Variables stored here will reside in the user’s home directory and are only accessible by that user. The variables get loaded any time a new shell is opened.
  • /etc/profile – Variables stored here will be accessible by all users and are loaded whenever a new shell is opened.
  • /etc/environment – Variables stored here are accessible system-wide.

Add it to ~/.bashrc, accessible only by the user

# replace my username with yours in the command below
export PATH="/home/shamik/.local/bin:$PATH"

Add it to /etc/profile, accessible to all users

# replace my username with yours in the command below
export PATH="/home/shamik/.local/bin:$PATH"

Add it to /etc/environment, accessible system-wide

# replace my username with yours in the command below
PATH="/home/shamik/.local/bin:$PATH"

Delete Multiple files without removing the directory

rm -r <path of the folder>

Error:argument list is too long

This happens because of the number of files being too many so the following will work:

find <path of the folder> -type f -exec rm {} +

Finding files with a specific file extension

find <path to dir> -type f ! \( -name "<file extension>" -o -name "<file extension>" \)
# find ./testing_metrics/ -type f ! \( -name "*.csv" -o -name "*.parquet" \) 

Finding files with a specific file extension and deleting the files

find <path to dir> -type f ! \( -name "<file extension>" -o -name "<file extension>" \) -delete
# find ./testing_metrics/ -type f ! \( -name "*.csv" -o -name "*.parquet" \) -delete

Zip a folder

zip –rj <zipped folder path> <path to the folder>

Adding new files to the zipped folder

zip –rju <zipped folder path> <path to the folder>

Zip a set of files

zip <zipped folder path> <file1> <file2> <file3> <file4>

Unzip file to current directory

unzip <file name>

Unzip file to a specific directory

unzip <file name> -d <path to the directory>

List all files in a zipped folder

unzip –Z <folder name>

Tar a dir

tar -cvzf <path/where/to/save/the/zipped.tar.gz> <path to dir>
# tar -cvzf roberta-large-iter2-v2.tar.gz roberta-large-iter2-V2/

Tar a given folder without it's absolute path; don't forget the "." at the end to specify the cd

tar –cvzf <path/where/to/save/the/zipped.tar.gz> -C <folder/path/> . 
# tar -cvzf Data/FS\ Data/original_models_threshold_analysis.tar.gz -C Data/FS\ Data/threshold_analysis/ .

Tar a given file without it's absolute path

tar -cvzf <path/where/to/save/the/zipped.tar.gz> -C <file path>
# tar -cvzf Repos/iTOP-semantic-apply-model/notebooks/Concepts_Filtered_df.tar.gz -C ~/Repos/iTOP-semantic-apply-model/notebooks/ Concepts_Filtered_df.csv

Tar a given file without it's absolute path with bzip compression instead of gzip

It compresses the file even more than gzip.

tar -cjvf <path/where/to/save/the/zipped.tar.bz2> -C <file path>
# tar -cjvf ~/Repos/iTOP-semantic-apply-model/notebooks/final_df.tar.bz2 -C ~/Repos/iTOP-semantic-apply-model/notebooks/ final_df.csv

Untar a tar.gz

tar -xvzf <tar file> -C <path to extract>
# tar -xvzf roberta-large-iter2-v2.tar.gz -C roberta-large-iter2-V2/

Downloading a file to a specific folder

wget -P </path/to/directory> <http://example.com/path/to/file>

Changing Ownership of a file

sudo chown <owner>:<group> <filepath> 
# sudo chown shamik:shamik abc.txt

List all available disks

sudo lsblk

Generally sda will be the boot disk and if you have only one disk, which can be attached then it will be sdb. However, if you have multiple disks, which can be attached it will be autoincremented to sdc,sdd,... In case you detach and then re-attach the disk then the disk name will be autoincremented too e.g., for sdb it will become sdc as there's only one disk.

To mount a particular disk

sudo mkdir /mnt/disks/<name of your choice>
sudo mount -o discard,defaults /dev/sdb /mnt/disks/<name of your choice>

Compress PDFs with Ghostscript

Adobe link

  1. Install Ghostscript with the command sudo apt install ghostscript.
  2. Once installed, you can use this command to compress PDF file sizes:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  1. In the command, replace output.pdf and input.pdf with your chosen filenames. The dPDFSETTINGS is where you’ll choose the file size. Change the suffix =/screen to suit your needs:
  • -dPDFSETTINGS=/screen — Low quality and small size at 72dpi.
  • -dPDFSETTINGS=/ebook — Slightly better quality but also a larger file size at 150dpi.
  • -dPDFSETTINGS=/prepress — High quality and large size at 300 dpi.
  • -dPDFSETTINGS=/default — System chooses the best output, which can create larger PDF files.
  1. Once you input your preferences, simply run the command. Your new compressed PDF will be saved in the same folder as the original.

Find a piece of text within multiple pdfs without opening them

find ./ -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "pattern"' \;
Clone this wiki locally