#!/bin/bash msg=" ####################################################################### ## For Programmers: C, C++, Perl, Bash. ## ## Using Vim, you can open new program's file with some header. ## ## F.E. vimext -A my_progr.c - will open C-file with nine ## ## including statements and line with declaration of main ## ## program. ## ## Using options you can include library - separatly. ## ## F.E. vimext -i -s (or -is) file.cpp - will open C++-file ## ## with included <iomanip>, <string> statements. Default ## ## include is: <stdio.h> for C and <iostream> for C++. ## ## vimext -h - help-information about using options. ## ## ## ## You should remember that this script works in nested shell! ## ####################################################################### " #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> c_mysql_file() { cat > $filename << c_mysql #include <stdio.h> #include <mysql.h> #include <password.hh> int main (int argc, char *argv[]) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; conn = mysql_init(NULL); mysql_real_connect( conn,"","",password(), "",3306,NULL, 0); c_mysql vim + $filename; exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> c_file() { if [ "$flag_M" ]; then c_mysql_file; fi b="#include <stdio.h>\n" if [ "$flag_A" ]; then A="#include <stdlib.h>\n#include <string.h>\n#include \ <unistd.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include \ <ctype.h>\n#include <time.h>#include <fcntl.h>\n#include <math.h>\n" echo -e "$b$A\nint main ( int argc, char *argv[] )\n{" > $filename; vim + $filename; exit 0; fi if [ "$flag_l" ]; then l="#include <stdlib.h>\n" else l=""; fi if [ "$flag_s" ]; then s="#include <string.h>\n" else s=""; fi if [ "$flag_m" ]; then m="#include <math.h>\n" else m=""; fi if [ "$flag_c" ]; then c="#include <ctype.h>\n" else c=""; fi if [ "$flag_t" ]; then t="#include <time.h>\n" else t=""; fi if [ "$flag_f" ]; then f="#include <fcntl.h>\n" else f=""; fi if [ "$flag_u" ]; then u="#include <unistd.h>\n" else u=""; fi if [ "$flag_g" ]; then g="#include <libgen.h>\n" else g=""; fi if [ "$flag_p" ]; then p="#include <publib.h>\n" else p=""; fi echo -e "$b$l$s$m$t$c$f$g$p$u\nint main ( int argc, char *argv[] )\n{" > $filename; vim + $filename; exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cpp_mysql_file() { cat > $filename <<cpp_mysql; #include <sqlplus.hh> #include <password.hh> #include <strstream> #include <string> #include <iomanip> int main ( int argc, char *argv[] ) { Connection conn("","","",password()); Query q = conn.query(); cpp_mysql vim + $filename; exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cpp_file() { if [ "$flag_M" ]; then cpp_mysql_file; fi b="#include <iostream>\n" if [ "$flag_A" ]; then A="#include <iomanip>\n#include <string>\n#include <algorithm>\n\ #include <vector>\n#include <fstream>\n#include <strsteam>\n\ #include <iterator>\n#include <numeric>\n" echo -e "$b$A\nint main ( int argc, char *argv[] )\n{" > $filename; vim + $filename; exit 0; fi if [ "$flag_i" ]; then i="#include <iomanip>\n" else i=""; fi if [ "$flag_s" ]; then s="#include <string>\n" else s=""; fi if [ "$flag_a" ]; then a="#include <algorithm>\n" else a=""; fi if [ "$flag_v" ]; then v="#include <vector>\n" else v=""; fi if [ "$flag_f" ]; then f="#include <fstream>\n" else f=""; fi if [ "$flag_c" ]; then c="#include <cctype>\n" else c=""; fi if [ "$flag_g" ]; then g="#include <iterator>\n" else g=""; fi if [ "$flag_n" ]; then n="#include <numeric>\n" else n=""; fi if [ "$flag_m" ]; then m="#include <cmath>\n" else m=""; fi if [ "$flag_l" ]; then l="#include <cstdlib>\n" else l=""; fi if [ "$flag_e" ]; then e="#include <strstream>\n" else e=""; fi if [ "$flag_t" ]; then t="#include <ctime>\n" else t=""; fi if [ "$flag_u" ]; then u="#include <cstdio>\n" else u=""; fi echo -e "$b$i$s$a$e$g$v$f$n$c$l$m${t}using namespace std;\n\n\ int main ( int argc, char *argv[] )\n{" > $filename; vim + $filename; exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> perl_mysql_file() { cat > $filename <<perl_filling; #!/usr/bin/perl -w use DBI; use strict; my ($dsn) = "DBI:mysql:test;mysql_read_default_file=$ENV{HOME}/.my.cnf"; my ($user_n) = ""; my ($pass) = ""; my ($dbh,$sth); my (@ary); my ($query); $dbh = DBI->connect($dsn,$user_n,$pass,{ RaiseError => 1 }); perl_filling vim + $filename; exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> usage() { echo "^[[1;41;37mUSAGE:^[[0m `basename $0` [-slvmifecgtuah] filename.extention"; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> help_message() { wh="^[[1;37m"; gr="^[[1;32m"; bl="^[[1;34m"; en="^[[0m"; echo echo "^[[1;41;37mUSAGE:^[[0m `basename $0` [-AMacefghilmnpstuv] filename.extention"; cat << help_msg $wh***************************************************************$en Creating some C, C++, Perl, Bash file with header. $wh extention$en -$bl sh$en - $gr Bash script$en -$bl pl$en - $gr Perl file$en $wh[ -M ]$en header for connection with MySQL. -$bl c$en - $gr C file$en $wh[ -A ]$en including many common lib. $wh[ -M ]$en header for connection with MySQL. $wh[ -c ]$en include <ctype.h> $wh[ -m ]$en include <math.h> $wh[ -f ]$en include <fcntl.h> $wh[ -g ]$en include <libgen.h> $wh[ -l ]$en include <stdlib.h> $wh[ -p ]$en include <publib.h> $wh[ -s ]$en include <string.h> $wh[ -t ]$en include <time.h> $wh[ -u ]$en include <unistd.h> -$bl cpp$en - $gr C++ file$en $wh[ -A ]$en including many common lib. $wh[ -M ]$en header for connection with MySQL. $wh[ -a ]$en include <algorithm> $wh[ -c ]$en include <cctype> $wh[ -e ]$en include <strstream> $wh[ -f ]$en include <fstream> $wh[ -i ]$en include <iomanip> $wh[ -l ]$en include <cstdlib> $wh[ -m ]$en include <cmath> $wh[ -s ]$en include <string> $wh[ -t ]$en include <ctime> $wh[ -g ]$en include <iterator> $wh[ -n ]$en include <numeric> $wh[ -v ]$en include <vector> $wh[ -u ]$en include <cstdio> $wh [ -h$en |$wh -help ]$en to see this help message. Without any arguments,$wh vimext$en will message about itself. $wh***************************************************************$en help_msg exit 0; } #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> BADARG=65 BADOPTION=33 NA="$#" if [ "$#" -lt "1" ] then echo usage; echo -e "$msg"; exit $BADARG fi while getopts ":AMslvmnifecpgtauh" Opt do case $Opt in s ) flag_s=TRUE;; l ) flag_l=TRUE;; v ) flag_v=TRUE;; M ) flag_M=TRUE;; m ) flag_m=TRUE;; n ) flag_n=TRUE;; i ) flag_i=TRUE;; f ) flag_f=TRUE;; e ) flag_e=TRUE;; c ) flag_c=TRUE;; g ) flag_g=TRUE;; p ) flag_p=TRUE;; t ) flag_t=TRUE;; u ) flag_u=TRUE;; A ) flag_A=TRUE;; a ) flag_a=TRUE;; h ) help_message;; * ) echo -e "Unknown option!\n"; usage; exit $BADOPTION;; esac done shift $(($OPTIND - 1)) filename="$1" filebase=${filename%.*} fileext=${filename#$filebase.} if [ -e "$filename" ]; then echo echo "file $filename exists!" exit 1; fi # create bash file if [ "$fileext" = "sh" ]; then echo -e "#!/bin/bash\n\n" > $filename; vim + $filename; exit 0; # create perl file elif [ "$fileext" = "pl" ]; then # perl file if [ "$NA" -eq "1" ]; then # number arguments echo -e "#!/usr/bin/perl -w\n\n" > $filename; vim + $filename; exit 0; fi if [ "$flag_M" = "TRUE" ]; then perl_mysql_file; fi # create c file elif [ "$fileext" = "c" ]; then c_file; elif [ "$fileext" = "cpp" ]; then cpp_file; else echo "OK" fi