Actions

Cours

Manipulation de fichiers avec Bash

De GBLL, TAL, ALAO, etc.

Cette page a pour objectif de vous présenter quelques commandes bash pour manipuler des fichiers et du texte sur votre ordinateur.

Installation de Bash

  • Si vous êtes sur Windows, vous avez plusieurs 2 possibilités :
    • Installer Bash For Windows, le plus simple pour une utilisation limitée, typiquement Git en ligne de commande.
    • Activer le terminal Linux/Bash natif de Windows10, qui vous permettra d'utiliser la plupart des commandes Linux.
  • Si vous êtes sur Mac, il suffit d'ouvrir votre terminal.
  • Si vous êtes sur Linux, il suffit d'ouvrir votre terminal.


Quelques tutos pouvant aider :


Ouvrir le terminal Bash

(parmi de nombreuses façons d'ouvrir votre terminal)

  • WINDOWS avec Git Bash : Dans le dossier de votre choix, clic droit puis Git Bash Here ;
  • Linux : ctrl+alt+t, ou dans un dossier clic droit puis ouvrir dans un terminal ;
  • Mac : entrez "terminal" dans le dock.

Certaines commandes présentées sur cette page sont susceptibles de ne pas fonctionner avec Bash For Windows (qui est un peu limité).

D'autres tuto :

Bases de la base

Redirection des entrées/sorties 🔃

  • < : Lire depuis un fichier d'entrée
  • > : Écrire dans un fichier de sortie (crée ou écrase le fichier de sortie)
  • >> : Append à la suite, sans écraser le fichier de sortie
  • | : Rediriger la sortie de la commande précédente vers l'entrée de la commande suivante (pipe)

Commandes basiques de navigation ⛵

  • pwd : Affiche le chemin absolu depuis la racine jusqu'au rép. courant
  • cd <chemin> : Aller vers <chemin> (absolu ou relatif à partir du rép. courant)
    • cd sousDossier/ : Aller dans sousDossier
    • cd ../ : Aller dans le répertoire parent
    • cd / : Aller à la racine de l'ordinateur (sur Windows, il s'agit du dossier où est installé Git)
    • cd : Revenir au répertoire Home
  • ls : Liste les fichiers et dossiers présents dans le répertoire courant
    • ls -F : idem, liste que les fichiers
    • ls -F /home : Liste les fichiers dans le rép. /home
    • ls -a : Liste également les fichiers et dossiers cachés
    • ls -l : Affiche le détail de chaque élément
    • ls -sh : Affiche la taille
    • ls -shS : Affiche la taille et trie par taille
    • ls -R : Récursif : détail le contenu de chaque sous-répertoires

Manipulation de fichiers

  • cat fichier.txt : Affiche le contenu du fichier dans le terminal
    • more fichier.txt : Afficher le contenu du fichier petit à petit (appuyer sur espace ou entrée pour afficher plus, ctrl+c pour quitter)
    • head fichier.txt : Affiche les 10 premières lignes
    • tail fichier.txt : Affiche les 10 dernières lignes
    • head -n 50 fichier.txt : Affiche les 50 premières lignes
    • vim fichier.txt : Éditer le fichier.txt avec vim (éditeur en ligne de commande)
    • nano fichier.txt : Éditer le fichier.txt avec nano (éditeur en ligne de commande)
    • touch fichier.txt : Créer un fichier nommé fichier.txt
    • cp fichier.txt nouveauNom.txt : Copie fichier.txt et le renomme en "nouveauNom.txt"
    • mv fichier.txt nouveauNom.txt : Renomme fichier.txt en "nouveauNom.txt"
    • cp fichier.txt sousDossier/ : Copie fichier.txt dans le répertoire "sousDossier"
    • mv fichier.txt sousDossier/ : Déplace fichier.txt vers le répertoire "sousDossier"
    • rm fichier.txt : Supprime fichier.txt (Attention, pas de passage par la corbeille)
    • rm -y fichier.txt : Supprime en demandant confirmation

Manipulation de dossiers

  • mkdir nomDossier : Crée un nouveau dossier "nomDossier"
  • cp -R nomDossier ../ : Copie le dossier nomDossier dans le répertoire parent
  • mv -R nomDossier ../ : Déplace le dossier nomDossier dans le répertoire parent
  • rm -R nomDossier : Supprime le dossier nomDossier


Analyses et manipulations un peu plus avancées

Comptage

  • wc fichier.txt : Affiche le nombre de lignes, nombe de mots et nombre de caractères de fichiers.txt
    • wc *.txt : Affiche les infos pour chaque fichier .txt
    • wc -l fichier.txt : Affiche que le nombre de lignes
    • wc -w : Affiche que le nombre de mots
    • wc *.txt > monFichier.txt : Enregistre l'output de wc dans monFichier.txt (💩)
    • ls -l monDossier | wc -l : Compte les fichiers dans le répertoire monDossier

Tri

  • sort monFichier.txt : Tri les lignes alphabétiquement
    • sort -n monFichier.txt : Tri numériquement
    • sort -nr monFichier.txt : Ordre numérique inversé
    • sort -d monFichier.txt : Tri dictionnarique
    • sort -f monFichier.txt : Tri en ignorant la casse (majuscules/minuscules)
    • sort -k 1 monTableau.csv : Tri sur la colonne 1 (la première est 0)
    • sort -k 1.5 monTableau.csv : Tri sur le 5ème caractère de la colonne 1
    • sort -n monFichier.txt | head -n 1 : Tri numériquement et affiche la première ligne

Manipulation de texte

  • cat texte.txt : Affiche le contenu de texte.txt
  • cat texte.txt | tr [a-z]éèàç [A-Z]ÉÈÀÇ : Passe tout le contenu en majuscules
  • cat texte.txt | tr ' ' '\n' : Remplace toutes les espaces par des sauts de ligne (pour afficher un mot par ligne)
  • cat texte.txt | tr ' ' '\n' | sort : Fait la même chose puis tri les mots
  • cat texte.txt | tr ' ' '\n' | sort | uniq : ...puis supprime les doublons dans la liste de mots
  • cat texte.txt | tr ' ' '\n' | sort | uniq -c : ...supprime les doublons et compte leur fréquence
  • cat texte.txt | tr ' ' '\n' | sort | uniq -d : ...affiche les doublons uniquement
  • cat texte.txt | tr ' ' '\n' | sort | uniq -u : ...affiche les hapax uniquement
  • cat texte.txt | tr ' ' '\n' | sort | uniq -c | grep "saucisson" : ...recherche le mot "saucisson" dans la liste des mots du texte
  • cat texte.txt | tr ' ' '\n' | sort | uniq -c | sort -n : ...tri la liste de mots par fréquence
  • cat texte.txt | tr ' ' '\n' | sort | uniq -c | sort -nr : ...tri la liste de mots par fréquence inverse
  • cat texte.txt | tr ' ' '\n' | rev | sort | uniq -c : remplace les espaces par des sauts de ligne, puis renverse les mots, pour chercher les rimes et en fait une liste ordonnée avec fréquence
  • cat texte.txt | tr ' ' '\n' | rev | sort | rev | uniq -c : fait une liste des mots ordonnée par rime

Concaténation de fichiers

  • cat file1.csv file2.csv > file3.csv : Concatène verticale (file2 à la suite de file1) dans un nouveau fichier file3
  • paste file1.csv file2.csv > file3.csv : Concaténation horizontale (colonnes de file2 à la suite des colonnes de file1)

Création de liste de bigrammes