%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Using Linux Tools % % Author: FOSSEE % Copyright (c) 2009, FOSSEE, IIT Bombay %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[12pt,compress]{beamer} \mode { \usetheme{Warsaw} \useoutertheme{infolines} \setbeamercovered{transparent} } \usepackage[english]{babel} \usepackage[latin1]{inputenc} %\usepackage{times} \usepackage[T1]{fontenc} % Taken from Fernando's slides. \usepackage{ae,aecompl} \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet} \definecolor{darkgreen}{rgb}{0,0.5,0} \usepackage{listings} \lstset{language=sh, basicstyle=\ttfamily\bfseries, commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen}, showstringspaces=false, keywordstyle=\color{blue}\bfseries} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % DOCUMENT STARTS \begin{document} \begin{frame} \begin{center} \vspace{12pt} \textcolor{blue}{\huge Using Linux Tools\\Part IV} \end{center} \vspace{18pt} \begin{center} \vspace{10pt} \includegraphics[scale=0.95]{../images/fossee-logo.png}\\ \vspace{5pt} \scriptsize Developed by FOSSEE Team, IIT-Bombay. \\ \scriptsize Funded by National Mission on Education through ICT\\ \scriptsize MHRD,Govt. of India\\ \includegraphics[scale=0.30]{../images/iitb-logo.png}\\ \end{center} \end{frame} \begin{frame} \frametitle{Objectives} \label{sec-2} At the end of this tutorial, you will be able to, \begin{itemize} \item Understand what is Redirection and Piping. \item Learn various features of the shell. \end{itemize} \end{frame} \begin{frame} \frametitle{Pre-requisite} \label{sec-3} Spoken tutorial on - \begin{itemize} \item Using Linux tools -- Part I \item Using Linux tools -- Part II \item Using Linux tools -- Part III \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Redirection} \begin{itemize} \item The standard output (stdout) stream goes to the display \item Not always, what we need \item First solution, redirects output to a file \item \texttt{>} states that output is redirected; It is followed by location to redirect \end{itemize} \begin{lstlisting} $ command > file1 \end{lstlisting} % $ \begin{itemize} \item \texttt{>} creates a new file at specified location \item \texttt{>>} appends to a file at specified location \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Redirection \ldots} \begin{itemize} \item Similarly, the standard input (stdin) can be redirected \end{itemize} \begin{lstlisting} $ command < file1 \end{lstlisting} % $ \begin{itemize} \item input and the output redirection could be combined \end{itemize} \begin{lstlisting} $ command < infile > outfile \end{lstlisting} % $ \begin{itemize} \item Standard error (stderr) is the third standard stream \item All error messages come through this stream \item \texttt{stderr} can also be redirected \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Piping} \begin{lstlisting} $ cut -d " " -f 2- marks1.txt \ | paste -d " " students.txt - \end{lstlisting} % $ \begin{itemize} \item \texttt{-} instead of FILE asks \texttt{paste} to read from \texttt{stdin} \item \texttt{cut} command is a normal command \item the \texttt{|} seems to be joining the two commands \item Redirects output of first command to \texttt{stdin}, which becomes input to the second command \item This is called piping; \texttt{|} is called a pipe \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Piping \ldots} \begin{itemize} \item Roughly same as -- 2 redirects and a temporary file \end{itemize} \begin{lstlisting} $ command1 > tempfile $ command2 < tempfile $ rm tempfile \end{lstlisting} % $ \begin{itemize} \item Any number of commands can be piped together \end{itemize} \end{frame} \subsection{Features of the Shell} \begin{frame}[fragile] \frametitle{Tab-completion} \begin{itemize} \item Bash provides tab completion for the following. \begin{enumerate} \item File Names \item Directory Names \item Executable Names \item User Names (when they are prefixed with a \~{}) \item Host Names (when they are prefixed with a @) \item Variable Names (when they are prefixed with a \$) \end{enumerate} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Shell Meta Characters} \begin{itemize} \item ``meta characters'' are special command directives \item File-names shouldn't have meta-characters \item The following are the shell meta characters -- \begin{itemize} \item \verb+/<>!$%^&*|{}[]"'`~;+ \end{itemize} \end{itemize} \end{frame} \begin{frame} \frametitle{Summary} \label{sec-8} In this tutorial, we have learnt to, \begin{itemize} \item Use the ``cut'' and ``paste'' commands in redirection. \item Use the pipe ( | ) character. \item Implement features of shell like tab-completion and history. \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Evaluation} \label{sec-9} \begin{enumerate} \item Bash does not provide tab completion for Host Names. \\ True or False? \vspace{12pt} \item In a file /home/test.txt ,first line is "data:myscripts:20:30".How to view only minutes(last field, 30). \vspace{5pt} \begin{itemize} \item cut -d : -f 4 /home/test.txt \item cut -f 3 /home/test.txt \item cut -d : -f 3 /home/test.txt \item None of these \end{itemize} \end{enumerate} \end{frame} \begin{frame} \frametitle{Solutions} \label{sec-10} \begin{enumerate} \item False \vspace{15pt} \item cut -d : -f 4 /home/test.txt \end{enumerate} \end{frame} \begin{frame} \begin{block}{} \begin{center} \textcolor{blue}{\Large THANK YOU!} \end{center} \end{block} \begin{block}{} \begin{center} For more Information, visit our website\\ \url{http://fossee.in/} \end{center} \end{block} \end{frame} \end{document}