Search This Blog

2012-07-24

linux cheat sheet v1.8.0

# File:LinuxCheatSheet.sh v.1.8.0 docs at the end 
# get a nice prompt 
export PS1="\u@\h \t \w\n\\$ "

# who , where and when
uname -a ;
id;
date +%Y.%m.%d-%H:%M:%S;

# start putty with preloaded session on windowz
cmd /c start /max putty -load username@hostname

# aliases
# show dirs with nice time newest modified on top 
alias ll='ls -alt --time-style=long-iso'

# find the only the uniq file names of specific file type 
find `pwd` -name '*.xml' | perl -pe 's/(.*)(\\|\/)(.*)/$3/;' | sort  | uniq -u


# find in files 
find / -name '*bash*' -exec grep -nHP '*APerlRegex*' {} \;

# The ultimate "find in files"
find /etc/httpd/ -type f -print0 | xargs --null grep -nHP 'StartServers\s+\d' | less

#  or even faster , be aware of funny file names xargs -0
find / -name '*bak' -print0 | xargs --null grep -nPH 'curl'
 
# find and replace recursively
find . -name '*.html' -print0 | xargs -0 perl -pi -e 's/foo/bar/g'

# find all the files greather than 100 MB , sort them by the size and print their sizes 
find / -type f -size +100M -exec du -B M {} \; | sort -r | less 

# disk usage of users under the /home directory in MB
clear;du -all -m --max-depth=3 /home | sort -n -r | less

# where I have been lately ?
history | grep cd
# what I have opening recently 
history | grep vi

#send my history 
history | mailx -s "my history" $MyEmail
tcpdump dst 10.168.28.22 and tcp port 22
tcpdump dst 1.2.41.2.4.212 
 
 
# record the current session via script
mkdir ~/scriptlogs
script -a ~/scriptlogs/`date +%Y%m%d%H%M%S`_script.log
  
#/usr/bin is for normal user executables, /usr/sbin is for superuser executables, /usr/sfw is for external software (like gnu one), but provided with bundle of OS, /usr/ccs is for development utilities, usually not need for daily tasks like make, lex, yacc, sccs
 
# take the last 5 commands for faster execution to the temp execution script
tail -n 5 /root/.bash_history >> /var/run.sh
 
# I saw the command cd /to/some/suching/dir/which/was/very/long/to/type
echo so I redid it and saved my fingers
!345
  
history | mail -s "test file sending" -c mail1@com yordan.georgiev(boom)gmail.com
 
# remove all trealing spaces from the history file works for TextPad
^([ ]*)([0-9]*)(.*)$
 
\3 --- replace with the pure commands
 
history | gawk -F1 'BEGIN {FS=" "};{print $2 , $3}' | less
 
# display the history oldest commands first withouth the line numbers ...
history | sort -nr | perl -i -pe 's/^([ ]*)([0-9]*)(.*)$/$3/gi'
 
 
# how to deal with command outputs
command | filtercommand > command_output.txt 2>errors_from_command.txt
  
 
#  find the files having os somewhere in their names and only those having linux
find . -name '*os*' | grep linux | less
 
# find all xml type of files and display only the rows having wordToFindInRow
find . -name '*.xml' -exec cat {} \;| grep wordToFindInRow | less
 
 
# putty , bash shortcuts 
Ctrl + A --- Go to the beginning of the line you are currently typing on
Ctrl + E --- Go to the end of the line you are currently typing on
 
# how-to mount an usb stick
# remember to change the path other wise you will get the device is busy errror
mkdir /mnt/usbflash
mount /dev/sdb1 -t vfat /mnt/usbflash

umount /mnt/usbflash

#display the first 20 lines of the file
head -n 20 tooLongFile 
 
# how to restart a process initiated at startup
/etc/rc.d/init.d/sendmail start | stop | status | restart
 
# see all the rules associated with the firewall
iptables -L -v
 
gunzip *file.zip

 
# start winscp with a stored session from Win box 
cmd /c start /max winscp oracle@1.2.468.255.12
 
# To start remote session click on the putty screen , configure putty
settings to pull full screen with alt + Enter
 
# right click on the title bar , settings , change the font , copy
paste from and to the terminal window text
 
# how to ensure the sshd daemon is running
ps -ef | grep sshd
 
 
# User and group management
useradd -p winscppass -r winscp -d /home/winscp --- to add a user with
specifig home directory name and pass
 
luserdel winscp --- delete the user
 
gpasswd: administer the /etc/group file
groupadd: Create a new group
groupmod: Modify a group
groupdel: Delete a new group
 
#useradd: Create a new user or update default new user information
#usermod: Modify a user account
#userdel: Delete a user account and related files
 
 
# how to kill process interactively
killall -v -i sshd
 
 
# the most efficent way to search your history is to hit Ctrl R and
#type the start of the command. It will autocomplete as soon as there’s
#a match to a history entry, then you just hit enter. If you want to
#complete the command (add to it ) use the right arrow to
#escape from the quick search box ...
 
#How to install Perl modules
gzip -dc yourmodule.tar.gz | tar -xof -
# create the make file
perl Makefile.PL
# test
make test
# install 
make install
 
#How to see better which file were opened , which directories were visited
 
#type always the fullpath after the vi - use the $PWD env variable to
#open files in the current directory , thus after opening the file
#after:
 
#vi /$PWD , press tab to complete the name of the current directory ,
#type the name of the file. THUS AFTER RUNNING
history | grep vi
the full list of opened files is viwed .
 
#of course the same could be seen from the /home/username/.viinfo file /files
 
#where to set the colors for the terminal (if you are lucky to have one
with colors ; )
 
/etc/DIR_COLORS
 
open a file containing "sh" in its name bellow the "/usr/lib" directory
 
:r !find /usr/lib -name *sh*
 
go over the file and gf
 
uname -a --- which version of Linux I am using
 
rmp -dev --- show all installed packages

# change the password for the specified user (own password)
passwd [username] 
 
 
#How to copy paste text in the putty window from client to server -

#click the right button of your pointing device
 
#How to copy paste text from the putty window from server to client -
#right-click the window title and select copy all to Clipboard.
 
#To restart a service
service sshd restart
#  
service --status-all --- show the status of all services
 
 
# change the owneership of the directory
chown -R userName:GroupName DirPath
 
# perform action recursively on a set of files
 
find . -name '*.pl' -exec perl -wc {} \;
 

for file in `find . -type f`;do echo cp $file ./backups/; done;
for file in `ls *.docx -1`;do echo cp $file ./backups/$file.`date +%Y%m%d%H%M%S`.docx;done;

 
# make Bash append rather than overwrite the history on disk:
shopt -s histappend
 
# henever displaying the prompt, write the previous line to disk:
PROMPT_COMMMOR='history -a'
 
gpm -- general "cut and paste" server

 
sh ScriptWithALotOfErrorMessages.sh | tee -a whereToSaveIt.log
 
# run first the following command
script -a The_Log_File_To_Append_as_well_as_display_diagnostig_messages.log
 
# than run the script
 


sh ScriptWithALotOfErrorMessages.sh
#how-to replace single char in file
tr '\t' ',' < FileWithTabs > fileWithCommas
 
df -k --- disk usage
 
# Allow access to the box from only one ip address
 
IPTables=/sbin/iptables
$ IPTables -A INPUT -s <Insert other Origin ip here> -p tcp
--source-port xxx -j ACCEPT
$ IPTables -A OUTPUT -d < Insert other Origin ip here > -p tcp
--destination-port xxx-j ACCEPT
 
# has the root logged in over an unencrypted network ?
 
# next_line_is_templatized
#  last | grep “^root “ | egrep –v “reboot|console” | morphus


 
# start command in the background
command1 &
 
# start another one
command2 &
 
# bring the command in the foreground
fg %1
 
# create a backup file based on the timestamp on bash
 
cp fileName.ext fileName.ext.`date +%Y%m%d%H%M%S`.bak
 
 


Unix commands:

FIX broken lines:

$ cat output.txt
a:b:c:1.2.4:2.3:henry
s:d:e:2:1:4:
54:user5
d:q:w:5:6:
3:5.2:alex
y:m:n:3:4:1:5.6:eiam

Output Required:
----------------
a:b:c:1.2.4:2.3:henry
s:d:e:2:1:4:54:user5
d:q:w:5:6:3:5.2:alex
y:m:n:3:4:1:5.6:eiam


$ awk '
BEGIN {
FS=":";
maxFLD=8;
}
{
while (NF < maxFLD || $0 ~ /\:$/ ) {
getline record;
$0 = $0 record
}
print $0
}
' file_name

Live example: 
2009-07-10 13:51:31.939439|2009-07-10|2|1.1.6401.0.614513|0570817|1|-3||production|2.0.0|Series60|V 11.0.021|11.0.021.01.01|11.0.021.C01.01|244|05|862e-d2ac-4f03-9cbb|xmldatabinding 5.0|Xmldatabinding 5.0 for N-Gage
|x-epoc/x-sisx-app|0|4|1|3|0x1.2.478e|1.0.6|Company|N97|Country_variants_of_UK_Ireland
--------------------------------------------------------------------------------------------------------------------------------------
$ awk 'BEGIN {FS="|";maxFLD=30;}{while (NF < maxFLD || $0 ~ /\:$/ ) {getline record;$0 = $0 record} print $0}' file_name
---------------------------------------------------------------------------------------------------------------------------------------


Display lines which starts with “|”:

- $ Grep ‘^|’ file_name


Paste = shift + insert
Copy = ctrl + insert

df  -h ***

id -u

ls –lrt
# get running processes
ps -ef
# how-to kill misbehaving process ... you will need to adjust the -f 2 part 
# depending on the output of the ps -ef command above 
for pid in $(ps -ef | grep procToFind | perl -ne 's/\s+/ /g;print $_ . "\n";' | cut -d ' ' -f 2) ; do echo kill -9 $pid ; done ;
for pid in $(ps -ef | grep chrome | perl -ne 's/\s+/ /g;print $_ . "\n";' | cut -d ' ' -f 2) ; do echo kill -9 $pid ; done ;

#how-to create relative file paths tar package recursively fromm a dir
cd <<RootDirToStartRelativePathsFrom>>
tar -cvzpf <<PackageToCreate>>.tar <<DirToPackRecursively>>
# exctract tar file into cd  
tar -xvf <<PackageToExctractInCurrentDir>>.tar

#how-to create an archieve
tar cvf archive_name.tar dirname/
#unpack a file 
tar xvf “filename”

#unpack 
gzip -cd FileName.tar.gz | tar -xvf -
fg  (can be used to return to stopped window/process)

w (logged in users, idle or not?)
who (logged on users, from where)
who -r (show runlevel)

wc filename (lines, words, characters)


# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files

Remove/replace hex values from a file:
perl -i.bak -pe 's/(\xEF)(\xBF)(\xBD)/???/g' music_player_track.txt

Add user: useradd –u uid (esim. 2600)  –c ‘description’ –d /homedir/ -g group –m –s /bin/bash username
Change passwd: passwd username

Example:

useradd -u 10302011 -c "FirstName LastName, DeparmentName, firstname.lastname@company.com" -m -d /export/home/firstlast -s /bin/bash firstlast

passwd -f login = forces to change password when logging in for the first time


#Ei saa näyttää yhtään vastausta:
passwd -s -a | grep NP (=No Password)

#/var/adm/loginlog sisältää kaikki epäonnistuneet loginyritykset…
#Alustus:
#!/bin/sh
log=/var/adm/loginlog
test -f "$log" && {
        # "Good, $log exists already."
        exit 0
}
touch $log || exit 1
chown root $log || exit 1
chgrp sys $log || exit 1
chmod 600 $log || exit 1

# "Initialized $log."

Use SVCCFG:
bash-3.00# svccfg
svc:> select cde-login
svc:/application/graphical-login/cde-login>
svc:/application/graphical-login/cde-login> setprop dtlogin/args=astring: "-udpPort 0"
svc:/application/graphical-login/cde-login> quit
bash-3.00# svcadm cde-login restart


Display lines that contain A or B
/usr/bin/egrep - i “A|B”
Ex. # ps -ef | /usr/bin/egrep - i “PID1|PID2”

START/ STOP scripts ( /etc/init.d/rc.script)
-  create symbolic links from /etc/rc(0,1,2).d/K99sas --> /etc/init.d/rc.script
-  create symbolic link from /etc/rc3.d/S99sas --> /etc/init.d/rc.script

Startscripts are executed in order where smallest number is executed first on each runlevel

ln –s source target

Normal Case

Put SXX in rc3.d
Put KXX in rc0.d, rc1.d, rc2.d, rcS.d

cd /etc/rc3.d
ln –s /etc/init.d/rc.script S99rcscript

cd /etc/rc0.d
ln -s /etc/init.d/rc.script K99rcscript
cd /etc/rc1.d
ln -s /etc/init.d/rc.script K99rcscript
cd /etc/rc2.d
ln -s /etc/init.d/rc.script K99rcscript
cd /etc/rcS.d
ln -s /etc/init.d/rc.script K99rcscript

RC scripts & Run Levels 
Rc scripts performs the following functions : 

a) They check and mount the file systems 

b) Start and stop the various processes like network , nfs etc.

c) Perform some of the house keeping jobs.

System goes in to one of the following run level after booting depending on default run level and the commands issued for changing the run level to some other one.

0 Boot prom level ok> or > prompt in Sun.
1 Administrative run level . Single user mode 
2 Multiuser mode with no resource sharing .
3 Multiuser level with nfs resource sharing
4 Not used
5 Shutdown & power off (Sun 4m and 4u architecture )
6 Reboot to default run level
S s Single user mode user logins are disabled.

Broadly speaking the running system can be in any of the folloing state

Single user – Minimum processes running , user logins disabled and root password is required to gain access to the shell . 
Multiuser - All system processes are running and user logins are permitted 

Run level of a desired state is achieved by a number of scripts executed by the rc program the rc scripts are located in /etc/rc0.d , /etc/rc1.d , /etc/rc2.d , /etc/rc3.d & /etc/rcS.d directories . All the files of a particular run level are executed in the alphanumeric order .Those files beginning with letter S starts the processes and those beginning with K stops the processes.

These files are hard linked to the files in /etc/init.d in order to provide a central location for all these files and eliminating the need to change the run level in case these scripts needs to be run separately . The files in /etc/init.d directory are without any S , K and numeric prefix instead a stop / start argument has to be supplied whenever these scripts are to be executed .

By default system has a number of rc scripts needed for run level transition but sometimes it becomes necessary to start some custom scripts at the booting time and turn them off at the shutdown . Custom scripts can be put in any of the required rc directory but following major considerations has to be kept in mind :
•  The sequence number of the file should not conflict with other files.
•  The sevices needed should be available by previously executed scripts. 
•  File should be hard linked to the /etc/init.d directory .
•  The system looks for only those files beginning with letter K & S , any thing else is ignored , therefore, to make a file inactive simply changing uppercase K or S to lower case will cause system to ignore it . 


The scripts that begin with a K are used to kill processes when exiting a specific runlevel. In the listing above, the K scripts would be used when terminating runlevel 3. The scripts that start with an S are used when starting runlevel 3. None of the items in rc3.d, however, is really a startup script. They are logical links to the real scripts, which are located in the /etc/rc.d/init.d directory. For example, S80sendmail is linked to init.d/sendmail. This raises the question of why the scripts are executed from the directory rc3.d instead of directly from init.d where they actually reside. The reasons are simple. The same scripts are needed for several different runlevels. Using logical links, the scripts can be stored in one place and still be accessed by every runlevel from the directory used by that runlevel. 
Scripts are executed in alphabetical order. Thus S10network is executed before S80sendmail. This allows the system to control the order in which scripts are executed through simple naming conventions. Different runlevels can execute the scripts in different orders while still allowing the real scripts in init.d to have simple, descriptive names. A listing of the init.d directory shows these descriptive names: 


VI COMMMORS 

Move with cursor: h,j,k,l
Beginning of line: 0

Corrections during INSERT:
-  CTRL+H delete last character

Append after cursor: a
Append at the end of line: A

Yanked: y
Put: p – puts back yanked or deletet text after cursor

#Undo last change: 
u
#Restore curren line: 
U
#Repeat last change:
.
#Repeat last command
: n
#Replace (sed):   
:%s/old value/new value/

#Copy: CTRL+INSERT
#PASTe: SHIFT+INSERT

#EXTRACT *.tar.gz 
gzip -dc some.tar.gz | tar xvf –

Single file:

gzip -dc fileName.tar.gz | tar -xvf - filename

find . -name '*.log' -print | zip cipdq`date +%Y%m%d%H%M%S` -@

find / -type f | xargs grep -nH 'curl'

# print the word to find + the next 3 lines
grep -A 3 -i "theWordToFind" demo_text


find . -type f -name '*.sh' -print -exec grep -n gpg {} \;




#where am I
uname -a ; 
#who am I 
id ; 
# when this is happening 
date "+%Y.%m.%d %H:%M:%S" ; 


useradd -u 1.2.4211 -c "First Name , LastName, Teamp , firstName.LastName@company.com" -m -d /export/home/userName -s /bin/bash userName

#obsolete
skill -STOP -u userToKick
pkill -STOP -u userToKick

# reboot ... !!! BOOM BOOM BOOM !!!
shutdown -r now 
# shutdown the whole system 
shutdown -f -s 00

# check all available commands on my system
 echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1  -type f -printf '%P\n' | sort -u | less
 
 #how-to kill a process 
ps aux | grep procName
pidof procName
kill -9 procName
#what cpu am a running
less /proc/cpuinfo

# which processes are listening on my system
netstat --tcp --listening --programs
netstat --tcp
netstat --route


#source: http://www.yolinux.com/TUTORIALS/LinuxTutorialSysAdmin.html#MONITOR
#monitoring commands 
# show the top processes
top
# running processes status 
ps -auxw | less 
ps -ef | less 
#List all currently loaded kernel modules
lsmod | less 
#Displays the system's current runlevel.
/sbin/runlevel
# get the Processes attached to open files or open network ports:
lsoff | less 
# monitor the virtual memory 
vmstat 
#Display/examine memory map and libraries (so). Usage: pmap pid
ps -aux | grep <<MyProcToPMap>>
pmap   <<MyprocToPMapPID>>


history | gawk -F1 'BEGIN {FS=" "};{print $2 , $3}'
pmap -x 4041 | gawk -F1 'BEGIN {FS=" "};{print $2  ,"\t" , $5 , "\t" , $6 , "\t", $7 , $8}' | sort -nr

#how-to sort output by a delimited by single delimiter column 
# in this example the - char is used for delimiter , the output is 
# by their sending sequence , use proper file naming convention files 
# ls -1 gives us:
# fileBeginningTillFirstDelimiter-TheColumnToSortBy-TheRestFromTheFileNameDelimiter
ls -1 | awk -F1 'BEGIN {FS="-"};{print $2 "¤" $1 "-" $2 "-" $3 }' | sort -nr | cut -d ¤ -f 2,5 
# the same approach with perl
ls -1 | perl -p -i -e 's/^([^\-]*)(\-)([^\-]*)(\-)([^\-]*)/$3¤$1.2.4$4$5/g' | sort -nr | cut -d ¤ -f 2,5  

# how-to use sftp with remoteUserName having publicIdentity of PublicIdentityUserName
sftp -v -o "IdentityFile /var/www/.ssh-id/PublicIdentityUserName" -o "UserKnownHostsFile /var/www/.ssh-id/known_hosts" remoteUserName@ServerHostNameOrIpd


# ==================================================================
# START Jobs control 
# start some very long lasting command 
find / -name '*.crt' | less 
# now press Ctrl + Z 
# the terminal says "Jobs stopped"
# now check the open jobs 
jobs
# you should see something like 
# [1]+  Stopped                 find / -name '*.crt' | less
# now put the job in the background and start working on something else by Ctrl + Z 
bg 1
# run the next command 
# how-to copy file via scp by using specificy identity
scp -v -o "IdentityFile /home/userName/.ssh/id_rsa" /data/path/dir/* userName@ServerHostName.Domain.com:/Server/Target/Dir/
# now again stop the job first by Ctrl + Z 
# check again the running jobs 
jobs 
# use should see the both of the jobs started 
# now put the first on in the forground 
fg 1
# Repeat that several times untill you get it ; ) !!!

# END Jobs control 
# ==================================================================
nicedate=`date +%Z-%Y%m%d%H%M%S`

# kill a process by name 
ProcNameToKill=listener-nat_filter_caller.sh
# ps -ef | grep wget | perl -ne 'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'
ps -ef | grep $ProcNameToKill | grep -v "grep $ProcNameToKill" | perl -ne 'split /\s+/;print "kill $_[7] with PID $_[1] \n";`kill -9 $_[1];`'

# how-to display human readable file sizes on systems with stupid du
# of course you would have to have perl next_line_is_templatized
find `pwd` -type f -exec du -k {} \; | perl -ne 'split /\s+/;my $SizesInMegs=$_[0]/1024;printf ( "%10d %10s \n" , "$SizesInMegs" , "MB $_[1]")' | sort -nr | morphus

export dir=/
echo sizes in MB
find $dir -type f -exec du -k {} \; | perl -ne 'split /\s+/;my $SizesInMegs=$_[0]/1024;printf ( "%10d %-100s \n" , "$SizesInMegs" , "$_[1]")' | sort -nr | more


#who has been accessing via ssh 
for file in `find /var/log/secure* | sort -rn` ; do grep -nHP 'mfe' $file ; done; | less


#print files recursively 
dir=/opt/path/to/dir
clear;find $dir -type f -exec ls -alt --time-style=long-iso --color=tty {} \; | perl -ne 'split(/\s+/);printf ( "%10s %2s %-20s \n" , "$_[5]", "$_[6]", "$_[7]") ; ' | sort -nr

#how-to print relative file paths to /some/DirName with perl one liner 
find /some/DirName -type f | perl -ne 'split/DirName\//;print "$_[1]"  '

# see nice dir recursively listing newest first
dir=/tmp
find $dir -name '*.tmp' -exec ls -alt --time-style=long-iso --color=tty {} \; | perl -ne 'split/\s+/;print "$_[5] $_[6] $_[7] \n" ;' | sort -nr | less

# how-to sort files based on a number sequence in their file names
# list dir files , grap a number from their names , print with NumberFileName, sort , print finally the names without the Number but sorted 
 ls -1 | perl -ne 'm/(\d{8})/; print $1 . $_ ;' | sort -nr | perl -ne 's/(\d{8})//;print $_'


# get the STDERR and STDOUTPUT 
output=$(command 2>&1)

# create pub priv keys on server
ssh-keygen -t rsa 

# add pub key from client to authorized_keys files on server
cat id_rsa.pub >> ~/.ssh/authorized_keys

# show me a nice calendar 
cal -m -3
# Start a tunnel from here (where we write the command) on port 10001, then go to server.com as user username and end the tunnel at a host called localhost on port 3689 over there 
ssh -L 10001:localhost:3689 username@server.com
ssh -L 1573:localhost:1573 UnixUserName@infprod1.cc.elisa.fi


# Purpose: 
# to provide a simple cheat sheet for most of the Linux related commands
# VersionHistory
# 1.8.1 --- 2012-07-19 23:15:48 --- ysg --- tar examples , refactor
# 1.8.0 --- 2012-06-30 21:31:23 --- ysg --- tunnel one liner 
# 1.7.1 --- ysg --- calendar 
# 1.7.0 --- ysg ---  removing HP-UX stuff
# 1.6.0 --- ysg ---  HP-UX check file sizes 
# 1.5.0 --- ysg ---  Added tar and ssh-keygen
# 1.4.0 --- ysg ---  Added kill proc by name and du -BM for HP-UX
# 1.3.0 --- ysg ---  Added jobs control 
# 1.2.4 --- ysg ---  Added system monitoring commands 
# 1.1.6 --- ysg ---  refined du , replaced echo's with #'s
# 1.0.0 --- ysg ---  Initial creation  



syntax highlighted by Code2HTML, v. 0.9.1

sftp example

# code by Esa Ikonen - stub done in 2 minutes ... 
localdir=some/other/path
remotedir=some/path
files=......


sftp_opts="-b - "

errors=""
success=""

for file in $files
do
 local=$localdir/$file
 test -f "$local" || {
  wlog "Not a file: $local"
  next
 }
 remote=$remotedir/`basename $file`
 remotetmp=$remote.tmp

 #
 # Remove old remote file
 #
 echo "rm $remotetmp" | sftp $sftp_opt $sftpuser@$sftpserver >> $LOG 2>&1
 echo "rm $remote" | sftp $sftp_opt $sftpuser@$sftpserver >> $LOG 2>&1

 wlog "Start $local -> $remote"
 result=`(
  echo "put $local $remotetmp"
  echo "mv $remotetmp $remote"
 ) | sftp $sftp_opt $sftpuser@$sftpserver 2>&1` || {
  wlog "SFTP failed"
  errors="$errors $local"
  next
 }
 wlog "$result"
 echo "$result" | egrep -i '(error|fail)' >/dev/null && {
  wlog "some error ...."
  errors="$errors $local"
  next
1 }
 success="$success $local"
 wlog "Finished $local -> $remote"
done

test -z "$errors" || {
 wlog "perkele virheita: $errors"
}

test -z "$success" && {
 wlog "OOps mikaan ei onnistunut"
}



syntax highlighted by Code2HTML, v. 0.9.1


sh stub for hp ux



sfw/sh/utils/sh_stub_hpux/sh_stub.sh



#!/bin/sh
# file: sh_stub.sh
umask 000 ;

# echo all the commands
# debug

set -x
# exit on single error
# debug

set -e


#
# read the IniFile, which is host dependant and set the variables
# report the set variables
doSetVars(){
MyDir=`dirname $0`
cd $MyDir
MyDir=`pwd`
Tmp="$MyDir/tmp/tmp.$$"
mkdir -p $Tmp #create the tmp dir if it does not exist
set >$Tmp/variables.before
MyName=`basename $0`
# boom boom boom where does the ProductBaseDir start ?!
for i in {1..5} ; do cd .. ;done ;
ProductBaseDir=`pwd`
cd $MyDir
IniFile="$MyDir/$MyName.`hostname`.conf"
IniSection=MainSection
LogFile="$MyDir/$MyName.log"
# get the machine / host specific configuration
doParseIniFile

#source $0
set > $Tmp/variables.after

doLog " Using the following vars :"
cmd="comm -13 $Tmp/variables.before $Tmp/variables.after"
doRunCmdAndLog $cmd
rm -f $Tmp/variables.before $Tmp/variables.after
rm -f $Tmp/variables.before $Tmp/variables.before
}
#eof function doSetVars

# parse the host dependant ini file
doParseIniFile(){
eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
-e 's/;.*$//' \
-e 's/[[:space:]]*$//' \
-e 's/^[[:space:]]*//' \
-e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
< $IniFile \
| sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function doParseIniFile


# call by doRunCmdAndLog $cmd
doRunCmdAndLog(){
cmd="$*" ;
doLog "running cmd : \"$cmd\""
Msg=$($cmd 2>&1)
[ $? -eq 0 ] || doLog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
doLog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function doRunCmdAndLog


#call by doRunCmdOrExit $cmd
doRunCmdOrExit(){
cmd="$*" ;
doLog "running cmd : \"$cmd\""

Msg=$($cmd 2>&1)
# if error occured during the execution exit with error
[ $? -eq 0 ] || doExit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
#if no error occured just log the message
doLog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function doRunCmdOrExit

# echo passed params and print them to a log file and to the screen
# with a nice date the the current process id
doLog(){
# check terminal if exists echo
test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] @`hostname` $*"
# check LogFile and

test -z $LogFile || {
echo "`date +%Y.%m.%d-%H:%M:%S` [$$] @`hostname` $*" >> $LogFile
} #eof test
}
# eof function doLog


#
# exit with passed status and message
doExit(){

ExitStatus=0
case $1 in
[0-9]) ExitStatus="$1"; shift 1;;
esac
Msg="$*"
test "$ExitStatus" = "0" || Msg="ERROR: $Msg"
doLog "$Msg"

exit $ExitStatus
}
#eof function Exit


#
# the actions to be performed befor the run
doCleanBeforeRun(){

doLog "DEBUG START function ====== doCleanBeforeRun"
#get the PID of the previous run pid
test -f "$MyDir/PID" && PreviousRunPID=`cat $MyDir/PID`

test -f "$MyDir/PID" && kill -s 9 "$PreviousRunPID"
# set the PID of the current process
echo "$$" > "$MyDir/PID"

doLog "DEBUG STOP function ====== doCleanBeforeRun"
}
#eof function doCleanBeforeRun

#
# Provide here a description of this function what is does etc
doFunctionName(){
doLog "DEBUG START function ====== doFunctionName"

# add here custom logic

doLog "DEBUG STOP function ====== doFunctionName"
}



doCleanAfterRun(){

doLog "DEBUG START function ====== doCleanAfterRun"
#if the PID file exists remove it
test -f "$MyDir/PID" && rm -f "$MyDir/PID"
# set the PID of the current process
doLog "DEBUG STOP function ====== doCleanAfterRun"

}
#eof function doCleanBeforeRun


#
# kills earlier instances of this script if they are running
# by using the base name of the script
doKillOlderMeIfRunning(){

doLog "DEBUG START function ======= doKillOlderMeIfRunning "

# kill a process by name
ProcNameToKill=$MyName
OLD_PIDs=$(ps -ef | grep $ProcNameToKill | grep -v "grep $ProcNameToKill" | perl -ne 'split /\s+/;print "$_[2] "| sort -n')

doLog "OLD_PIDs is $OLD_PIDs"
for OLD_PID in `echo "$OLD_PIDs"`
do
[ $OLD_PID -ne $$ ] && doLog "OLD_PID : $OLD_PID running -> has to be shutdown "
cmd="kill -s 9 $OLD_PID"
[ $OLD_PID -ne $$ ] && doRunCmdAndLog "$cmd"
done

ps -ef | grep "$ProcNameToKill" | grep -v "grep $ProcNameToKill"

#check the running left processes
cmd="ps -ef | grep \"$ProcNameToKill\" | grep -v \"grep $ProcNameToKill\""
#doRunCmdAndLog $cmd

doLog "DEBUG STOP function ======= doKillOlderMeIfRunning "
}
#eof function doKillOlderMeIfRunning

#
# sends an e-mail with the latest n configured lines from the log
doSendReport(){
doLog "DEBUG START function ======= doSendReport"

for Email in $Emails
do
tail -n $NumberOfLinesFromLogFileToReport $LogFile | mailx -s "tail -n $NumberOfLinesFromLogFileToReport $LogFile" $Email
done
doLog "DEBUG STOP ======= doSendReport"
}
#eof function doSendReport


# the main function called
main(){
doSetVars
doKillOlderMeIfRunning
doCleanBeforeRun
doFunctionName
doCleanAfterRun
doSendReport
doExit 0 " STOP MAIN "
}
#eof function main

# Action !!!
main


# Purpose:
# to provifde a basic stub / template sh to start development from on HP-UX

#
# has the following features:
# - prints the set in the script variables
# - separation of host specific vars into $0.`hostname`.conf file
# - doLog function for both xterm and log file printing

# - killing of older instances
# Prerequisites:
# HP-UX B.11.31 U ia64

# sh , perl , sed , grep
# VersionHistory :
# 1.1.0 --- 2012-06-18 12:00:15 --- Yordan Georgiev --- doMethodName + utility methods
# 1.0.0 --- 2012-06-15 08:40:35 --- Yordan Georgiev --- Initial version
#
# EOF File:sh_stub.sh



syntax highlighted by Code2HTML, v. 0.9.1


sh stub for cygwin--tags

#!/bin/bash
# File: shStub.sh v.1.3.0 docs at the end 
umask 000 ; 

# print the commands 
# set -x
# print each input line as well
set -v
# exit the script if any statement returns a non-true return value. gotcha !!!
# set -e 


# set the variables from the $0.hostname.conf file which has ini like syntax
setVars(){
  export PATH=/cygdrive/c/cygwin/bin/:$PATH
  MyDir=`dirname $(readlink -f $0)`
  Tmp="$MyDir/tmp/tmp.$$"
  mkdir -p $Tmp    #create the tmp dir if it does not exist 
  ( set -o posix ; set ) >$Tmp/variables.before 
  MyName=`basename $0`
  IniFile="$MyDir/$MyName.`hostname`.conf"
  IniSection=MainSection
  LogFile="$MyDir/$MyName.log"
  # get the machine / host specific configuration 
  parseIniFile
  #source $0
  ( set -o posix ; set ) >$Tmp/variables.after
  wlog " Using the following vars :"
  cmd="comm --nocheck-order -3 $Tmp/variables.before $Tmp/variables.after"
  runCmdAndLog $cmd
  rm -f $Tmp/variables.before $Tmp/variables.after
  rm -f $Tmp/variables.before $Tmp/variables.before 
}
#eof function setVars


# parse the ini like $0.hostname.conf and set the variables
parseIniFile(){
 eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
     -e 's/;.*$//' \
     -e 's/[[:space:]]*$//' \
     -e 's/^[[:space:]]*//' \
     -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
    < $IniFile \
     | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function parseIniFile

# run a command and log the call and its output to the LogFile
# usage: runCmdAndLog $cmd
runCmdAndLog(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
        [ $? -eq 0 ]  || wlog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdAndLog

# run a command on failure exit with message
# usage: runCmdOrExit $cmd

runCmdOrExit(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
    # if error occured during the execution exit with error
    [ $? -eq 0 ] || Exit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    #if no error occured just log the message
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdOrExit

# echo pass params and print them to a log file
wlog(){
  # check terminal if exists echo 
  test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
  # check LogFile and 
  test -z $LogFile || {
    echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
  } #eof test
 } 
# eof function wlog 

exampleFuncWithError(){
  wlog " DEBUG exampleFuncWithError"
  cmd="ls -al /tmp/boo"
  runCmdAndLog $cmd
}
#eof exampleFunc

#remove the 1-st lines of files - example loop with find on files
removeHeaders(){
    #foreach csv file in $MyDir remove the first row
    for file in `find $MyDir -type f -name "*.csv"` 
        do 
          perl -ne 'print if $. > 1' $file > $file.txt
       done
}
#eof func forLoopWithPipesExample


# example loop with perl oneliner
convertWinToUnixNewLines(){
    #foreach csv file in $MyDir do edit in line win to unix new lines
    for file in `find $MyDir -type f -name "*.csv"` 
    do 
        perl -pe 's|\r\n|\n|' $file
    done
}
#eof func forLoopWithPipesExample


# exit with passed status and message
Exit(){
  ExitStatus=0
  case $1 in
   [0-9]) ExitStatus="$1"; shift 1;;
 esac
  Msg="$*"
  test "$ExitStatus" = "0" || Msg=" ERROR: $Msg"
  wlog " $Msg"
  exit $ExitStatus
}
#eof function Exit

# the main function called 
main(){
 setVars
  exampleFuncWithError  
  removeHeaders
  convertWinToUnixNewLines
  }
#eof function main

# Action !!!
main


# Purpose:
# to provide an easy starting template for writing bash and sh scripts
# with  the following features: 
# - prints the set in the script variables
# - separation of host specific vars into $0.`hostname`.conf file
# - wlog function for both xterm and log file printing
# - for loop examples with head removal and inline find and replace 
# 
# EOF File:shStub.sh
# VersionHistory: 
# 1.3.0 --- 2012-05-20 18:48:08 --- ysg --- replacing cmd with error output
# 1.2.4 --- 2012-05-02 20:41:11 --- ysg --- added for loop with pipes 
# 1.1.0 --- ysg --- add runcmd with erro
# 1.0.0 --- ysg --- Initial creation



syntax highlighted by Code2HTML, v. 0.9.1


sh stub for cygwin--tags

cygwin,sh stub

sh-stub

#!/bin/bash
# File: shStub.sh v.1.3.0 docs at the end 
umask 000 ; 

# print the commands 
# set -x
# print each input line as well
set -v
# exit the script if any statement returns a non-true return value. gotcha !!!
# set -e 


# set the variables from the $0.hostname.conf file which has ini like syntax
setVars(){
  export PATH=/cygdrive/c/cygwin/bin/:$PATH
  MyDir=`dirname $(readlink -f $0)`
  Tmp="$MyDir/tmp/tmp.$$"
  mkdir -p $Tmp    #create the tmp dir if it does not exist 
  ( set -o posix ; set ) >$Tmp/variables.before 
  MyName=`basename $0`
  IniFile="$MyDir/$MyName.`hostname`.conf"
  IniSection=MainSection
  LogFile="$MyDir/$MyName.log"
  # get the machine / host specific configuration 
  parseIniFile
  #source $0
  ( set -o posix ; set ) >$Tmp/variables.after
  wlog " Using the following vars :"
  cmd="comm --nocheck-order -3 $Tmp/variables.before $Tmp/variables.after"
  runCmdAndLog $cmd
  rm -f $Tmp/variables.before $Tmp/variables.after
  rm -f $Tmp/variables.before $Tmp/variables.before 
}
#eof function setVars


# parse the ini like $0.hostname.conf and set the variables
parseIniFile(){
 eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
     -e 's/;.*$//' \
     -e 's/[[:space:]]*$//' \
     -e 's/^[[:space:]]*//' \
     -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
    < $IniFile \
     | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function parseIniFile

# run a command and log the call and its output to the LogFile
# usage: runCmdAndLog $cmd
runCmdAndLog(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
        [ $? -eq 0 ]  || wlog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdAndLog

# run a command on failure exit with message
# usage: runCmdOrExit $cmd

runCmdOrExit(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
    # if error occured during the execution exit with error
    [ $? -eq 0 ] || Exit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    #if no error occured just log the message
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdOrExit

# echo pass params and print them to a log file
wlog(){
  # check terminal if exists echo 
  test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
  # check LogFile and 
  test -z $LogFile || {
    echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
  } #eof test
 } 
# eof function wlog 

exampleFuncWithError(){
  wlog " DEBUG exampleFuncWithError"
  cmd="ls -al /tmp/boo"
  runCmdAndLog $cmd
}
#eof exampleFunc

#remove the 1-st lines of files - example loop with find on files
removeHeaders(){
    #foreach csv file in $MyDir remove the first row
    for file in `find $MyDir -type f -name "*.csv"` 
        do 
          perl -ne 'print if $. > 1' $file > $file.txt
       done
}
#eof func forLoopWithPipesExample


# example loop with perl oneliner
convertWinToUnixNewLines(){
    #foreach csv file in $MyDir do edit in line win to unix new lines
    for file in `find $MyDir -type f -name "*.csv"` 
    do 
        perl -pe 's|\r\n|\n|' $file
    done
}
#eof func forLoopWithPipesExample


# exit with passed status and message
Exit(){
  ExitStatus=0
  case $1 in
   [0-9]) ExitStatus="$1"; shift 1;;
 esac
  Msg="$*"
  test "$ExitStatus" = "0" || Msg=" ERROR: $Msg"
  wlog " $Msg"
  exit $ExitStatus
}
#eof function Exit

# the main function called 
main(){
 setVars
  exampleFuncWithError  
  removeHeaders
  convertWinToUnixNewLines
  }
#eof function main

# Action !!!
main


# Purpose:
# to provide an easy starting template for writing bash and sh scripts
# with  the following features: 
# - prints the set in the script variables
# - separation of host specific vars into $0.`hostname`.conf file
# - wlog function for both xterm and log file printing
# - for loop examples with head removal and inline find and replace 
# 
# EOF File:shStub.sh
# VersionHistory: 
# 1.3.0 --- 2012-05-20 18:48:08 --- ysg --- replacing cmd with error output
# 1.2.4 --- 2012-05-02 20:41:11 --- ysg --- added for loop with pipes 
# 1.1.0 --- ysg --- add runcmd with erro
# 1.0.0 --- ysg --- Initial creation



syntax highlighted by Code2HTML, v. 0.9.1


src-dir-to-html



sfw/sh/doc/src-dir-to-html.sh



#!/bin/bash
# File: src-dir-to-html.sh v.1.3.0 docs at the end
umask 000 ;

# print the commands
set -x
# print each input line as well
set -v
# exit the script if any statement returns a non-true return value. gotcha !!!
# set -e


# set the variables from the $0.hostname.conf file which has ini like syntax
setVars(){

export PATH=/cygdrive/c/cygwin/bin/:$PATH
MyDir=`dirname $(readlink -f $0)`
cd "$MyDir"
# echo go up 4 times
for i in {1..5} ; do cd .. ; done ;
#echo print the pwd
ProductBaseDir=`pwd`
echo "ProductBaseDir is $ProductBaseDir \n\n"
Tmp="$MyDir/tmp/tmp.$$"
mkdir -p $Tmp #create the tmp dir if it does not exist
( set -o posix ; set ) >$Tmp/variables.before
MyName=`basename $0`
IniFile="$MyDir/$MyName.`hostname`.conf"
IniSection=MainSection
LogFile="$MyDir/$MyName.log"
# get the machine / host specific configuration
parseIniFile
#source $0
( set -o posix ; set ) >$Tmp/variables.after
wlog " Using the following vars :"
cmd="comm --nocheck-order -3 $Tmp/variables.before $Tmp/variables.after"
runCmdAndLog $cmd
rm -f $Tmp/variables.before $Tmp/variables.after
rm -f $Tmp/variables.before $Tmp/variables.before
}
#eof function setVars


# parse the ini like $0.hostname.conf and set the variables
parseIniFile(){
eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
-e 's/;.*$//' \
-e 's/[[:space:]]*$//' \
-e 's/^[[:space:]]*//' \
-e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
< $IniFile \
| sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function parseIniFile


# run a command and log the call and its output to the LogFile
# usage: runCmdAndLog $cmd

runCmdAndLog(){
cmd="$*" ;
wlog " DEBUG running cmd : \"$cmd\""
Msg=$($cmd 2>&1)
[ $? -eq 0 ] || wlog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdAndLog


# run a command on failure exit with message
# usage: runCmdOrExit $cmd


runCmdOrExit(){
cmd="$*" ;
wlog " DEBUG running cmd : \"$cmd\""
Msg=$($cmd 2>&1)
# if error occured during the execution exit with error
[ $? -eq 0 ] || Exit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
#if no error occured just log the message
wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdOrExit


# echo pass params and print them to a log file
wlog(){
# check terminal if exists echo
test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
# check LogFile and
test -z $LogFile || {
echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
} #eof test
}
# eof function wlog


replicateSrcDirStructure(){
# go to the common root
cd $ProductVersionDir
# replicate the folder structure
find sfw -type d -exec mkdir -p docs/html/src/{} \;
}
#eof func replicateSrcDirStructure


createSfwSrcDocs(){

wlog " DEBUG START createSfwSrcDocs"
cd "$ProductVersionDir"
# foreach src file create its html file into the src html dir
find "sfw" -type f -exec perl $CodeToHtml {} docs/html/src/{}.html \;
cmd="find $ProductVersionDir/docs/html/src/perl/ -type f"
runCmdAndLog $cmd
wlog " DEBUG STOP createSfwSrcDocs"

}
#eof wlog " DEBUG createSfwSrcDocs"



# exit with passed status and message
Exit(){
ExitStatus=0
case $1 in
[0-9]) ExitStatus="$1"; shift 1;;
esac
Msg="$*"
test "$ExitStatus" = "0" || Msg=" ERROR: $Msg"
wlog " $Msg"
exit $ExitStatus
}
#eof function Exit


# the main function called
main(){
setVars
replicateSrcDirStructure
createSfwSrcDocs
Exit 0 "created the docs"
}
#eof function main


# Action !!!
main


#
# Purpose:
# to produce the html files our of the source files from the sfw dir into a replicated
# docs/html/src/sfw dir
# features:

# - prints the set in the script variables
# - separation of host specific vars into $0.`hostname`.conf file
# - wlog function for both xterm and log file printing

# - for loop examples with head removal and inline find and replace
#

# Requirements
# - cygwin , perl , sh , code2html by

# -
#

# VersionHistory:
# 1.4.0 --- 2012-07-24 17:33:29 --- ysg --- Initial creation of src-dir-to-html.sh

# 1.3.0 --- 2012-05-20 18:48:08 --- ysg --- replacing cmd with error output
# 1.2.4 --- 2012-05-02 20:41:11 --- ysg --- added for loop with pipes
# 1.1.0 --- ysg --- add runcmd with erro

# 1.0.0 --- ysg --- Initial creation of sh_stub
#
# EOF file:src-dir-to-html.sh



syntax highlighted by Code2HTML, v. 0.9.1


numberFormatter



sfw/tools/math/numberFormatter/numberFormatter.pl



use strict ;
use warnings ;

require 5.004;
use POSIX qw(locale_h);
# Get some of locale's numeric formatting parameters
my ($thousands_sep, $grouping) =
@{localeconv()}{'thousands_sep', 'grouping'};

# Apply defaults if values are missing
$thousands_sep = ' ' unless $thousands_sep;
# grouping and mon_grouping are packed lists
# of small integers (characters) telling the
# grouping (thousand_seps and mon_thousand_seps
# being the group dividers) of numbers and
# monetary quantities. The integers' meanings:
# 255 means no more grouping, 0 means repeat
# the previous grouping, 1-254 means use that
# as the current grouping. Grouping goes from
# right to left (low to high digits). In the
# below we cheat slightly by never using anything
# else than the first grouping (whatever that is).
my @grouping = () ;

if ($grouping) {
@grouping = unpack("C*", $grouping);
} else {
@grouping = (3);
}
# Format command line params for current locale
for (@ARGV) {
$_ = int; # Chop non-integer part
1 while
s/(\d)(\d{$grouping[0]}($|$thousands_sep))/$1$thousands_sep$2/;
print "$_ ";
}
print "\n";

#source:http://www.perlmonks.org/?node_id=11.1.8
# author:John M. Dlugosz



syntax highlighted by Code2HTML, v. 0.9.1


code2html sh wrapper for create a folder structure in html out of src project

#!/bin/bash
# File: create-perl-src-docs.sh v.1.3.0 docs at the end 
umask 000 ; 

# print the commands 
set -x
# print each input line as well
set -v
# exit the script if any statement returns a non-true return value. gotcha !!!
# set -e 


# set the variables from the $0.hostname.conf file which has ini like syntax
setVars(){
  export PATH=/cygdrive/c/cygwin/bin/:$PATH
  MyDir=`dirname $(readlink -f $0)`
    cd "$MyDir"
    # echo go up 4 times 
    for i in {1..5} ; do cd .. ; done ;
    #echo print the pwd
    ProductBaseDir=`pwd`
    echo "ProductBaseDir is $ProductBaseDir \n\n"
  Tmp="$MyDir/tmp/tmp.$$"
  mkdir -p $Tmp    #create the tmp dir if it does not exist 
  ( set -o posix ; set ) >$Tmp/variables.before 
  MyName=`basename $0`
  IniFile="$MyDir/$MyName.`hostname`.conf"
  IniSection=MainSection
  LogFile="$MyDir/$MyName.log"
  # get the machine / host specific configuration 
  parseIniFile
  #source $0
  ( set -o posix ; set ) >$Tmp/variables.after
  wlog " Using the following vars :"
  cmd="comm --nocheck-order -3 $Tmp/variables.before $Tmp/variables.after"
  runCmdAndLog $cmd
  rm -f $Tmp/variables.before $Tmp/variables.after
  rm -f $Tmp/variables.before $Tmp/variables.before 
}
#eof function setVars


# parse the ini like $0.hostname.conf and set the variables
parseIniFile(){
 eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
     -e 's/;.*$//' \
     -e 's/[[:space:]]*$//' \
     -e 's/^[[:space:]]*//' \
     -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
    < $IniFile \
     | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
}
#eof function parseIniFile


# run a command and log the call and its output to the LogFile
# usage: runCmdAndLog $cmd
runCmdAndLog(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
        [ $? -eq 0 ]  || wlog "ERROR : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdAndLog


# run a command on failure exit with message
# usage: runCmdOrExit $cmd

runCmdOrExit(){
    cmd="$*" ; 
    wlog " DEBUG running cmd : \"$cmd\""
    Msg=$($cmd 2>&1)
    # if error occured during the execution exit with error
    [ $? -eq 0 ] || Exit "ERROR : FATAL : Failed to run the following command \"$cmd\" with the following output \"$Msg\" !!!"
    #if no error occured just log the message
    wlog " DEBUG : cmdoutput : \"$Msg\""
}
#eof function runCmdOrExit


# echo pass params and print them to a log file
wlog(){
  # check terminal if exists echo 
  test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
  # check LogFile and 
  test -z $LogFile || {
    echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
  } #eof test
 } 
# eof function wlog 


replicateSrcDirStructure(){
  
  cd $ProductVersionDir
  find sfw -type d -exec mkdir -p docs/html/src/{} \;
  

}
#eof func replicateSrcDirStructure


createSfwSrcDocs(){

  wlog " DEBUG START createSfwSrcDocs"
  cd "$ProductVersionDir"
  find "sfw" -type f -exec perl $CodeToHtml {} docs/html/src/{}.html \;
  cmd="find $ProductVersionDir/docs/html/src/perl/ -type f"
  runCmdAndLog $cmd
  wlog " DEBUG STOP createSfwSrcDocs"

}
#eof wlog " DEBUG createSfwSrcDocs"



# exit with passed status and message
Exit(){
  ExitStatus=0
  case $1 in
   [0-9]) ExitStatus="$1"; shift 1;;
 esac
  Msg="$*"
  test "$ExitStatus" = "0" || Msg=" ERROR: $Msg"
  wlog " $Msg"
  exit $ExitStatus
}
#eof function Exit


# the main function called 
main(){
 setVars
  replicateSrcDirStructure
  createSfwSrcDocs  
  Exit 0 "created the docs"
  }
#eof function main


# Action !!!
main


#
# Purpose:
# to produce the html files our of the perl source files into a single directory
# features: 
# - prints the set in the script variables
# - separation of host specific vars into $0.`hostname`.conf file
# - wlog function for both xterm and log file printing
# - for loop examples with head removal and inline find and replace 
# 
# Requirements
# - cygwin , perl , sh , code2html by 
# - 
# EOF File:create-perl-src-docs.sh
# VersionHistory: 
# 1.4.0 --- 2012-07-24 17:33:29 --- ysg --- Initial creation of create-perl-src-docs.sh
# 1.3.0 --- 2012-05-20 18:48:08 --- ysg --- replacing cmd with error output
# 1.2.4 --- 2012-05-02 20:41:11 --- ysg --- added for loop with pipes 
# 1.1.0 --- ysg --- add runcmd with erro
# 1.0.0 --- ysg --- Initial creation of sh_stub


syntax highlighted by Code2HTML, v. 0.9.1

2012-07-23

how-to convert cygwin paths to windows paths

:: File:ToWindowsDir.cmd v.1.1.0 docs at the end
perl -e "use Win32::Clipboard ; $CLIP = Win32::Clipboard();$NEWCLIP=$CLIP->Get();$NEWCLIP=~s/\//\\/gi;$NEWCLIP=~s/\\cygdrive\\([a-zA-Z]{1})/$1:/gi;$CLIP->Set($NEWCLIP);"
 
 
:: Purpose:
:: change any / chars from your windows clipboard into \ chars 
:: replace any drive letter c: with /cygdrive/c
:: from your clipboard 
:: 
:: Requirements 
:: windows , perl , Win32::Clipboard module 
:: 
:: Usage: 
:: place this cmd file in your path 
:: double-click bat file or create a short cut of it , place on desktop 
:: right click the shortcut , Properties , Click on ShortCut key , press W , click ok
:: COPY some path from your explorer such as C:\Temp, Alt + U 
:: paste in cygwin as /cygwin/c/Temp
:: 
:: VersionHistory
:: 1.1.0 --- ysg --- ToWindowsDir
:: 0.2.0 -- ysg -- Adjusted to ANY letter
:: 0.1.0 -- ysg -- Initial creation
:: 
:: EOF file : ToWindowsDir.cmd

2012-07-19

perl cheat sheet v1.1.0

# file: PerlCheatSheet.pl v.1.1.0 docs at the end 
 
 # INSTALLING MODULES ON PERL 
perl -e -MCPAN "install GD" 
   
 ppm search module:name
 
 
#READ ALL ROWS OF A FILE TO ALIST 
open (INPUT, "<$inputfile") || print "could not open the file!\n";  @myfile = <INPUT>;close INPUT;
 
 
#FOREACH LINE OF THE FILE DO SOMETHING
foreach my $line ( @lineArray  ) 
{
   print "$line" ; 
} #eof foreach 
# END FOREACH LINE 
 
 
#GET A NICE TIME 
sub timestamp {
 #
 # Purpose: returns the time in yyyymmdd-format 
 #
 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 
 #---- change 'month'- and 'year'-values to correct format ---- 
 $min = "0$min" if ($min < 10); 
 $hour = "0$hour" if ($hour < 10);
 $mon = $mon + 1;
 $mon = "0$mon" if ($mon < 10); 
 $year = $year + 1900;
 $mday = "0$mday" if ($mday < 10); 
 return "$year$mon$mday" . "_" . "$hour$min" . "_" . $sec; 
} #eof timestamp 
 
 
 
 # READ ALL ROWS TO LIST
open (FILE,$file);
 @rows = <FILE>;
close (FILE);
 
 
# GREP ALL ROWS CONTAINING 'MACHINE=' (TO A LIST)
@list = grep(/machine=/,@rows); 
 
# A NICE WAY TO CONCATENATE A STRING TO THE SAME STRING 
 #--- Collect agents from yesterday ------------------------------
 $sql = "select distinct(AgentName),LocationName from TransactionDetails td "; 
 $sql .= "inner join Applications ap on td.ApplicationID = ap.ApplicationID ";
 $sql .= "inner join Agents ag on td.AgentID = ag.AgentID ";
 $sql .= "inner join Locations lo on td.LocationID = lo.LocationID ";
 $sql .= "where ApplicationName like \'" . $APPLICATION . "\' and "; 
 $sql .= "StartTime between \'" . $DAY2 . "\' and \'" . $DAY1 . "\' "; 
 $sql .= "order by 1";
 # THE EQUIVALENT OF THE SET COMMAND TROUGH THE COMMAND PROMT 
 foreach $i (keys %ENV) 
 {
 print FH "$i : $ENV{$i} \n";
 }
 #accept a command line parameter 
 our $CycleScriptRun_pid = $ARGV[0] ; 
 
 
#========================================================== 
 #start a Windows process 
 use Win32 ; 
 use Win32::Process ; 
 
 my $DayCycle_path= $varHolder->{'BASEDIR'} . " DayCycle.exe" ;
 if( $varHolder->{VISIBLE_MODE} == 1)
 { Win32::Process::Create( $DayCycle_o, "$DayCycle_path", "" , 0, 
 CREATE_NEW_CONSOLE ,$varHolder->{'BASEDIR'}); } 
 else
 { Win32::Process::Create( $DayCycle_o, "$DayCycle_path", "" , 0,
 CREATE_NO_WINDOW ,$varHolder->{'BASEDIR'}); } 
 
 $DayCycle_pid = $DayCycle_o->GetProcessID() ; 
 #========================================================== 
#==========================================================
#Purpose : to tie a file 
 #============================= =============================
 use Tie::File ; 
 my @file_array = ();
 my $file = 'C:/Temp/folder/settings.txt' ; 
 tie @file_array , 'Tie::File', $file , memory => 100_000_000 or die "I cannot find the $file" ; 
 
 foreach (@file_array) #foreach line of the file 
 { s/$setting=(\d+)/$setting=$value/; 
 }
 untie @file_array ; 
 #==========================================================
 #========================================================== 
# create a nameless hash
#========================================================== 
 my $record = #one record for each cycle 
 {
 APP=> "$csAppName" , 
 SCRIPT=> "$psCurrentScript" , 
 STEP=> "$psCurrentStep" 
 } ;
#========================================================== 
#========================================================== 
 #simple  perl regex cheatsheet
#========================================================== 
Operators
m// 'Match' operator
s/// 'Substitute' operator 
tr/// 'Translate' operator 
 
# Special Characters
. Any single character escept newline n
b Between word and non-word chars, ie: /bcat/b/ matches "cat" but not "scat" 
B NOT between word and non-word chars 
w Word character 
 W Non-word character
d Digit
D Non-digit
s White-space
S Non-white-space
 
# Assertions (Position Definers)
^ Start of the string
 $ End of the string
 
# Quantifiers (Numbers Of Characters) 
 n* Zero or more of 'n'
n+ One or more of 'n'
n? A possible 'n'
 
n{2} Exactly 2 of 'n'
n{2, } At least 2 (or more) of 'n' 
n{2,4} From 2 to 4 of 'n'
 
 # Groupings
() Parenthesis to group expressions
(n/sitebuilder/regex/images/1/a) Either 'n' or 'a'
Character Classes
[1-6] A number between 1 and 6 
[c-h] A lower case character between c and h 
 [D-M] An upper case character between D and M
[^a-z] Absence of lower case character between a and z
[_a-zA-Z] An underscore or any letter of the alphabet
 
 Useful  Perl  Snippets
$mystring =~ s/^s*(.*?)s*$/$1/; Trim leading and trailing whitespace from $mystring 
 $mystring =~ tr/A-Z/a-z/; Convert $mystring to all lower case
 $mystring =~ tr/a-z/A-Z/; Convert $mystring to all upper case 
tr/a-zA-Z//s; Compress character runs, eg: bookkeeper -> bokeper
tr/a-zA-Z/ /cs; Convert non-alpha characters to a single space 
 
 
#=============================================================
#Install a perl module from behind a firewalll using ppm
#=============================================================
Example with Compress-Bzip2 
 
1. Download tar package from the nearest cpan mirror to C:\Temp\TEMP folder (could be other also ; ) 
2. Create Compress-Bzip2.ppd type of file , containging the following: 
 
<?xml version="1.0" encoding="UTF-8"?> 
 <SOFTPKG NAME="Compress-Bzip2" VERSION="2,2,09"> 
<TITLE>Compress-Bzip2</TITLE>
<ABSTRACT>Blah</ABSTRACT>
<AUTHOR>Somebody</AUTHOR>
<IMPLEMENTATION> 
<CODEBASE HREF="file:///C|/Temp/TEMP/Compress-Bzip2-2.09.tar.gz "></CODEBASE>
<INSTALL></INSTALL>
<UNINSTALL></UNINSTALL>
</IMPLEMENTATION>
</SOFTPKG> 
 
Attention: . Name and codebase NOT C:\ BUT file:///C|
 
 3. Open Dos prompt into the C:\Temp\TEMP (or whichever you prevered in the beginning) 
 4. Run the command : 
 ppm rep add downloadedTars C:\Temp\A_DOWNLOADS\downloaded _perlmodules 
 In order to add the folder to the list of your current ppm repositories 
 
5. ppm install Compress-Bzip2
 In order to install the module from the local folder 
 
6. ppm rep delete myNewRepository 
 In order to remove the repository from the ppm 
#Add company's servers to thte local ppm's repository 
ppm rep add linox1 http://linox.company.com/mirror/cpan/
ppm rep add linox2  ftp://linux.company.com/mirror/cpan/
 
 
#sleep for less than second in Windows 
 use Win32 ; 
 Win32::sleep ($time_in_milliseconds);
 
#=================================================================== 
 #throw proper errro messages while checking the file size 
 use File::stat qw(:FIELDS);
#create the obj wrapper for getting the file attributes 
 my $st =stat($file) or croak ( "No $stdout : $!"); #die will shut down the program !!!! 
 # get the file size 
 my $size = $st->size();
$stat_obj =stat($stdout) or die "No $stdout: $!";
#throw proper errro messages ^^^^
 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
 $atime,$mtime,$ctime,$blksize,$blocks) 
 = stat($filename);
#===================================================================
 
#================================================================
 
#get the computername of a computer 
 $computername = $ENV{COMPUTERNAME} ; 
 #get the username of the a Windows computer
$userName = $ENV{USERNAME} ; 
 #get the name of the currrent executing script and ints pid 
 print $0 , $$ ; 
 #=========================================================== ======== 
 #The textpad settings for jump to error for perl scripts File 1 Register 2
^.+at (.+) line ([0-9]+)[.,]?
exec *.pl *.pm *.cgi /s /b do  perl -wc 
 
#=========================================================== ===== 
 
#===================================================================
#======== Exctract only the name of a file witout the long path 
 #=================================================================== 
 
 my ($keijo) = "c:\\homo\\urpo\\neste\\kekvo.exe";
 @homo = split(/\\/,$keijo);
 $jee = pop(@homo);
 #The same thing 
 $file=~m/^.*(\\|\/)(.*)/; # strip the remote path and keep the filename
 my $name = $2; 
 
#===================================================================
#=================================================================== 
#PRINT TILL THE END OF A LABLE 
 #============================= ====================================== 
 print <<END_HTML;
 
 <html> <head> 
 <title>thanks!</title> 
 </head> 
 
 <body> 
 <p>thanks for uploading your photo!</p> 
 
 <p>your photo:</p> 
 <img src="/upload/$filename" border="0"> 
 
 </body> </html> 
 
END_HTML
# IMPORTANT !!!! IF THERE ARE SPACES IN THE PREVIOUS LINE == SYNTAX ERROR 
 
#=================================================================== 
 
#check for file existance and other attributes 
 $readfile="myfile.cgi";
 
if ( (-e $readfile) && (-r $readfile) ) 
 { 
 #proceed with your code
}
 
#================================================================= 
 #how to check my perl installed modules
#perldoc perllocal OR 
 #ppm install ExtUtils::Installed save and run this one 
 #source  http://www.cpan.org/misc/cpan-faq.html#How_installed_modules 
 
use ExtUtils::Installed;
my $instmod = ExtUtils::Installed->new();
 foreach my $module ($instmod->modules()) 
 {
 my $version = $instmod->version($module) || "???"; 
 print "$module -- $version\n"; 
 }
 #=================================================================
 
#How to check version of a module on Windows XP
 perl  -le "use CGI; print $CGI::VERSION"
 
#change the @INC withing a perl script 
 #Is Mail::Sendmail installed correctly? (Can you run a script with just "use Mail::Sendmail;"?) Check your @INC on your web server, and copy Sendmail.pm to a Mail subdirectory of one of the dirs. in your @INC. If you have not access to any of these, add the directory in a BEGIN block: 
 #BEGIN{ unshift @INC, '/absolute/path/to/my/personal/perl_lib'; } and copy Sendmail.pm to /absolute/path/to/my/personal/perl_lib/Mail/Sendmail.pm. 
 
 
local( $/, *FILE ) ; 
open (FILE , $sessionFile ) or 
die "Cannot find $sessionFile !!! " ; 
$fileString = <FILE>; #slurp the whole file into one string !!! 
close FILE ; 
 
use Encode ; 
my $fileByteStream = decode('windows-1251', $fileString );
my $UTFSream = encode('UTF-8', $fileByteStream);
 
print "Read the whole directory for specific types of files " ; 
$dh = DirHandle->new($path) or die "Can't open $path : $!\n";
@files = grep { /\.[ch]$/i } $dh->read();
 
# START FOREACH LINE 
#SET HERE THE PATH TO THE FILE 
my $inputfile='DD61_STG_OMDW.vwFactUserRegistration.txt' ; 
 
#READ ALL ROWS OF A FILE TO ALIST 
open (INPUT, "<$inputfile") || print "could not open the file!\n"; 
my @lineArray = <INPUT>;
close INPUT;
 
 
   #how-to print key values in hashes 
   while( my ($key, $value) = each %$refHash) 
   {
      print "\n key: $key, value: $value.\n";
   }
 
#<<DOC_END;
The purpose of the script is ... 
DOC_END
 
use Time::Local ; 
# get a nicely formated time 
my $timestamp = strftime("%d/%m/%y %H:%M:%S", localtime());
 
# how-to install modules from the cpan
perl -MCPAN -e 'install HTML::Template' 
perl -MCPAN -e "install PAR::Packer" 
 
# perl defined or operator
$IniFile //= "$ProductVersionDir/conf/$HostName/ini/run-$EnvironmentName.$HostName.ini";
 
##################################################
## START install perl modules by tar.gz
##################################################
# go to where you did download the modules tar
cd /path/to/module
# unzip 
gzip -d *.tar.gz
# untar verbosely 
tar xvf *.tar
# check the dirs created 
for dir in `find \`pwd\` -maxdepth 1 -type d ` ; do echo cd $dir ; done ;
# go to the first dir which was created from the untar operation
for dir in `find \`pwd\` -maxdepth 1 -type d ` ; do cd $dir ; done ;
# create the make file 
perl Makefile.PL
# run make 
make
# optionally test 
make test 
# optionally create the make html 
make html 
# install 
make install
##################################################
## STOP install perl modules by tar.gz
##################################################
 
 
 
# Purpose
# the pur
# VersionHistory: 
# 1.1.0 --- 2012-07-19 19:33:45 --- ysg --- Added module installation instructions 
# 1.0.0 --- 2012-06-18 09:01:29 --- ysg --- Initial version 
 
 
 
# eof: file:PerlCheatSheet.pl
   
   

Labels

perl (41) Cheat Sheet (25) how-to (24) windows (14) sql server 2008 (13) linux (12) oracle (12) sql (12) Unix (11) cmd windows batch (10) mssql (10) cmd (9) script (9) textpad (9) netezza (8) sql server 2005 (8) cygwin (7) meta data mssql (7) metadata (7) bash (6) code generation (6) Informatica (5) cheatsheet (5) energy (5) tsql (5) utilities (5) excel (4) future (4) generic (4) git cheat sheet (4) html (4) perl modules (4) programs (4) settings (4) sh (4) shortcuts (4) поуки (4) принципи (4) Focus Fusion (3) Solaris (3) cool programs (3) development (3) economy (3) example (3) freeware (3) fusion (3) logging (3) morphus (3) mssql 2005 (3) nuclear (3) nz (3) parse (3) python (3) sftp (3) sofware development (3) source (3) sqlplus (3) table (3) vim (3) .Net (2) C# (2) China (2) GUI (2) Google (2) GoogleCL (2) Solaris Unix (2) architecture (2) ascii (2) awk (2) batch (2) cas (2) chrome extensions (2) code2html (2) columns (2) configuration (2) conversion (2) duplicates (2) excel shortcuts (2) export (2) file (2) free programs (2) informatica sql repository (2) linux cheat sheet (2) mssql 2008 (2) mysql (2) next big future (2) nsis (2) nz netezza cheat sheet (2) nzsql (2) ora (2) prediction (2) publish (2) release management (2) report (2) security (2) single-click (2) sqlserver 2005 (2) sqlserver 2008 (2) src (2) ssh (2) template (2) tools (2) vba (2) video (2) xlt (2) xml (2) youtube videos (2) *nix (1) .vimrc (1) .virmrc vim settings configs (1) BSD license (1) Bulgaria (1) Dallas (1) Database role (1) Dense plasma focus (1) Deployment (1) ERP (1) ExcelToHtml (1) GD (1) GDP (1) HP-UX (1) Hosting (1) IDEA (1) INC (1) IT general (1) ITIL management bullshit-management (1) IZarc (1) Java Web Start (1) JavaScript anchor html jquery (1) Khan Academy (1) LINUX UNIX BASH AND CYGWIN TIPS AND TRICKS (1) Linux Unix rpm cpio build install configure (1) Linux git source build .configure make (1) ListBox (1) MIT HYDROGEN VIRUS (1) OO (1) Obama (1) PowerShell (1) Run-time (1) SDL (1) SIWA (1) SOX (1) Scala (1) Services (1) Stacks (1) SubSonic (1) TED (1) abstractions (1) ansible hosts linux bash (1) ansible linux deployment how-to (1) ansible yum pip python (1) apache (1) apache 2.2 (1) application life cycle (1) architecture input output (1) archive (1) arguments (1) avatar (1) aws cheat sheet cli (1) aws cli (1) aws cli amazon cheat sheet (1) aws elb (1) backup (1) bash Linux open-ssh ssh ssh_server ssh_client public-private key authentication (1) bash perl search and replace (1) bash stub (1) bin (1) biofuels (1) biology (1) books (1) browser (1) bubblesort (1) bugs (1) build (1) byte (1) cas_sql_dev (1) chennai (1) chrome (1) class (1) claut (1) cmdow (1) code generation sqlserver (1) command (1) command line (1) conf (1) confluence (1) console (1) convert (1) cool programs windows free freeware (1) copy paste (1) copy-paste (1) csv (1) ctags (1) current local time (1) cygwin X11 port-forwarding mintty xclock Linux Unix X (1) cygwin bash how-to tips_n_tricks (1) cygwin conf how-to (1) data (1) data types (1) db2 cheat sheet (1) db2 starter ibm bash Linux (1) debt (1) diagram (1) dictionaries (1) digital (1) disk (1) disk space (1) documentation (1) dos (1) dubai (1) e-cars (1) electric cars (1) electricity (1) emulate (1) errors (1) exponents (1) export workflow (1) extract (1) fast export (1) fexp (1) file extension (1) file permissions (1) findtag (1) firewall (1) for loop (1) freaky (1) functions (1) fusion research (1) german (1) git gitlab issues handling system (1) google cli (1) google code (1) google command line interface (1) gpg (1) ha (1) head (1) helsinki (1) history (1) hop or flop (1) host-independant (1) how-to Windows cmd time date datetime (1) ibm db2 cognos installation example db deployment provisioning (1) ideas (1) image (1) informatica oracle sql (1) informatica repo sql workflows sessions file source dir (1) informatica source files etl (1) install (1) isg-pub issue-tracker architecture (1) it management best practices (1) java (1) jump to (1) keyboard shortcuts (1) ksh (1) level (1) linkedin (1) linux bash ansible hosts (1) linux bash commands (1) linux bash how-to shell expansion (1) linux bash shell grep xargs (1) linux bash tips and t ricks (1) linux bash unix cygwin cheatsheet (1) linux bash user accounts password (1) linux bash xargs space (1) linux cheat-sheet (1) linux cheatsheet cheat-sheet revised how-to (1) linux how-to non-root vim (1) linux ssh hosts parallel subshell bash oneliner (1) london (1) make (1) me (1) metacolumn (1) metadata functions (1) metaphonre (1) method (1) model (1) movie (1) multithreaded (1) mysql cheat sheet (1) mysql how-to table datatypes (1) n900 (1) nano (1) neteza (1) netezza bash linux nps (1) netezza nps (1) netezza nps nzsql (1) netezza nz Linux bash (1) netezza nz bash linux (1) netezza nz nzsql sql (1) netezza nzsql database db sizes (1) non-password (1) nord pol (1) nps backup nzsql schema (1) number formatting (1) nz db size (1) nz table count rows (1) nzsql date timestamp compare bigint to_date to_char now (1) on-lier (1) one-liners (1) one-to-many (1) oneliners (1) open (1) open source (1) openrowset (1) openssl (1) oracle PL/SQL (1) oracle Perl perl (1) oracle installation usability (1) oracle number formatting format-model ora-sql oracle (1) oracle templates create table (1) oracle trigger generic autoincrement (1) oracle vbox virtual box cheat sheet (1) oracle virtual box cheat sheet (1) outlook (1) parser (1) password (1) paths (1) perl @INC compile-time run-time (1) perl disk usage administration Linux Unix (1) perl modules configuration management (1) permissions (1) php (1) picasa (1) platform (1) postgreSQL how-to (1) powerShell cmd cygwin mintty.exe terminal (1) ppm (1) predictions (1) prices (1) principles (1) productivity (1) project (1) prompt (1) proxy account (1) public private key (1) publishing (1) putty (1) qt (1) read file (1) registry (1) relationship (1) repository (1) rm (1) scala ScalaFmt (1) scp (1) scripts (1) scsi (1) search and replace (1) sed (1) sendEmail (1) sh stub (1) shortcuts Windows sql developer Oracle (1) sidebar (1) silicon (1) smells (1) smtp (1) software development (1) software procurement (1) sofware (1) sort (1) sql script (1) sql_dev (1) sqlcmd (1) sqlite (1) sqlite3 (1) sshd (1) sshd cygwin (1) stackoverflow (1) stored procedure (1) stub (1) stupidity (1) subroutines (1) svn (1) sysinternals (1) system design (1) tail (1) tar (1) temp table (1) templates (1) teradata (1) terminal (1) test (1) testing (1) theory (1) thorium (1) time (1) tip (1) title (1) tmux .tmux.conf configuration (1) tmux efficiency bash (1) tool (1) ui code prototyping tips and tricks (1) umask Linux Unix bash file permissions chmod (1) url (1) urls (1) user (1) utility (1) utils (1) vb (1) vbox virtual box cheat sheet (1) vim perl regex bash search for string (1) vim recursively hacks (1) vim starter (1) vim-cheat-sheet vim cheat-sheet (1) vimeo (1) visual stuio (1) warsaw (1) wiki (1) wikipedia (1) window (1) windows 7 (1) windows 8 (1) windows programs (1) windows reinstall (1) windows utility batch perl space Windows::Clipboard (1) wisdoms (1) workflow (1) worth-reading (1) wrapper (1) xp_cmdshell (1) xslt (1) youtube (1)

Blog Archive

Translate with Google Translate

My Blog List