# Hide/un-hide directory and open directory based on argument

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"
input=""
result=""

basic()
{
if [ -d "$DIR" ] then clear mv$DIR $DIR2 elif [ -d "$DIR2" ]
then
echo -n ": "
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 ": "
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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


### 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.

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