Difference between revisions of "HelloBash Ep1"

From Tmplab
(mkdir / rmdir)
(cp)
Line 158: Line 158:
 
Copie ('''c'''o'''p'''y) le premier fichier passé en argument sous le chemin passé en second argument  
 
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
+
# copie récursivement le contenu d'un dossier foo s'il existe
$ cp -r foo bar
+
$ cp -r foo bar
  
Tip: <code>man cp</code> : Hard links ? Sparse files ? Copy on Write ?  
+
Tip: <code>man cp</code> : Hard links ? Sparse files ? Copy on Write ?
  
 
=== mkdir / rmdir ===
 
=== mkdir / rmdir ===

Revision as of 18:53, 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