Difference between revisions of "HelloBash Ep1"
(→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://copy.sh/v86/?profile=linux26
https://www.tutorialspoint.com/unix_terminal_online.php
https://linuxcontainers.org/lxd/try-it/
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