Generate random string for various use case

Some times I need random string, for example to use as email seperator or to use in some API. One way is to use tools like /dev/[u]random or od and other such. But they seem cubersome after I figured this out.

openssl rand <length>
openssl rand 10

This alone without some parameters is not interesting thoug. You can use ‘-base64’ or ‘-hex’ to select the encoding.

So if you execute the above you will get something like this

$ openssl rand -hex 10
591e96110af8aecb760b

$ openssl rand -base64 10
TnuUXuiZXv2ktw==

image ordering by Original Date Time using bash script

Here is the script:

#!/bin/bash -
#===============================================================================
#
#          FILE: imgOrg.sh
#
#         USAGE: ./imgOrg.sh
#
#   DESCRIPTION:
#
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: Amit Agarwal (aka)
#      REVISION:  ---
#===============================================================================

for i in *
do
    if [[ $(file $i) == *image* ]] 
    then
        echo "Image file is :: $i"
        dir=$( exiftool -s -DateTimeOriginal $i | awk -F':' '{print $2"/"$3}')
        mkdir -p $dir
        cp $i $dir/
    else
        echo "Excluding $i"
    fi
done

 

Script looks at the DateTimeOriginal parameter in output of exiftools ( which is basically the date and time image was taken) and then puts the images in the folder in format YYYY/MM.

Get count of lines in scripts (shell)

If you have tried to get the count of lines in file, the you would know about “nl” or “wc -l”. But as you are aware these give you number of lines with other details as well and you need to post process the number to make sure that you have only number and nothing else. In such cases, it is useful to use the count feature of grep and here is a shorthand to get the count of lines in any shell script:

lines=$(grep -c . <filename>)