2
\$\begingroup\$

This code checks to make sure a directory is hidden and if not hides it. Then if hidden it will prompt for password and if password matches it will un-hide it. There is also an argument to open un-hidden directory too.

#! /bin/bash

DIR="path/untitled"
DIR2="path/.untitled"
password="Z2FsdGVkX18vy4f4QRB3qnb5vIWR0x+tlZmdAmPxX8Y="
input=""
result=""

basic()
{
    if [ -d "$DIR" ]
    then
        clear
        mv $DIR $DIR2
    elif [ -d "$DIR2" ]
    then
        echo -n ": "
        read -s input
        result=$(echo "$password"| openssl enc -aes-128-cbc -a -d -salt -pass pass:wtf)

        if [ "$result" = "$input" ]
        then
            clear
            mv $DIR2 $DIR
        else
            clear
        fi
    else
        :
    fi
exit
}

opendir()
{
    if [ -d "$DIR" ]
    then
        clear
        mv $DIR $DIR2
    elif [ -d "$DIR2" ]
    then
        echo -n ": "
        read -s input
        result=$(echo "$password"| openssl enc -aes-128-cbc -a -d -salt -pass pass:wtf)

        if [ "$result" = "$input" ]
        then
            clear
            mv $DIR2 $DIR
            open $DIR
        else
            clear
        fi
    else
        :
    fi
exit
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if [ $# -eq 0 ]
then
    basic
elif [ $# -eq 1 ]
then
    if [ "$1" = "-o" ]
    then
       opendir
    else
        :
    fi  
fi
clear
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End of File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\$\endgroup\$
2
\$\begingroup\$

Avoid echo -n

Avoid using any flags of echo, like this, as it's not portable:

    echo -n ": "

This is more portable, and produces the same output:

    printf ": "

Get rid of empty statements

These empty else statements are pointless, I suggest to remove them:

else
    :

Simplify

This can be simplified:

    if [ "$result" = "$input" ]
    then
        clear
        mv $DIR2 $DIR
    else
        clear
    fi

Since in both branches of the if-else you clear, this is the same:

    clear
    if [ "$result" = "$input" ]
    then
        mv $DIR2 $DIR
    fi

Quote variables in paths

Typically you should double-quote variables, especially when used as paths. So instead of this:

        mv $DIR2 $DIR

This is recommended and safer:

        mv "$DIR2" "$DIR"

Avoid duplicated code

The code in opendir and basic is almost the same. The only difference I see is the content of the "$result" = "$input" conditions. Consider using a single function with a flag to determine the behavior inside the main conditional.

\$\endgroup\$
  • \$\begingroup\$ Thank you for the suggestion. I updated my code to reflect them. When you get time please take a look at the new code. \$\endgroup\$ – J. Doe Sep 2 '15 at 15:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.