Difference between revisions of "Introduction to Linux in HPC/Text display search"

From HPC Wiki
Introduction to Linux in HPC/Text display search
Jump to navigation Jump to search
m (Fixed the answer 4 to question no. 2, so that at least one answer is correct.)
 
(34 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
[[Category:Tutorials|Text Display and Search (linux)]]<nowiki />
 +
{{DISPLAYTITLE:Text Display and Search}}<nowiki />
 +
{{Syllabus Introduction to Linux}}<nowiki />
 
__TOC__
 
__TOC__
 +
 +
This part of the tutorial introduces the text input and output of the Linux console as well as common text based operations. It explains how different types of in- and output can be handled as well as different ways of text based console commands, their usage and their differences.
  
 
=== Video === <!--T:5-->
 
=== Video === <!--T:5-->
  
<youtube width="600" height="400" right>IfD9IPixgpo</youtube>
+
<youtube width="600" height="340" right>LO1dkFm0GUE</youtube>
 
 
[https://git-ce.rwth-aachen.de/hpc.nrw/ap2/tutorials/linux/-/blob/master/Slides/Linux_Intro/Linux_Intro.pdf Linux Introduction]  Slides 58 - 64 (7 pages)
 
 
 
 
 
=== Slide Layout === <!--T:5-->
 
 
 
    page 1:
 
        grep command and syntax
 
        important options: -r, -i and -I
 
    page 2:
 
        many commands to display text
 
        cat
 
        less
 
        head and tail
 
    page 3: 40 sec
 
        console has three streams
 
            stdin
 
            stdout
 
            stderr
 
    page 4:
 
        stream in computing terms
 
        similar to streaming video
 
        input/output stream in console
 
    page 5:
 
        input/output streams can be redirected
 
            redirect stdout
 
            redirect stdin
 
            pipe
 
    page 6:
 
        stream append redirection
 
        numbered streams: 0 for stdin, 1 for stdout, 2 for stderr
 
    page 7:
 
        use grep to search piped output text
 
  
 +
([[Media:HPC.NRW_Introduction_to_Linux_in_HPC_05_Text_Display_and_Search.pdf | Slides as pdf]])
  
 
=== Quiz === <!--T:5-->   
 
=== Quiz === <!--T:5-->   
Line 48: Line 21:
 
{
 
{
 
|type="()"}
 
|type="()"}
- command > filename
+
- <code>command > filename</code>
 +
||
 +
+ <code>command >> filename</code>
 +
|| Explanation: The <code>></code> operator redirects the output of command into filename. If filename exists already, its contents will be overwritten. The <code>>></code> operator can redirect the output of command into filename as well, except that if filename exists, the new data are appended instead of overwritten.
 +
</quiz>
 +
{{hidden end}}
 +
 
 +
{{hidden begin
 +
|title = 2. Which is the correct way to redirect stdout and stderr to the same file?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
- <code>command > filename</code>
 
||  
 
||  
+ command >> filename
+
- <code>command 2> filename</code>
|| Explanation: The > operator redirects the output of command into filename. If filename exists already, its contents will be overwritten. The >> operator can redirect the output of command into filename as well, except that if filename exists, the new data are appended instead of overwritten.
+
||
 +
- <code>command | filename</code>
 +
||
 +
+ <code>command > filename 2>&1</code>
 +
|| Explanation: The first <code>></code> operator redirects the standard output of command into filename. The second <code>></code> operator redirects the standard error (2) of command into the file descriptor <code>(&)</code> of standard output (1), which in this case is the same as filename. If filename exists already, its contents will be overwritten.
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
  
 
{{hidden begin  
 
{{hidden begin  
|title = 2. How do I find all files containing specific text on Linux? </br>
+
|title = 3. How do I find all files containing specific text on Linux? </br>
HINT: use grep command
+
HINT: use <code>grep</code> command
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
 
{
 
{
 
|type="()"}
 
|type="()"}
+ Klick and submit to see the answer
+
+ Click and submit to see the answer
|| Explanation: grep -rnw '/path/to/somewhere/' -e 'pattern'
+
|| <code>grep -rnw '/path/to/somewhere/' -e 'pattern'</code>
||             -r or -R is recursive,
+
|| -r or -R is recursive,
||             -n is line number, and
+
|| -n is line number, and
||             -w stands for match the whole word.
+
|| -w stands for match the whole word.
||              -l (lower-case L) can be added to just give the file name of matching files.
+
| -l (lower-case L) can be added to just give the file name of matching files.
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
  
 
+
=== Exercises in Terminal === <!--T:5--> 
{{Warning|mode=info|text= '''no tips in this section'''}}
+
 
 +
1. Create a file using cat (some filename) and write some text in it as below. than use grep to find and display the line number and the line with the word Alan in the file.
 +
        the best way to predict
 +
        the future is to invent it
 +
        –  Alan Kay
 +
    {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 +
    | <strong>Answer:</strong>
 +
    |-
 +
    |  
 +
      <syntaxhighlight lang="bash">
 +
      $ cat > quote.txt <<"EOF" \ > the best way to predict \ > the future is to invent it
 +
      >  - Alan Kay
 +
      > EOF
 +
      </syntaxhighlight>
 +
      EOF mean end of file. Press enter to get a new line while writing text. With <code>cat > filename</code> you write the file content in the file quote.txt.
 +
 
 +
      Further use grep as below
 +
      <syntaxhighlight lang="bash">
 +
      $ grep -in alan quote.txt
 +
      3: - Alan Kay
 +
      </syntaxhighlight>
 +
      grep command option -
 +
            - i to ignore case distinctions, so that characters that differ only in case match each other.
 +
            - n for line number   
 +
    |}
 +
 
 +
{{Tutorial Navigation
 +
| previous = [[Introduction_to_Linux_in_HPC/Files | Files ]]
 +
| main = [[Introduction_to_Linux_in_HPC | Overview ]]
 +
| next = [[Introduction_to_Linux_in_HPC/Users_and_permissions | Users and Permissions ]]
 +
}}

Latest revision as of 09:41, 11 December 2020

Tutorial
Title: Introduction to Linux in HPC
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Multi-part video
Topic Area: HPC Platforms
License: CC-BY-SA
Syllabus

1. Background and History
2. The Command Line
3. Linux Directory Structure
4. Files
5. Text display and search
6. Users and permissions
7. Processes
8. The vim text editor
9. Shell scripting
10. Environment variables
11. System configuration
12. SSH Connections
13. SSH: Graphics and File Transfer
14. Various tips

This part of the tutorial introduces the text input and output of the Linux console as well as common text based operations. It explains how different types of in- and output can be handled as well as different ways of text based console commands, their usage and their differences.

Video

( Slides as pdf)

Quiz

1. Which command can be used to append text to filename?

command > filename
command >> filename

2. Which is the correct way to redirect stdout and stderr to the same file?

command > filename
command 2> filename
command | filename
command > filename 2>&1

3. How do I find all files containing specific text on Linux?
HINT: use grep command

Click and submit to see the answer

Exercises in Terminal

1. Create a file using cat (some filename) and write some text in it as below. than use grep to find and display the line number and the line with the word Alan in the file.
        the best way to predict
        the future is to invent it
        –  Alan Kay


<< Files

Overview

Users and Permissions >>