Bash getting the parent folder name from a bash defined variable

Problem

You have defined a variable in a bash script (ie MY_FOLDER) but you also want to dynamically get the parent folder (ie MY_FOLDER can have multiple values).

Solution

Use the dirname as in the following

MY_FOLDER=/home/user/first_folder/second_folder
MY_PARENT_FOLDER=$(dirname $MY_FOLDER)

echo $MY_FOLDER
echo $MY_PARENT_FOLDER

.......
/home/user/first_folder/second_folder
/home/user/first_folder

Removing a range of history lines from bash history

Problem

You would like to remove some lines from the bash history (ie using cut and paste with wrong values).

Solution

You can use the following, taken from the answer here

for i in {1..no_of_lines}; do history -d start_line; done

where start_line is the start of the lines you want to remove and no_of_lines is the number of lines you want to be removed.

Search for content in files in linux (recursively and case-independent)

Problem

You would like to find the files that contain some specific text, and would like to do it recursively (ie in a project folder), using something simpler than the find command.

Solution

You can use the following in your current top folder to search recursively, case-independent and by displaying the file number that the searched text appears, with the following:

grep -rin "TextToBeSearched" .

Errors were encountered while processing: linux-image-3.13.0-128-generic

Problem

You are trying to install/remove a package but you always get an error message about linux message as above:

Errors were encountered while processing:
 linux-image-3.13.0-128-generic

Solution

Try the following:

rm -rf /var/lib/dpkg/info/linux-image-3.13.0-128-generic.*
apt-get purge linux-image-3.13.0-128-generic

Bash script using default value for empty parameter

Problem

You have a bash script that accepts parameter(s) but you want to give a default value for a missing parameter.

Solution

For example you have a script that accepts a parameter with the year and month (ie 201703), but you want to give it a default of two months ago if the parameter is missing.

#!/bin/bash

LM=$(date -d '2 month ago' +%Y%m)
YEARMONTH=${1:-${LM}}
echo $YEARMONTH