-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathremove.bash
More file actions
123 lines (107 loc) · 2.69 KB
/
Copy pathremove.bash
File metadata and controls
123 lines (107 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
function optFunc () {
confirm=false
verbose=false
recursive=false
while getopts :vir opt
do
case $opt in
i) confirm=true;;
v) verbose=true;;
r) recursive=true;;
*) echo Bad Option - $OPTARG exit 1;;
esac
done
}
function getInode () {
inode=$(ls -li $fileName | cut -d" " -f1)
echo $inode
}
function getNewFileName () {
newFileName=$baseFileName\_$(getInode)
echo $newFileName
}
function getFileLocationPath () {
fileLocationPath=$(readlink -f $fileName)
echo $fileLocationPath
}
function getRestoreFileName () {
restoreFileName=$(getNewFileName):$(getFileLocationPath)
echo $restoreFileName
}
function removeFile () {
baseFileName=$(basename $fileName)
if [ $fileName -ef ~/project/remove ]
then
echo Attempting to delete remove - operation aborted
exit 1
elif [ -f $fileName ]
then
# If -i is selected ask the user for confimation before removal
if $confirm
then
while true; do
read -p "rm: remove regular file \`file\'? y/n: " yn
case $yn in
[Yy]* ) getRestoreFileName >> ~/.restore.info;
mv $fileName ~/deleted/$(getNewFileName);
if $verbose
then
echo $baseFileName removed
fi; break;;
[Nn]* ) exit;;
* ) echo "Please answer y or n.";;
esac
done
else
getRestoreFileName >> ~/.restore.info
mv $fileName ~/deleted/$(getNewFileName)
if $verbose
then
echo $baseFileName removed
fi
fi
elif [ -d $fileName ]
then
echo remove: cannot remove $fileName: Is a directory
exit 1
else
echo remove: cannot remove $fileName: No such file or directory
exit 1
fi
}
#handles options
optFunc $*
shift $[OPTIND-1]
mkdir -p ~/deleted
touch ~/.restore.info
if [ $# -eq 0 ]
then
echo No filename provided: Try remove \<filename\>
exit 1
else
#Handles removing multiple files at once
if $recursive
then
for i in $*
do
file=$i
for fileName in $(find $file)
do
if [ -f $fileName ]
then
removeFile
fi
done
rm -r $file
if $verbose
then
echo $file removed
fi
done
else
fileName=$1
removeFile
fi
fi
exit 0