Difference between revisions of "HelloBash Ep1"

From Tmplab
(Les prérequis)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Accéder à BASH ==
+
== Accéder à bash ==
  
 
Il faut bien commencer quelque part, donc pourquoi pas ici !?
 
Il faut bien commencer quelque part, donc pourquoi pas ici !?
Line 7: Line 7:
 
Sur un linux / BSD, chercher le "Terminal" dans la liste des applications.
 
Sur un linux / BSD, chercher le "Terminal" dans la liste des applications.
  
Sur un Windows, prompt ou PowerShell ne sont pas des shells comparables à BASH. Utiliser les options suivantes.
+
Sur un Windows, prompt ou PowerShell ne sont pas des shells comparables à bash. Utiliser les options suivantes.
  
 
=== via SSH ===
 
=== via SSH ===
Line 18: Line 18:
  
 
https://bellard.org/jslinux/
 
https://bellard.org/jslinux/
 +
 
https://copy.sh/v86/?profile=linux26
 
https://copy.sh/v86/?profile=linux26
 +
 
https://www.tutorialspoint.com/unix_terminal_online.php
 
https://www.tutorialspoint.com/unix_terminal_online.php
 +
 
https://linuxcontainers.org/lxd/try-it/
 
https://linuxcontainers.org/lxd/try-it/
 +
 
https://www.learnshell.org/
 
https://www.learnshell.org/
  
 +
=== Premier contact ===
 +
 +
Vous êtes en face d'une invite de commandes, qui peut avoir bien des formes, par exemple :
 +
 +
  user@machine:~
 +
 +
Dans tous les cas, vous devriez avoir un curseur clignotant, signifiant qu'une commande est attendue.
 +
 +
Pour entrer une commande, il suffit de taper sur le clavier puis d'appuyer sur entrée. Ex:
 +
 +
  echo hello bash
 +
 +
Vérifions qu'on est bien dans bash. Il suffit de taper la commande suivante :
 +
 +
  bash
 +
 +
Si ça fonctionne, vous êtes bien à partir de là dans bash.
 +
 +
Pour vous en assurer, tapez les combinaisons de touche CTRL-x CTRL-v. Vous devriez voir apparaître un message comme
 +
 +
  GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
 +
 +
Pour quitter bash, il suffit de taper la commande
 +
 +
  exit
 +
 +
Ou bien par exemple de faire la combinaison de touche CTRL-d
 +
 +
=== Bonus : les arguments et les options ===
 +
 +
Une commande est généralement composée de deux parties : la commande elle-même et ses arguments. Ex :
 +
 +
  echo      hello bash
 +
  ¦          ¦    ¦
 +
  commande  arguments
 +
 +
 
 +
Il est fréquent qu'on utilise aussi des options, qui ont généralement un tiret pour les distinguer des arguments.
 +
 +
  echo      -n      hello bash
 +
  ¦          ¦      ¦    ¦
 +
  commande  option  arguments
 +
 +
Pour la commande echo, l'option -n change le comportement de la commande : le retour chariot en fin de ligne n'est plus automatique
 +
 +
== Hello Bash ==
 +
=== echo ===
 +
 +
Cette commande var afficher le texte que vous lui passez en arguments.
  
=== Bonus : les arguments ===
+
$ echo "Hello Bash"
 +
 
 +
Vous pouvez utiliser des options qui vont changer le comportement de la commande.
 +
 
 +
$ echo -e "\nHello\Bash\n"
 +
 
 +
Tip : pourquoi '''echo --help''' ne marche pas toujours comment on s'y attendrait ?
  
 
== Se déplacer et gérer les fichiers==
 
== Se déplacer et gérer les fichiers==
 +
=== pwd ===
 +
 +
  $ pwd
 +
Cette commande affiche le dossier courant de votre terminal dans l'arborescence du système : '''p'''rint '''w'''orking '''d'''irectory
 +
 +
Tip: pourquoi utiliser <code>pwd -P</code> ?
 +
 
=== ls ===
 
=== ls ===
 +
  $ ls
 +
Cette commande affiche la liste des dossiers et fichiers : '''l'''i'''st'''
 +
 +
On peut passer des options à la commande
 +
 +
$ ls -lh
 +
$ ls -a
 +
 +
On peut préciser un chemin à lister
 +
 +
  $ ls ./
 +
  $ ls ../
 +
  $ ls /etc/
 +
  $ ls /etc/a*
 +
 +
Tip : intérêt de <code>ls -1</code> ?
 +
 
=== cd ===
 
=== cd ===
 +
 +
  $ cd
 +
 +
Cette commande modifie le dossier courant de votre terminal dans l'arborescence du système '''C'''hange '''D'''irectory
 +
 +
  $ cd ../
 +
  $ cd -
 +
 +
Tip : intérêt de <code>pushd / popd</code> ?
 +
 +
=== touch ===
 +
 +
$ touch foo.txt
 +
 +
Cette commande permet de créer un fichier ou d'en modifier certaines propriétés de date
 +
 +
$ touch --date="yesterday"  foo.txt
 +
 +
Tip : intérêt de <code>touch -h</code> ?
 +
 
=== cat ===
 
=== cat ===
=== echo ===
+
 
 +
$ cat /etc/hosts
 +
 
 +
Cette commande affiche le contenu d'un ou plusieurs fichiers: con'''cat'''enate
 +
 +
$ cat -n /etc/hosts
 +
$ cat /etc/passwd /etc/group
 +
 
 +
 
 
=== rm ===
 
=== rm ===
 +
 +
# Si foo.txt existe
 +
$ rm -i foo.txt
 +
 +
Supprime ( '''r''e'''m'''ove) le fichier fourni en argument. Par défaut cette commande ne supprime pas les répertoires sauf si vous faites
 +
 +
$ rm -ir /un/repertoire
 +
 
=== cp ===
 
=== cp ===
 +
 +
# Si foo.txt existe
 +
$ cp  foo.txt bar.txt
 +
 +
Copie ('''c'''o'''p'''y) le premier fichier passé en argument sous le chemin passé en second argument
 +
 +
# copie récursivement le contenu d'un dossier foo s'il existe
 +
$ cp -r foo bar
 +
 +
Tip: <code>man cp</code> : Hard links ? Sparse files ? Copy on Write ?
 +
 
=== mkdir / rmdir ===
 
=== mkdir / rmdir ===
 +
 +
$ mkdir foo
 +
 +
Crée ( '''m'''a'''k'''e '''dir'''ectory) un dossier.
 +
 +
$ mkdir /tmp/foo
 +
$ mkdir -p foo/bar/jaz
 +
 +
$ rmdir foo
 +
 +
Détruis ('''r'''e'''m'''ove '''dir'''ectory) un dossier
 +
 +
=== stat ===
 +
$ stat foo.txt
 +
 +
Affiche toutes les informations sur un dossier ou un fichier
 +
 +
$ stat -c %s foo.txt
 +
 +
Tip: <code>stat -f  /sys</code>
 +
 +
=== which ===
 +
 +
$ which bash
 +
 +
Affiche le chemin où se trouve un exécutable
 +
 +
Tip: la variable <code>PATH</code> et <code>which</code> ?
 +
 +
=== whoami ===
 +
 +
$ whoami
 +
 +
Affiche le nom de votre utilisateur dans le terminal courant.
 +
 +
=== id ===
 +
 +
$ id
 +
 +
Affiche les informations de votre utilisateur dans le terminal courant.
 +
 +
$ id -un
 +
 
=== chown ===
 
=== chown ===
 +
 +
$ chown 1000 foo.txt
 +
 +
Change ('''ch'''ange '''own'''er) le propriétaire d'un dossier ou d'un fichier
 +
 
=== chmod ===
 
=== chmod ===
=== bonus chemins relatifs / absolus ===
+
 
 +
$ chmod 755 foo.txt
 +
 
 +
Change les droits d'accès à un dossier ou un fichier
 +
 
 +
 
 +
== Les prérequis ==
 +
{| class="wikitable"
 +
|-
 +
! Questions
 +
! Oui
 +
! Un peu
 +
! Non
 +
|-
 +
| Déjà utilisé un terminal
 +
| o
 +
| o
 +
| o
 +
|-
 +
| Connaît arborescence POSIX
 +
| o
 +
| o
 +
| o
 +
|-
 +
| Connaît la différence entre chemin absolu et checmin relatif
 +
| o
 +
| o
 +
| o
 +
|-
 +
| Connaît les permissions POSIX
 +
| o
 +
| o
 +
| o
 +
|}

Latest revision as of 19:04, 19 September 2019

Accéder à bash

Il faut bien commencer quelque part, donc pourquoi pas ici !?

via un terminal local

Sur un linux / BSD, chercher le "Terminal" dans la liste des applications.

Sur un Windows, prompt ou PowerShell ne sont pas des shells comparables à bash. Utiliser les options suivantes.

via SSH

Se connecter en SSH à un serveur Linux : la plupart du temps on arrive dans un bash.

via une émulation web

Il y a plusieurs solutions permettant d'exécuter un bash dans son navigateur :

https://bellard.org/jslinux/

https://copy.sh/v86/?profile=linux26

https://www.tutorialspoint.com/unix_terminal_online.php

https://linuxcontainers.org/lxd/try-it/

https://www.learnshell.org/

Premier contact

Vous êtes en face d'une invite de commandes, qui peut avoir bien des formes, par exemple :

 user@machine:~ 

Dans tous les cas, vous devriez avoir un curseur clignotant, signifiant qu'une commande est attendue.

Pour entrer une commande, il suffit de taper sur le clavier puis d'appuyer sur entrée. Ex:

 echo hello bash

Vérifions qu'on est bien dans bash. Il suffit de taper la commande suivante :

 bash

Si ça fonctionne, vous êtes bien à partir de là dans bash.

Pour vous en assurer, tapez les combinaisons de touche CTRL-x CTRL-v. Vous devriez voir apparaître un message comme

 GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)

Pour quitter bash, il suffit de taper la commande

 exit

Ou bien par exemple de faire la combinaison de touche CTRL-d

Bonus : les arguments et les options

Une commande est généralement composée de deux parties : la commande elle-même et ses arguments. Ex :

 echo       hello bash
 ¦          ¦     ¦
 commande   arguments


Il est fréquent qu'on utilise aussi des options, qui ont généralement un tiret pour les distinguer des arguments.

 echo       -n      hello bash
 ¦          ¦       ¦     ¦
 commande   option  arguments

Pour la commande echo, l'option -n change le comportement de la commande : le retour chariot en fin de ligne n'est plus automatique

Hello Bash

echo

Cette commande var afficher le texte que vous lui passez en arguments.

$ echo "Hello Bash" 

Vous pouvez utiliser des options qui vont changer le comportement de la commande.

$ echo -e "\nHello\Bash\n"

Tip : pourquoi echo --help ne marche pas toujours comment on s'y attendrait ?

Se déplacer et gérer les fichiers

pwd

 $ pwd

Cette commande affiche le dossier courant de votre terminal dans l'arborescence du système : print working directory

Tip: pourquoi utiliser pwd -P ?

ls

 $ ls

Cette commande affiche la liste des dossiers et fichiers : list

On peut passer des options à la commande

$ ls -lh
$ ls -a

On peut préciser un chemin à lister

 $ ls ./
 $ ls ../
 $ ls /etc/
 $ ls /etc/a*

Tip : intérêt de ls -1 ?

cd

 $ cd

Cette commande modifie le dossier courant de votre terminal dans l'arborescence du système Change Directory

 $ cd ../
 $ cd -

Tip : intérêt de pushd / popd ?

touch

$ touch foo.txt

Cette commande permet de créer un fichier ou d'en modifier certaines propriétés de date

$ touch --date="yesterday"  foo.txt 

Tip : intérêt de touch -h ?

cat

$ cat /etc/hosts

Cette commande affiche le contenu d'un ou plusieurs fichiers: concatenate

$ cat -n /etc/hosts
$ cat /etc/passwd /etc/group


rm

# Si foo.txt existe
$ rm -i foo.txt

Supprime ( re'move) le fichier fourni en argument. Par défaut cette commande ne supprime pas les répertoires sauf si vous faites

$ rm -ir /un/repertoire

cp

# Si foo.txt existe
$ cp  foo.txt bar.txt

Copie (copy) le premier fichier passé en argument sous le chemin passé en second argument

# copie récursivement le contenu d'un dossier foo s'il existe
$ cp -r foo bar

Tip: man cp : Hard links ? Sparse files ? Copy on Write ?

mkdir / rmdir

$ mkdir foo

Crée ( make directory) un dossier.

$ mkdir /tmp/foo
$ mkdir -p foo/bar/jaz
$ rmdir foo

Détruis (remove directory) un dossier

stat

$ stat foo.txt

Affiche toutes les informations sur un dossier ou un fichier

$ stat -c %s foo.txt 

Tip: stat -f /sys

which

$ which bash

Affiche le chemin où se trouve un exécutable

Tip: la variable PATH et which ?

whoami

$ whoami 

Affiche le nom de votre utilisateur dans le terminal courant.

id

$ id 

Affiche les informations de votre utilisateur dans le terminal courant.

$ id -un

chown

$ chown 1000 foo.txt

Change (change owner) le propriétaire d'un dossier ou d'un fichier

chmod

$ chmod 755 foo.txt

Change les droits d'accès à un dossier ou un fichier


Les prérequis

Questions Oui Un peu Non
Déjà utilisé un terminal o o o
Connaît arborescence POSIX o o o
Connaît la différence entre chemin absolu et checmin relatif o o o
Connaît les permissions POSIX o o o