Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dev-day Linux

Dev-day Linux

Gnu linux history and simple shellscripts

Tarcisio Coutinho

November 16, 2012
Tweet

More Decks by Tarcisio Coutinho

Other Decks in Programming

Transcript

  1. 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
  2. What is Shell? • Provides the command prompt and to

    interpret commands • Provides user interface for the OS and Kernel
  3. 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)
  4. 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
  5. 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
  6. Fun with PS1 :: Information • \u - Username •

    \h - Hostname • \w - Full path of the current woking directory
  7. 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
  8. 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
  9. 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
  10. 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)/..
  11. 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'
  12. 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'
  13. 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]
  14. 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}'
  15. 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