Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
R3
school
courses
Commits
2822aae9
Commit
2822aae9
authored
Mar 26, 2020
by
Laurent Heirendt
✈
Browse files
Merge branch 'gnu-linux' into 'develop'
Gnu linux MWP See merge request
R3/school/courses!70
parents
26838e0d
0c837b4b
Pipeline
#23387
passed with stage
in 3 minutes and 28 seconds
Changes
17
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
2020/2020-02-15_gnuLinuxCourse/slides/index.md
View file @
2822aae9
#
Presentation Title
#
Introduction to GNU/Linux (Shell)
##
Month XYth, 2019
##
26 March 2020
<div
style=
"top: 6em; left: 0%; position: absolute;"
>
<img
src=
"theme/img/lcsb_bg.png"
>
...
...
2020/2020-02-15_gnuLinuxCourse/slides/intro_aim.md
View file @
2822aae9
# Aims of the Tutorial
*
Connect to a GNU/Linux server
+
SSH, a de-facto standard for secure communication
<!-- .element: class="fragment" -->
+
For Windows users
-
[
MobaXterm
][
1
]
(_recommended by R3_)
-
[
PuTTY
][
2
]
, simple, ugly, but efficient and open source and does only SSH
*
Gain Familiarity With the Unix Shell
-
And hint at ways it can be harnessed to give great power to the
user
<!-- .element: class="fragment" -->
+
For Mac and GNU/Linux users, OpenSSH command line client
<!-- .element: class="fragment" -->
<!-- .element: class="fragment" -->
*
Explore how to use the shell effectively
*
We will use bash which is (almost) universaly present
-
Steve Jobs did not like the license, but ...
```
shell
brew
install
bash
```
<!-- .element: class="fragment" -->
<!-- .element: class="fragment" -->
*
Connect to a GNU/Linux server
+
Using SSH, a de-facto standard for secure communication
<!-- .element: class="fragment" -->
[
1
]:
https://mobaxterm.mobatek.net/download-home-edition.html
[
2
]:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
<!-- <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/A-HIlNGczgU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-->
2020/2020-02-15_gnuLinuxCourse/slides/intro_beforewebegin.md
View file @
2822aae9
#
Before We Begin ...
#
Or, the Beginning of One?
*
Learning GNU/Linux has never been easier!
+
An explosion of
[
resources for self-study
][
1
]
...
...
@@ -18,7 +18,7 @@
<!-- .element: class="fragment" -->
[
1
]:
https://git-r3lab.uni.lu/R3/school/courses/blob/
gnu-linux
/2020/2020-02-15_gnuLinuxCourse/resources.md
[
1
]:
https://git-r3lab.uni.lu/R3/school/courses/blob/
develop
/2020/2020-02-15_gnuLinuxCourse/resources.md
[
2
]:
https://duckduckgo.com
[
3
]:
https://unix.stackexchange.com/
[
4
]:
https://www.reddit.com/r/linux/
2020/2020-02-15_gnuLinuxCourse/slides/intro_first.md
View file @
2822aae9
...
...
@@ -11,7 +11,8 @@
<!-- .element: class="fragment" -->
+
GNU/Linux user since
[
Debian Woody
][
5
]
(ca 2002)
+
Arrived as a seven CD set from a small computer shop from the
[
Getting Debian
][
6
]
+
Arrived as a seven CD set from a small computer shop from the
list of international vendors at
[
Getting Debian
][
6
]
<!-- .element: class="fragment" -->
...
...
2020/2020-02-15_gnuLinuxCourse/slides/last.md
0 → 100644
View file @
2822aae9
# The End
*
Thanks for your attention!
2020/2020-02-15_gnuLinuxCourse/slides/list.json
View file @
2822aae9
[
{
"filename"
:
"index.md"
},
{
"filename"
:
"intro_first.md"
},
{
"filename"
:
"the-end.md"
},
{
"filename"
:
"intro_beforewebegin.md"
},
{
"filename"
:
"intro_aim.md"
},
{
"filename"
:
"shell.md"
},
{
"filename"
:
"shell/start.md"
},
{
"filename"
:
"shell/file-explorer-basic.md"
},
{
"filename"
:
"shell/file-explorer-basic-concepts.md"
},
{
"filename"
:
"shell/effective-cmd-editing.md"
},
{
"filename"
:
"shell/effective-cmd-editing-concepts.md"
},
{
"filename"
:
"shell/cp-mv.md"
},
{
"filename"
:
"shell/rm.md"
},
{
"filename"
:
"shell/cp-mv-rm-concepts.md"
},
{
"filename"
:
"ssh_intro.md"
},
{
"filename"
:
"ssh_intro_2.md"
},
{
"filename"
:
"ssh_intro_3.md"
},
...
...
@@ -16,5 +26,6 @@
{
"filename"
:
"ex_ssh_win/ssh_keygen.md"
},
{
"filename"
:
"ex_ssh_lin/intro.md"
},
{
"filename"
:
"ex_ssh_lin/session_shell.md"
},
{
"filename"
:
"ex_ssh_lin/session_shell_2.md"
}
{
"filename"
:
"ex_ssh_lin/session_shell_2.md"
},
{
"filename"
:
"last.md"
}
]
2020/2020-02-15_gnuLinuxCourse/slides/shell.md
0 → 100644
View file @
2822aae9
# The Barrier between the Human and the Machine
<div
class=
"multicol"
>
<div
class=
"col"
data-markdown
>
*
What is a shell?
-
Omnipresent user interface
<!-- .element: class="fragment" -->
-
It interprets commands given by the user
<!-- .element: class="fragment" -->
-
It is heavily keyboard based
<!-- .element: class="fragment" -->
<!-- .element: class="fragment" -->
*
Shell runs within a terminal application
-
In ancient times, these were actual pieces of hardware
<!-- .element: class="fragment" -->
-
Today, a program that echoes user input and displays command results
<!-- .element: class="fragment" -->
<!-- .element: class="fragment" -->
*
How to access it?
-
**GNU/Linux systems:**
-
Depends on the desktop interface (of which there are many)
-
Access from a
`Start`
-like menu, or a
`Win`
-key search as
*terminal*
, or
*console*
-
if all else fails,
`Ctrl`
+
`Alt`
+
`F[2-6]`
<!-- .element: class="fragment" -->
-
**Windows:**
[
MobaXterm
][
1
]
which you hopefully installed
<!-- .element: class="fragment" -->
-
**Mac:**
Built-in terminal;
*Spotlight*
search for
*terminal*
<!-- .element: class="fragment" -->
<!-- .element: class="fragment" -->
</div>
<div
class=
"col"
data-markdown
>
<img
src=
"variae/figs/shell/3270.jpg"
width=
"90%"
/>
<!-- .element: class="fragment" -->
</div>
</div>
[
terminal
]:
variae/figs/shell/3270.jpg
"IBM 3270"
[
1
]:
https://mobaxterm.mobatek.net/download-home-edition.html
2020/2020-02-15_gnuLinuxCourse/slides/shell/cp-mv-rm-concepts.md
0 → 100644
View file @
2822aae9
# File Explorer: Copy(cp), Move(mv) and Remove(rm) (Concepts)
*
cp, mv and rm can act on either files, or directories
```
shell
cp
file1 file2
mv
file1 file2
cp
-R
dir1 new/location
mv
dir1 new/location
cp
file1 file2 ... some/existing/dir
mv
file1 file2 ... some/existing/dir
rm
file1 ...
rm
-R
dir
rm
-Rf
dir
# Danger!
```
*
Effectiveness of these commands greatly improved by file patterns
-
*
, ., [0-9],[ABC], {}, etc
2020/2020-02-15_gnuLinuxCourse/slides/shell/cp-mv.md
0 → 100644
View file @
2822aae9
# File Explorer: Copy(cp), Move(mv) and Remove(rm) File Operations
```
console
$
mkdir
linux-practical-03
$
cp
linux-practical-01/pr1-hello-world.txt linux-practical-03/pr3-hello-world.txt
# cp arg1 arg2: copy file arg1 to file arg2
$
mkdir
linux-practical-03/dump
$
cp
-R
linux-practical-01 linux-practical-03/dump
# Copy the entire content of linux-practical-01
$
# to dump subdirectory of linux-practical-03
$
ls
linux-practical-03/dump
# Check if linux-practical-01 is there.
$
# Move one up in history, jump to the beginning of the line ('Ctrl'+'A'), then
$
# replace 'ls' with 'mv'
$
# From then on ...
$
mv
linux-practical-03/dump linux-practical-03/dump2
# Congratulations, you just renamed dump to dump2.
$
ls
linux-practical-03
# Check the content. The directory dump should not exist.
```
2020/2020-02-15_gnuLinuxCourse/slides/shell/effective-cmd-editing-concepts.md
0 → 100644
View file @
2822aae9
# File Explorer: Effective Command Line Editing (Concepts)
*
Moving using arrow keys is tedious
*
Retyping commands that contain a typo is even more tedious
*
*Readline*
facility of the bash shell offers quicker navigation
-
Move by a word left and right using
`Ctrl`
+
`Left`
, or
`Right`
-
Move to a beginning, or the end of the line using
`Ctrl`
+
`A`
and
`Ctrl`
+
`E`
-
Delete an entire word using
`Alt`
+
`D`
-
Paste a deleted word with
`Ctrl`
+
`Y`
*
Reuse previous commands!
-
The shell remembers what you type
-
Move to a previous line in history using
`Up`
and
`Down`
arrows
2020/2020-02-15_gnuLinuxCourse/slides/shell/effective-cmd-editing.md
0 → 100644
View file @
2822aae9
# File Explorer: Effective Command Line Editing
```
console
$
# Move up the history list until 'mkdir linux-practical-01'.
$
# Move cursor using word motions 'Ctrl' + 'Left', or
$
# 'Ctrl' + 'Right' around the command to get the feel for word motions.
$
# Move cursor using begin ('Ctrl' + 'A') and end ('Ctrl' + 'E')
$
# motions to the beginning and the end of the line.
$
mkdir
linux-practical-02
# Based on the previous command + motions.
$
cd
lin
# TAB to complete, then TAB two times to list possible endings.
$
cd
linux-practical-02
# Based on the previous completion.
$
# Move up the history list to mkdir subdir-01
$
mkdir
subdir-02
$
# Move up the history to the touch subdir-01/a ... command.
$
# Replace 1 with 2 using 'Ctrl' + 'A' and word motions.
$
touch
subdir-02/a subdir-02/b subdir-02/c
$
history
10
# Lists last ten commands.
$
cd
```
<!-- * Motions -->
<!-- - `Left` and `Right` arrow move one character left, or right -->
<!-- - `Ctrl` + `Left`, or `Right` move left, or right for one word -->
<!-- - `Ctrl` + `A`, or `E` move to the beginning, or the end of the line -->
<!-- - `Up` and `Down` move through history entries -->
<!-- - `TAB` completes -->
2020/2020-02-15_gnuLinuxCourse/slides/shell/file-explorer-basic-concepts.md
0 → 100644
View file @
2822aae9
# File Explorer: Basics (Concepts)
*
While interacting with a shell, we are always in a given
*working directory*
*
Data is organised into directories and files, like on other systems.
*
Location of a file in respect to the current directory is given by a (
*relative*
) file path
-
some/dir/with/a/file
*
New commands:
-
`pwd`
: outputs the current working directory
-
`ls [-lhd ... file1 file2 file3 ...]`
: lists files
-
`cd path/to/existing/dir`
: change current directory to a new directory
-
`mkdir [-p] path/to/new/dir`
: creates a new directory
-
`touch file1 [file2 file3 ...]`
: creates an empty file.
-
`history`
: view the list of commands executed so far
2020/2020-02-15_gnuLinuxCourse/slides/shell/file-explorer-basic.md
0 → 100644
View file @
2822aae9
# File Explorer: Basics
```
console
$
pwd
# Displays the absolute path to the current dirrectory.
$
ls
# List contents of the current directory.
$
mkdir
linux-practical-01
# Create a new directory.
$
cd
linux-practical-01
# Switch to a different directory.
$
touch
pr1-hello-world.txt
# Create a new and empty file.
$
mkdir
subdir-01
# Create another directory.
$
touch
subdir-01/a subdir-01/b subdir-01/c
# Create multiple empty files.
$
ls
subdir-01
# List contents of directory.
$
mkdir
-p
subdir-02/dir-X/dir-Y/dir-Z
# Create a nested directory under the path.
$
ls
subdir-02/dir-X
# Confirm the directory dir-Y has been created.
$
history
# Lists the commands executed so far.
$
cd
```
<!-- * Concepts -->
<!-- - Files and directories -->
<!-- - Paths -->
<!-- - Importance of quoting -->
<!-- - History -->
2020/2020-02-15_gnuLinuxCourse/slides/shell/rm.md
0 → 100644
View file @
2822aae9
# File Explorer: Copy(cp), Move(mv) and Remove(rm) File Operations
*
Removing files and directories.
```
console
$
rm
linux-practical-03/pr3-hello-world.txt
# Deletes the file.
$
# History, one up then adapt the command into
$
cd
linux-practical-03
$
ls
# Check if it is indeed deleted.
$
rm
-R
dump2
# Recursively remove directory dump2 and all of its contents.
$
history
10
# Just to remind yourself what you did in last ten steps.
$
cd
```
2020/2020-02-15_gnuLinuxCourse/slides/shell/start.md
0 → 100644
View file @
2822aae9
# Command Line
*
**Command prompt:**
Non-editable; May provide contextual information
*
**Command area:**
Typed commands are shown here
*
**RETURN or ENTER:**
Pressing this key will execute the command
*
General form of the commands
```
shell
prompt
$
ls
prompt
$
ls
-a
prompt
$
ls
--help
prompt
$
rsync
-avz
/path/to/file/a /path/to/file/b
prompt
$
make
-j8
prompt
$
gfortran
-c
-mtune
=
native
```
2020/2020-02-15_gnuLinuxCourse/slides/the-end.md
0 → 100644
View file @
2822aae9
# The End of an Era?
<iframe
width=
"100%"
height=
"800"
src=
"https://www.youtube.com/embed/A-HIlNGczgU?start=127"
frameborder=
"0"
allow=
"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
2020/2020-02-15_gnuLinuxCourse/variae/figs/shell/3270.jpg
0 → 100644
View file @
2822aae9
571 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment