Sunday, 15 April 2018

Use Full Git Details


Use Full Git Details
Installing Git Linux: Apt-get install git-core
Windows: http://msysgit.github.com
Git –version
Configuring Git system level configuration git config --global user.name "phani git"
it config --global user.email "venkataphanikumar.r@gmail.com"
git config --global –list
git config --global core.editor vim
git config --global help.autocorrect 1
git config --global color.ui auto
git config --global color.ui auto
cat ~/.gitconfig
git config --global --unset core.editor
git config –sytem
stored in /etc/gitconfig or c:\programFiles\Git\etc\gitconfig
User-level configuration
git config –global
Stored in ~/.gitconfig or c:\Users\name\.gitconfig
Repository-level configuration
git config –global
stored in .git/config in each repo
Creating a local repository
Adding files
Comimting changes
Viewing history
Viewing a diff
Working copy, staging, and repository
Deleting files
Cleaning the working copy
Ignoring files with .gitignore
Initiate link to git
git init
Initialized empty Git repository in /home/phani/code-git/.git/

echo "Hello, Git" > README.txt
git status
Untracked files: README.txt
Add new file to git repo
git add README.txt
git status
Changes to be committed : README.txt
Changes to be committed
git commit
Added README.txt
git log
nano README.txt
Modify the file in second time
git status
Changes not staged for commit ; README.txt
Update file in git repo
git add -u
git status
Changes to be committed: README.txt
git log
git commit -m "updated README.txt"
git log
Changes between 2 commits
git diff a5b807..9a3dd7
(or)
Git diff HEAD~1..HEAD [HEAD= latest version, HEAD~1 = latest -1 version]
(or)
Git diff HEAD~1..
Add new files to stating
git add file1.txt file2.txt
(or)
Git add -A
Git commit -m “adding new 2 files” [-m = comments]
Remove file
rm file2.txt
git status
Changes not staged for commit:
git add -u
git status
git add file3.txt
Mv file1.txt new_file_name.txt
git add -A (-A=add all)
git commit -m "Reorganized" [commit for stating]
Revert our local changes to latest version in git
git checkout README.txt
HARD, SOFT RESET
git reset –hard
git reset --soft HEAD~1
Cleaning the working copy
git clean -f
Ignoring files with .gitignore
creating a local repository
Adding, updating , and deleting files
Commiting changes
Viewing history and diffs
Working copy, staging, and repository
Cleaning the working copy
Ignoring files with .gitignore
Cloning a remote repository
Listing remote repositories
Feching changes from a remote
Merging changes
Pulling from a remote
Pushing changes remotely
Working with tags
git clone https://github.com/jquery/jquery.git
git log –onelineoption [comments for all commits will display]
git log --oneline |wc -l
git log --oneline –graph
git shortlog
git shortlog -sne
git show HEAD [Last commit made]
git log --oneline
git show 2b5f5d5
git remote
git remove -v
Git protocols
http(s) 80/443 – read-write pwd for auth firewall friendly
Git 9418 –read-only anonymous only
Ssh 22 – read-write SSH key for auth
File n/a – read write local only

git branch
git branch -r
git tag

git remote add origin https://github.com/venkataphanikumarr/GitFundamentals.git
Git fetch
git fetch original
git log original/master
git merge origin/master
git branch -r
git fetch; git merge original/master (or) get pull
git push



Tags are 3types
git tag v1.0
git tag -a v1.0_with_message
git tag -s v1.0_signed

git push –tags
Cloning a remote repository
Fetching and pulling from a remote repository
Pushing changes
Working with tags
Working with local branches
Stashing changes
Merging branches
Rebasing commits
Cherry-picking commits
Working with remote branches
git log --graph –oneline
git log --graph --oneline --all –decorate

git config --global alias.lga "log --graph --oneline --all –decorate"
git lga
cat ~/.gitconfig

Git branch feature1
git checkout feature1
echo "Feature1" >> README.txt
git commit -am "added feature1"
git lga
Note: branches follow commits as you add aditional commits to that branch
Tags: stay on same commit (friendly name for perticular commit)

Git checkout master
git branch fix1 561e0ef
git checkout fix1
echo "Fixing bug #1234" >> README.txt
git commit -am "fix bug 1234"

git branch -m fix1 bug1234 (rename the branch)
git branch -D bug1234 (delete the branch)

Bring back deleted branch (only available 30 days)
git reflog
git branch bug1234 8335b38
git checkout bug1234

Git stash
Git stash pop

GIT MERGE BRANCH
git merge bug1234
git mergetoo
Local and remote branches
Stashing changes
Merging, rebashing, and cherry-picking

Sunday, 8 April 2018

Basic Unix Commands Developer Should Know

1. Java Installation and setting Java Environment variables.
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt install oracle-java8-set-default
sudo -H gedit /etc/environment
add below lines:
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
JRE_HOME="/usr/lib/jvm/java-8-oracle/jre"

2. Maven Installation
cd /home/phani/Softwares/
wget http://www-eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
sudo tar -xvzf apache-maven-3.3.9-bin.tar.gz
sudo mv apache-maven-3.3.9 maven  =>rename
cd /etc/profile.d/
sudo gedit maven-env.sh
export MAVEN_HOME=/home/phani/Softwares/maven
export M2_HOME=/home/phani/Softwares/maven
export PATH=$PATH:$M2_HOME/bin

Commands:
$ cat filename
$ cat > file1.txt => creat file and append text and Ctrl+d
$ cat sample1.txt sample2.txt > sample3.txt => concatenate these two files and can save to another file named sample3.txt 
$ cat -n file1.txt   =>line number
$ cat file2.txt> file1.txt => To copy the content of one file to another file, you can use the greater than ‘>’ symbol with the cat command.
$ cat sample1.txt >> sample2.txt =>To append the contents of one file to another, you can use the double greater than ‘>>’ symbol with the cat command.
$gedit filename =>opens in text pad

cp /tmp/mozilla_phani0/eclipse-jee-helios-SR1-linux-gtk-x86_64.tar.gz .
tar xvf file.tar
x = eXtract, this indicated an extraction
v= verbose (optional) the files with relative locations will be displayed. 
f = from/to file ... (what is next after the f is the archive file) 

Remove files/folders
rm -rf /path/to/directory/*
-f - stands for "force" which is helpful when you don't want to be asked/prompted if you want to remove an archive, for example.
-r - stands for "recursive" which means that you want to go recursively down every folder and remove everything.

Duplicate copy folder
cp eclipse eclipse_bk

Creating Link (shortcut desktop)
ln -s source_file destination_path


Open Shell:  xterm

echo $BASH
command,argument , options
ls -a list all files incuding hiden
ls -l list files in long format
ls -l-a combine both a and l options
ls -la combine both a and l options
ls -la /bin list all in /bin in long format

Order of options does not matter
The file name has to be at the end

Getting Help
Manual Pages => command: man
man ls
man cd
man man

Using the manual pages
use space to move down a page
move back a page with 'b'
search with '/'
exit with 'q'

drwxr
d -directory

History
ctrl+p previous
ctrl+n next

File Management
less FileName
reset =>used for reset the terminal
file fileName =>used to get the file information
file * => getting all files and folder information
mv =>move
rm -r images  =>remove folder and its content recrusively
touch =>creating empty file

cat 
 best for small files -no paging
 may mess up your terminal
 use reset to fix terminal
less 
  pager with lots of features
  see 'man less'
  use space to move down a page
  move back a page with b
  search with '/'
  exit with 'q'

Call the correct program directly
firefox index.html
opera index.html
you have to know what is installed on your system

File names
 filenames can contain just about anything
 except /
 hidden files start with a dot

Case sensitivity

Extensions(.exe,.zip) are optional
file =>command show types

Absolute paths
 start with /
 relative to the root
 /
 /bin/bash

Relative paths
 don't start with a/
 resolved relative to current working direcctory
 /Users/reinder/library

ls -R
cp source target
cp a dir/b
cp a b c dir
cp dir/a .
cp * dir

Copying directories
 Use cp with the -R switch
  Copies everything in the directory recursively
  cp -R  source_dir target_dir
  cp -R dir1 dir2 dir3 target_dir
  cp -R dir1 file1 dir2 file2 target_dir

ls -R folder =>show the nested files in the foler 

moving files
 mv a b =>rename
 mv a dir/b
 use it to move directories as well
 mv a b c dir
 mv * dir

Deleting Files
 rm =>delete files perminently
 rm a
 rm a b c
 rm dir/a dir/b
 rm *

rmdir 
 will remove empty directories only
rm -r
 will recursively remove all the directories in the folder

safety first: the -i switch
 prompt before overwriting or deleting files
 use the -i switch
 cp -i and mv -i =>will ask you before overwriting files
 rm -i will ask before deletion

Combine it with other options
 cp -Ri
 rm -ri

Wildcards
 ls a*
 ls *at*
 ls -d m*n =>only directory
 ? => 1 character match
 [acd7_]
  Matches one of the characters in the list
  Above would match a,c,d,7 or _
  [^ax2] matches anything but a,x,2
  range:[a-z],[0-9],[A-C3-5] 

rm important_document-v[2-4].doc
rm important_document-v1[^789].docs
rm important_document-v?.docs

Brace Expansion
 Generate Strings
  Does not have to match existing filenames
  Syntax: pre{list,of,strings}post
  touch {a,b,c}.txt => touch a.txt b.txt c.txt
  mv file.{txt,jpg} dir/
  touch {a..c}{1..3}.txt =>touch a1.txt a2.txt...c3.txt
  touch file{ab,b,c}{1,2,3}.{jpg,txt,zip}
  
Brace expansion comes before wildcard expression
 mv *{txt,jpg} Documents => mv *txt *jpg Documents
 mv filea?.{jpg,txt}a  => mv filea?.jpg filea?.txt a

Output Redirection
 Redirecting standard output stream
 > 
  saves the output of a command to a file
  ls > listing.txt
  cat> story.txt =>ctrl+D to save
  This will overwrite existing files
 >>
  Appends the output to the end of a file
  echo "buy milk" >> shopping.txt =>append by mil to shopping.txt end of the file

PipeLine
  cmd1 | cmd2 => output of cmd1 pass to input to cmd2 


grep 1978 oscars.tsv
grep 1978 oscars.tsv | sort
grep 1978 oscars.tsv | sort > 1978_films.txt
cut -f 3 oscars.tsv  => cut is used to sect specific column
cut -f 3 oscars.tsv | grep 4
cut -f 3 oscars.tsv | grep 4 | wc -l  => wc-word count -l lines

Command substitution
 Replace a command with its output
  Ouput will become a part of the command line
  Put command between $()
  echo "hello,$(whoami)"
  echo "Buy milk">"notes$(date).txt"

 Note the use of double quotes
  Keep command substitution intact
 Older form uses backticks
  echo "you are currently on 'hostname'"
  echo "you are currently on $(hostname)"
  
Terminal and the Command Line
 Bash: text in, text out
 Terminal
    Handles key pressed
    Draws text
    Fonts
    Colors
    Scrolling
    Copy/past

copy/past => select the text click on the middle mouse it will past the selected text

Movement Keys:
ctrl-a start of line
ctrl-e end of the line
ctrl-f forward 1 char ->right arrow
ctrl-b back 1 char ->left arrow
alt-f forward 1 word -> command-Left
alt-b back 1 word ->command right

Deletion
Ctrl-D delete a char de
ctrl-H deelete a char backword
alt-D delete a word
Ctrl-w deelete a world backword ->Alt Backspace
ctrl-K delete reset of line
Ctrl-U delete from start of line

Ctrl-C break => end a running program
Ctrl-D end of transmission cat > x
ctrl-R search back in history

Editors
 Nano
  Tiny,simple,fast
 vi (vim)
  vi fileName => Press I to insert Esc for command mode=> :wq! to save and exit
  :w save
  :q to exit
  :q! exit without saving  
  pre-installed on linux

 Emacs
  Very full featured
  Pre installed on some linux distributors


Sort:
  sort -k2 math_grades   => -k is key column name ex: k2 second comumn
  sort -nk2 match_grades
  sort -rnk2 match_grades =>r reverse, n number sort
  sort studentlist | uniq -c
  sort studentlist | uniq -c |sort -nr
  -r reverse sort
  -n sorts numerically
  -k sorts by fields
    sort -k2
    space-seperated fields by default

  filter out repeated lines: uniq
     Sort attendance | uniq
     -c counts lines

Head & Tail:
  Head:
   Show first 10 lines of input by default
   -n gives number of lines
   head -n 1
  Tail:
   Show last 10 lines of input by default
   -n gives number of lines
   tail -n 1
   tail -f follows newly appended data

 ls -lS | head    => first 10 lines
 ls -lS | head -n 1  => first line
 ls -lrS | tail -n 2 =>end of the input use tail , S-size of file
 ls -lrS | tail -n 2| tail -n 1
 tail auth.log =>last couple of entries on a file
 tail -f auth.log => f-follow option

wc story.txt =>word count , 1st result no.of lines, no.of words, no.of bites
wc -l story.txt => -l lines
ls | wc -l
ls -a | wc -l
grep hello story.txt
grep steve *grades
grep -i steve *grades => -i ignore case
grep -v lecture math_attendance | sort |uniq => -v rule
grep -Ev "^$" math_attaendance | sort | uniq => -Ev extended regular expression
ls -l | grep  -v "^d"

Grep:
 grep searchs for a text in a file
 Or multiple files. Ex: grep string*
 -i makes search case-insensitive
 -c counts occurences
 -I shows line number of occurences
 -v inverts the search (filter)

Can use regular expressions

find /usr
find /usr -name emacs
find . -name '*.txt'
find . -name '*.txt' -exec grep -l curious {} \; => -l file name having curious

Find:
 powerful tool for searching files
 find dir - lists all files in dir
 find dir -name f
  Lists all files named f in dir
  Match Expression: find dir -name '*txt'

for More: http://goo.gl/Rid5

Search and Replace text (tr only reads from standard input)
tr S s physics_grades
cat physics_grades | tr S s 
tr S s < physics_grades
Seperating date with semicolon in text file
 grep \; oscars.tsv 
 tr \\t  \; < oscars.tsv > oscars.csv

Advanced tools
 sed
  Stream editor
  Transform text
  Replace words
  Most common use: to replace "old" with "new"  
  send 's/old/new/g'

 awk
  complete programming language
  very useful for column-oriented files
 perl
 python

sed 's/curiouser/stranger/g' demo/alice > alice2
awk '{ total += s2 } END {print total/NR}' math_grades

Processing data:
 sort -nk2 -t\; oscars.cst
 sort -nk2 -t\; oscars.cst | head
 cut -f  2 -d\; oscars.cst  => -d delimeter ,-f field
 cut -f  2,3 -d\; oscars.cst  => -d delimeter ,-f field 
 paste *grades 
 sort physics_grades > phys_sorted
 tr S s < physics_grades > physics_grades2
 paste math_sorted phy_sorted
 join math_sorted phys_sorted

Column-based date
 sort -k to sort on a specific column
   use -t to specify delimiter
 cut to select a column from the input
   cut -f 2 shows only second column
   -d for delimiter
 paste
  puts lines of input files next to each other in the output
 join
   joins input files based on matching keys



Editing text files => Nano, vi, emacs
Sorting => sort, uniq
Head and tail
Searching and filtering => grep
Replacing text => tr,sd
Finding files => find
Advanced tools => awk,sd,perl,python
Column-based files => cut,paste,join
Input redirection with <
Multiple commands on one line => ;



Jobs and Process
 cp /volumes/data-2T/Movie.avi .
 fg
  cp /volumes/data-2T/Movie.avi .
 bg
  cp /volumes/data-2T/Movie.avi .
  
 ./delayed_ls &  => & means run backround

 ./delayed_ls > output_file & 

 rm -i oscars.tsv & 
 fg
  rm -i oscar.tsv

Job Controls: 
 ^Z suspend a running job
 fg => send job to foreground
 bg => send job to background
 Background Jobs
  Use & at end of line
  Cannot read input from the user
  If the program tries, bash will suspend it and let you know
  Tip: only use wiht programs that don't need user interaction
  Output willl mess up your screen
  Tip: redirect output to file
  find . > all_files &

./delayed_ls &
[1] 23837 => first one is jobid and second is process id

Killing:
 Foreground program: ^C
 End any program with kill
  Can only end processes you own
 Kill by job id:
   kill %2
   kill %cp
   (fg and bg work with job id's as well)
 Kill by process id
  kill 6543
  hard kill with -KILL:
   kill -KILL 6543
  pkill => match process by part of name
  

  jobs => shows list of jobs
  kill %job_id
  ps -e => gives all list of running processses
  kill process_no
  pkill =>dangerious 

Inspecting Processes:
 Jobs => shows bash jobs for current shell
 ps
  display processes running under current shell
  
 Displaying all processes
  ps -e
 Include owner
  ps -ef

Process memory and CPU usage:
 top => show all top running processsor
 press ut  then phani
 kki 


Background jobs => &, ^Z , bg,fg
Inspect processes => jobs,ps,top
End processes => kill, xkill, pkill

Bash Startup Files
 .profile => loaded for login shell
 .bashrc => loaded for non-login shell
 Tip: read .bashrc from .profile => source ~/.bashrc

  echo $PATH
  PATH = "$PATH:~/bin" => always append at end
  export EDITOR="nano" => Export variables that are needed in subprocess