2. 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
9. 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
10. 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
11. Fun with PS1 :: Information
● u - Username
● h - Hostname
● w - Full path of the current woking directory
14. Fun with PS1 :: Colors
● e[ :: indicates the beginning of color
● x;ym :: indicates color code
● e[m :: indicates end of color prompt
White 1;37
Green 1;32
Cyan 1;36
Yellow 1;33
20. 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
21. 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
23. 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)/..
25. 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'
26. 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'
27. 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]
28. 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}'
30. Fun with Seds
● Parse rails logs
○ Request count development.log
○ Top 10 most slow compound log job
grep awk head wc
uniq sort tail sed 'N;'
sed cut nl expand
tr