alias for listing files with assume unchanged status
[dotfiles] / .bash_function
1 #!/bin/sh
2 # my weird function file
3
4 cdls() { cd "$@" && clear && ls; }
5
6
7 cl(){
8 if [ -d "$1" ]; then
9 cd "$1"
10 clear
11 ls -la
12 else
13 cd $HOME
14 clear
15 ls
16 fi
17 }
18
19 mkdircd(){
20 mkdir -p "$@" && eval cd "\"\$$#\"";
21 }
22
23 my_emacs_servers(){
24 local serverdir="${TMPDIR:-/tmp}/emacs${UID}"
25 local -a servers
26 for file in ${serverdir}/*; do
27 if [[ -S ${file} ]]; then
28 servers+=("${file##*/}")
29 fi
30 done
31
32 echo "${servers[@]}"
33 }
34
35 my_fib(){
36 x=${1:-1}
37 y=${2:-1}
38 echo $(($x + $y))
39 fib $y $(($x + $y))
40 }
41
42
43 my_recursiveFibo() {
44 local start=0;
45 n="$1";
46 inc="$2";
47 while ((n < $inc));
48 do
49 result=$((start+n));
50 start=$n;
51 n="$result";
52 printf '%s ' "$result";
53 done;
54 }
55
56 #recursivFibo 1 2048
57
58 my_err() {
59 echo "[$(date + '%Y-%m-%dT%H:%M:%S%z')]: $@ >&2"
60 }
61
62 my_test() {
63 echo 'test';
64 }
65
66 my_test2(){
67 if my_test; then
68 my_err "unable to my_test"
69 exit "${E_DID_NOTHING}"
70 fi
71 }
72
73 my_pretty_print_json() {
74 python -m json.tool
75 }
76
77 my_not_start_service_on_boot(){
78 # service to not start on boot
79 local service=$1;
80 update-rc.d $service disable;
81 }
82
83 my_install_new_font(){
84 #sudo fc-cache -v -f
85 fc-cache -v -f;
86 }
87
88 my_launch_eth0(){
89 # set eth0 iface up
90 sudo ip link set eth0 up;
91 # ask for an ip via dhcp
92 sudo dhclient eth0;
93 }
94
95 #function to show the current branch
96 my_show_current_branch(){
97 git rev-parse --abbrev-ref HEAD
98 }
99
100 my_pdf_nbpages(){
101 local filename=$1;
102
103 echo $(pdftk $filename dump_data \
104 | grep -i numberofpages \
105 | awk '{print $2}');
106 }
107
108 my_pdf_explosion() {
109 local filename=$1;
110 echo $(pdftk $filename burst);
111 }
112
113 my_pdfs_to_xml() {
114 for i in $(ls | grep .pdf$); do
115 pdftohtml -xml $i;
116 done;
117 }
118
119 # function to show one line of file
120 my_xline_of_file(){
121 local line_number=$1;
122 local filename=$2;
123 local p='p';
124
125 echo $(sed -n $line_number$p $filename);
126 }
127
128 # function to extract in one command
129 my_xtract() {
130 local filename=$1;
131
132 if is_file $filename ; then
133 case $filename in
134 *.tar.xz) tar xvfJ $filename ;;
135 *.tar.bz2) tar xvjf $filename ;;
136 *.tar.gz) tar xvzf $filename ;;
137 *.bz2) bunzip2 $filename ;;
138 *.rar) unrar x $filename ;;
139 *.gz) gunzip $filename ;;
140 *.tar) tar xvf $filename ;;
141 *.tbz2) tar xvjf $filename ;;
142 *.tgz) tar xvzf $filename ;;
143 *.zip) unzip $filename ;;
144 *.Z) uncompress $filename ;;
145 *.7z) 7z x $filename ;;
146 *) echo "'$filename' cannot be extracted via extract" ;;
147 esac
148 else
149 echo "'$filename' is not a valid file"
150 fi
151 }
152
153 # function to list the content of an archive
154 my_list_archive_content() {
155 local filename=$1;
156
157 if is_file $filename ; then
158 case $filename in
159 *.tar.xz) tar tvfJ $filename ;;
160 *.tar.bz2) tar tvjf $filename ;;
161 *.tar.gz) tar tzvf $filename ;;
162 *.bz2) bunzip2 $filename ;;
163 *.gz) gunzip -l $filename ;;
164 *.tar) tar tvf $filename ;;
165 *.tbz2) tar tvjf $filename ;;
166 *.tgz) tar tvzf $filename ;;
167 *.zip) unzip -l $filename ;;
168 *.Z) uncompress -l $filename ;;
169 *.7z) 7z l $filename ;;
170 *) echo "content of '$filename' cannot be listed :(" ;;
171 esac
172 else
173 echo "'$filename' is not a valid file"
174 fi
175 }
176
177 # dump a mysql database
178 my_dump_mysql_db() {
179 local database=$1;
180
181 echo "dumping database '$database' ..."
182 mysqldump -u patrick -ppatrick $database > $databse_dump_$(date +%m%d%Y).sql
183
184 }
185
186 my_dump_mysql_table() {
187 local database=$1;
188 local table=$2;
189
190 echo "dumping table '$table' from database '$database' ..."
191 mysqldump -u patrick -ppatrick $database $table > $table_dump_$(date +%m%d%Y).sql
192 }
193
194 my_uploadfile() {
195 local filename=$1
196 local ftp_url=$2;
197 local user=$3;
198 local password=$4;
199
200 echo "upload of '$filename' to '$ftp_url' by '$user' ..."
201 #curl -T $filename ftp://dev.africafilms.tv/movies/ --user dev.africafilms.tv:dev/aftv/DAK2602
202 curl -T $filename $ftp_url --user $user:$password
203 }
204
205 my_find_string() {
206 local string_to_find=$1;
207 local directory=$2;
208
209 echo "recursive looking for the string '$string' inside '$directory' directory"
210 grep -l -R -i -r $string_to_find $directory;
211 }
212
213 my_find_string2() {
214 local string_to_find=$1;
215 local directory=$2;
216
217 echo "recursive looking for the string '$string' inside '$directory' directory"
218 find $directory | xargs grep $string -sl;
219
220 }
221 # extract md5 hash from a string
222 my_xmd5() {
223 local string=$1;
224
225 echo "md5 hash of '$string' is: "
226 echo -n "$sring" | md5sum;
227 }
228
229 # Creates an archive (*.tar.gz) from given directory.
230 my_maketar() {
231 local directory=$1;
232
233 tar cvzf "${directory%%/}.tar.gz" "${directory%%/}/";
234 }
235
236 # Create a ZIP archive of a file or folder.
237 my_makezip() {
238 local file=$1;
239
240 zip -r "${file%%/}.zip" "$file";
241 }
242
243 # Make your directories and files access rights sane.
244 my_sanitize() { chmod -R u=rwX,g=rX,o= "$@" ;}
245
246 # Get IP adress on ethernet.
247 my_ip() {
248 local my_ip=$( /sbin/ifconfig eth0 \
249 | awk '/inet/ { print $2 } ' \
250 | sed -e s/addr://);
251 local my_gtw="gtw: "$(netstat -nr | awk '{print $2}' | sed -n 3p);
252 echo ${my_ip:-"Not connected"}
253 echo ${my_gtw:-"Not connected"}
254 }
255
256 # Get current host related info.
257 my_host_info() {
258 echo -e "\nYou are logged on ${BRed}$HOST"
259 echo -e "\n${BRed}Local IP Address :$NC" ; my_ip
260 echo -e "\n${BRed}Current date :$NC " ; date; calendar | head -1
261 echo -e "\n${BRed}Additionnal information:$NC " ; uname -a
262 echo -e "\n${BRed}Users logged on:$NC " ; \
263 w -hs \
264 | cut -d " " -f1 \
265 | sort \
266 | uniq
267 echo -e "\n${BRed}Machine stats :$NC " ; uptime
268 echo -e "\n${BRed}Memory stats :$NC " ; free -h
269 echo -e "\n${BRed}Diskspace :$NC " ; mydf / $HOME
270 echo -e "\n${BRed}Open connections :$NC "; netstat -pan --inet;
271 echo
272 }
273
274 # Pretty-print of 'df' output. Inspired by 'dfc' utility.
275 my_df() {
276 local fs=$1;
277
278 for fs ; do
279
280 if [ ! -d $fs ]
281 then
282 echo -e $fs" :No such file or directory" ; continue
283 fi
284
285 local info=( $(command df -P $fs | awk 'END{ print $2,$3,$5 }') )
286 local free=( $(command df -Pkh $fs | awk 'END{ print $4 }') )
287 local nbstars=$(( 20 * ${info[1]} / ${info[0]} ))
288 local out="["
289 for ((j=0;j<20;j++)); do
290 if [ ${j} -lt ${nbstars} ]; then
291 out=$out"*"
292 else
293 out=$out"-"
294 fi
295 done
296 out=${info[2]}" "$out"] ("$free" free on "$fs")"
297 echo -e $out
298 done
299 }
300
301 # create_vm(){
302 # debootstrap --verbose \
303 # --variant=minbase \
304 # --arch=i386 --include ifupdown,locales,libui-dialog-perl,dialog,dhcp3-client,netbase,net-tools,iproute,openssh-server \
305 # sid /var/lib/lxc/sid http://ftp.debian.org/debian
306
307 # }
308
309
310 my_add_todo(){
311 local rememberfile="$HOME/.remember"
312 # if the file not exists, touch it
313 [[ ! -f $rememberfile ]] && touch $rememberfile
314 if [ $# -eq 0 ] ; then
315 echo "Type what you want to remember then, hit ^D: "
316 cat - >> $rememberfile;
317 else
318 #echo $(date +%m%d%Y)" -- $@" >> $rememberfile
319 echo $(date +%F)" -- $@" >> $rememberfile
320 fi
321 }
322
323 my_reminder(){
324 local rememberfile="$HOME/.remember"
325
326 #is_not_file $remberfile && echo 'nothing to do' ||
327 #is_empty $rememberfile && echo 'nothing to do' ||
328 #display_todo "$@"
329 is_not_file $rememberfile || [[ $(cat $rememberfile | wc -l) = 0 ]] && echo "nothing to do" || my_display_todo "$@";
330 }
331
332 my_display_todo(){
333
334 local rememberfile="$HOME/.remember"
335 echo $#;
336 #[[ $# -eq 0 ]] && more $rememberfile || grep -i "$@" $rememberfile | more;
337 [[ $# -eq 0 ]] && is_file $rememberfile && is_not_empty_file $rememberfile && cat $rememberfile || grep -i "$@" $rememberfile;
338 }
339
340
341 my_lsbytesum() {
342 #lsbytesum - sum the number of bytes in a directory listing
343 TotalBytes=0
344 for Bytes in $(ls -l | grep "^-" | awk '{ print $5 }')
345 do
346 let TotalBytes=$TotalBytes+$Bytes
347 done
348 TotalMeg=$(echo -e "scale=3 \n$TotalBytes/1048576 \nquit" | bc)
349 echo -n "$TotalMeg"
350 }
351
352 # list
353 my_create_list(){
354 local listname=$1;
355 declare -a $listname;
356 }
357
358 # sensonet
359
360 sensonet_create_event() {
361 curl -i -X "POST" -k -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Accept: application/json" -d "name=$1" http://projects.emerginov.orange.sn/sensonet/resources/events/"$2"
362 }
363
364 sensonet_update_event() {
365 curl -i -X "PUT" -k -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Accept: application/json" -d "name=$1" http://projects.emerginov.orange.sn/sensonet/resources/events/"$2"
366 }
367
368 sensonet_events() {
369 [[ $# -eq 0 ]] && curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/events/ || \
370 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/events/"$1"
371 }
372
373 sensonet_del_event() {
374 curl -i -X "DELETE" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/events/"$1"
375 }
376
377 sensonet_create_sensor() {
378 curl -i -X "POST" -k -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Accept: application/json" -d "description=$1" http://projects.emerginov.orange.sn/sensonet/resources/sensors/"$2"
379 }
380
381 sensonet_update_sensor() {
382 curl -i -X "PUT" -k -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Accept: application/json" -d "description=$1" http://projects.emerginov.orange.sn/sensonet/resources/sensors/"$2"
383 }
384
385 sensonet_del_sensor() {
386 curl -i -X "DELETE" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/sensors/"$1"
387 }
388
389 sensonet_sensors() {
390 [[ $# -eq 0 ]] && curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/sensors/ || \
391 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/sensors/"$1"
392 }
393
394 sensonet_create_network(){
395 curl -i -X "POST" -k -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" -d "name=$1" http://projects.emerginov.orange.sn/sensonet/resources/networks/"$2"
396 }
397
398 sensonet_update_network(){
399 curl -i -X "PUT" -k -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" -d "name=$1" http://projects.emerginov.orange.sn/sensonet/resources/networks/"$2"
400 }
401
402 sensonet_del_network(){
403 curl -i -X "DELETE" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/networks/"$1"
404 }
405
406 sensonet_networks(){
407 [[ $# -eq 0 ]] && curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/networks/ || \
408 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/networks/"$1"
409 }
410
411 sensonet_network_probes() {
412 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/networks/"$1"/probes
413 }
414
415 sensonet_create_probe() {
416 curl -i -X "POST" -k -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" \
417 -d "name=${1}&latitude=0.0&longitude=0.0&monitorMe=1&sleepingTime=0&networkId=univlab" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${2}"
418 }
419
420 sensonet_update_probe() {
421 curl -i -X "PUT" -k -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" \
422 -d "name=${1}&latitude=48.0&longitude=-1.0&monitorMe=1&sleepingTime=0" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${2}"
423 }
424
425 sensonet_probes() {
426 [[ $# -eq 0 ]] && curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/ || \
427 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"
428 }
429
430 sensonet_del_probe() {
431 curl -i -X "DELETE" -k -H -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${2}"
432 }
433
434 sensonet_probe_neighborhood(){
435 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"/neighborhood
436 }
437
438 sensonet_probe_set_sleeping_time(){
439 curl -i -X "POST" -k -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" -d "duration=${2}" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"/sleepingtime
440 }
441
442 sensonet_probe_sensors(){
443 [[ $# -eq 1 ]] && curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"/sensors || \
444 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"/sensors/"${2}"
445 }
446
447 sensonet_probe_sensor_values(){
448 curl -i -X "GET" -k -H "Accept: application/json" http://projects.emerginov.orange.sn/sensonet/resources/probes/%2B221"${1}"/sensors/"${2}"/values
449 }