I've made this script, but I have difficulties to write the code for this situation: in the trashcan there should be no file with the same name; in which case they should be renamed.
How can I solve?
Here is my code:
#!/bin/bash
help() {
    echo "Options:"
    echo "\"safe-rm pathname\" to delete, where the pathname can be absolute or relative"
echo "\"safe-rm --recover original pathname\" (including the /) to recover and restore a file or a directory in the original position"
    echo "\"safe-rm --list\" to lists the trashcan's content"
    echo "\"safe-rm --search\" to search a file in the trashcan"
    echo "\"safe-rm --delete-older-than\" to delete files older than certain days"
}
delete() {
    if [ ${PARAM1:0:1} = "/" ]; then
        echo "You have insert an absolute pathname"
        mkdir -p $(dirname $TRASH$PARAM1)
        mv $PARAM1 $TRASH$PARAM1
    else
        echo "You have insert a relative pathname"
        mkdir -p $(dirname $TRASH$(pwd)/$PARAM1)
        mv $PARAM1 $TRASH$(pwd)/$PARAM1
    fi
}
readonly TRASH=$HOME/.Trash;
readonly PARAM1=$1;
readonly PARAM2=$2;
mkdir -p $TRASH;
case "$PARAM1" in
    "")
        help    
    ;;
    --list)
        echo "Trashcan's content"
        cd $TRASH
        find *
    ;;
    --delete-older-than)
        echo "Delete the files older than $PARAM2 days"
        find $TRASH -mtime +$PARAM2 | xargs rm -rf
    ;;
    --search)
        echo "Search $PARAM2 among the trashcan's files"
        cd $TRASH
        find -name *$PARAM2*
    ;;
    --recover)
        echo "Recover the file/directory in the original position"
        mkdir -p $(dirname $PARAM2)
        mv $TRASH$PARAM2 $PARAM2
    ;;
    *) 
        echo "Security delete a file/directory"
        delete
    ;;
esac
exit 0
 
                        
Quick and dirty solution:
Also please note that you have to quote every variable in your script when it is passed as a parameter.
if [ ${PARAM1:0:1} = "/" ]; thenmust be changed to if[ "${PARAM1:0:1}" = "/" ]; thenor even betterif [[ ${PARAM1:0:1} = "/" ]]; thenmkdir -p $(dirname $TRASH$PARAM1)tomkdir -p "$(dirname "$TRASH$PARAM1")"And so on...