dev day linux redu

Post on 22-Apr-2015

298 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Tarcisio Coutinho16 Nov 2012

Dev-dayLinux - 101

Timeline

● 1965 :: MULTICS :: MTI, Bell Labs (AT&T) e General Eletric

● 1969 :: Ken Thompson :: Unics (Assembly)● 1971 :: Ken Thompson :: Rewrites the system on B

language (to solve portability problems)● 1973 :: Thompson and Denis Richie :: C programming

language● 1974 :: UNIX \o/● 1983 :: AT&T closes the UNIX's source code● 1983 :: Andrew Tanenbaum :: MINIX● 1984 :: Richard Stallman :: GNU (GCC, Emacs)● 1991 :: Linux Torvalds :: GNU/Linux

GNU/Linux Distribution Timeline

http://futurist.se/gldt/

GNU/Linux

GNU/Linux Structure

Shell

What is Shell?

● Provides the command prompt and to interpret commands

● Provides user interface for the OS and Kernel

Shell implementations

● bash (bourne again shell :: GNU implementation)● ash (Almquist Shell :: BSD)● csh (C shell :: BSD)● tcsh (tee-shell)● sh (Stephen Bourne)● ksh (Korn shell)

Shell Variable Basics

● bash maintains a set of shell variables○ PS1 :: Prompt String 1 :: Default interaction ○ PS2 :: Prompt String 1 :: Continuation interactive

prompt○ PATH :: contains a list of all the directories that

hold commands or other programs you are likely to execute

● bash variables are untyped

Export Variables

● When a variable is exported to the environment, it is passed into the environment of all child processes

● let's go to the terminal○ REDU="Redu Tech"

■ conventionally uppercase

○ echo $REDU or echo ${REDU}■ $ prefix to interpret a shell var

○ echo "echo \$REDU" | bash

Fun with PS1 :: Information

● \u - Username● \h - Hostname● \w - Full path of the current woking directory

export PS1="\u@\h \w"

export PS1="\u@\redu: \w "

Fun with PS1 :: Colors

● \e[ :: indicates the beginning of color

● x;ym :: indicates color code

● \e[m :: indicates end of color prompt

White 1;37Green 1;32Cyan 1;36Yellow 1;33

PS1="\e[01;32m\u\e[m@\redu: \w "

PS1="\e[01;32m\u\e[m\e[1;37m@\e[mredu: \w "

PS1="\e[01;32m\u\e[m\e[1;37m@\e[m\e[1;36mredu:\e[m \w "

PS1="\e[01;32m\u\e[m\e[1;37m@\e[m\e[1;36mredu:\e[m\e[1;33m\w\e

[m "

Streams, Pipes and Redirects

Streams

● Everything is a file.○ a program reading from the terminal’s device file

will receive characters typed at the keyboard

● When a program is launched, it is automatically provided with three file descriptors○ Standard input (abbreviated stdin) :: 0○ Standard output (abbreviated stdout) :: 1○ Standard error (abbreviated stderr) :: 2

● The standard input is different than parameters

Pipes and Redirects

● Pipes |○ provides communication inter-process

■ tie the output of one program to the input of another

■ e.g. echo "echo 'Hello Redu'" | bash

● Redirection○ allows you to manage the origin of input streams

and the destination of output streams■ > :: Redirection operator■ >> :: Append operator■ < :: Receive stdin from file

GNU and Unix Commands

Tricks

● cd - :: go to the recent directory○ Works with git branches

■ git checkout -

● !! :: call most recent command○ bang-bang

● $( ) :: Command substitution or sub-shell○ cd $(pwd)/..

GNU and Unix sed & awk

Sed

● Stream based processing text editor

echo "sed tutorial. sed is a powerful text editor" | sed 's/sed/awk/'

echo "sed tutorial. sed is a powerful text editor" | sed 's/sed/awk/g'

echo "sed tutorial. sed is a powerful text editor" | sed 's/sed/awk/2g'

Sed

echo "line without numbers \nline with numbers: 1 2 3 " | sed -r 's/[0-9]+/X/g'

echo "line without numbers \nline with numbers: 1 2 3 " | sed -rn 's/[0-9]+/X/g'

echo "line without numbers \nline with numbers: 1 2 3 " | sed -rn 's/[0-9]+/X/gp'

Sed

● Delete lines○ sed '1,2-3 d' [FILE]○ sed '/[pattern]/d [FILE] ○ sed -i '1 d' [FILE]

● Add lines○ sed '/[pattern]/ i [text]' [FILE]○ sed '/[pattern]/ a [text]' [FILE]

○ sed "1s/^/[text]" [FILE]

Awk

● AWK○ processing text programming language

■ column based

awk -F [pattern] '{ [CMD] }'

$n -> variable from split by pattern match

ls -l | awk -F ' ' '{print $0}'

Quests

Fun with Seds

● Parse rails logs○ Request count development.log

○ Top 10 most slow compound log job

grep awk head wcuniq sort tail sed 'N;'sed cut nl expandtr

Dev-dayLinux - 101

top related