Différences entre versions de « Manipulation de fichiers avec Bash »
De GBLL, TAL, ALAO, etc.
Ligne 32 : | Ligne 32 : | ||
== Bases de la base == | == Bases de la base == | ||
=== Redirection des entrées/sorties 🔃 === | === Redirection des entrées/sorties 🔃 === | ||
− | *< : Lire depuis un fichier d'entrée | + | *{{code|<|bash}} : Lire depuis un fichier d'entrée |
− | *> : Écrire dans un fichier de sortie (crée ou écrase le fichier de sortie) | + | *{{code|>|bash}} : Écrire dans un fichier de sortie (crée ou écrase le fichier de sortie) |
− | *>> : Append à la suite, sans écraser le fichier de sortie | + | *{{code|>>|bash}} : 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) | + | *{{code|{{pipe}}|bash}} : Rediriger la sortie de la commande précédente vers l'entrée de la commande suivante (pipe<ref>{{code|Alt gr + 6}} (Linux, Windows) {{code|Alt + l}} (Mac)</ref>) |
=== Commandes basiques de navigation ⛵ === | === Commandes basiques de navigation ⛵ === |
Version du 8 octobre 2021 à 13:49
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 :
- Grenoble Software Carpentry
- Git Bash for Windows, Bash Basics
- Tutoriel Windows : Bash sur Windows
- How to Run Linux/Bash on Windows 10 Using the Built-In Windows Subsystem for Linux
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 :
- Command Line Essentials: Git Bash for Windows (bien détaillé)
- LINUX - LA BASE DES LIGNES DE COMMANDES 🤖
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[1])
pwd
: Affiche le chemin absolu depuis la racine jusqu'au rép. courantcd <chemin>
: Aller vers <chemin> (absolu ou relatif à partir du rép. courant)cd sousDossier
: Aller dans sousDossiercd ..
: Aller dans le répertoire parentcd /
: Aller à la racine de l'ordinateur (sur Windows — gitbash —, 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 courantls -F
: idem, liste que les fichiersls -F /home
: Liste les fichiers dans le rép. /homels -a
: Liste également les fichiers et dossiers cachésls -l
: Affiche le détail de chaque élémentls -sh
: Affiche la taillels -shS
: Affiche la taille et trie par taillels -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)
Manipulation d'audio
- ffmpeg -i filename.wav newfilename.mp3 : conversion d'un fichier wav en mp3.
- ffmpeg -i filename.wav -ar 44100 newfilename.mp3 : rééchantillonnage à 44.1kHz
- ffmpeg -i filename.wav -b:a 320k newfilename.mp3 : changement du bitrate à 320kb/s
Manipulation de vidéo
- ffmpeg -i video_lourde.mp4 -vcodec h264 -acodec aac video_compresse.mp4 : compression vidéo (codec vidéo h264, audio AAC)
- ffmpeg -i 'zoom séance 1 24.11.20 bis.mp4' -map a zoomAudio.wav : extraction de l'audio d'une vidéo (format de sortie: wav)
Boucle sur plusieurs fichiers
- for f in *.txt; do head -n 1 $f; done : boucle sur tous les fichiers .txt du dossier courant, et on affiche juste la première ligne de chaque.
- for f in *.txt; do echo $f; head -n 1 $f; done : pareil mais on affiche le nom du fichier avant.
- for f in audio/*.wav; do python wav2param.py $f; done : lance un script python (wav2param.py) sur chaque fichier .wav du dossier audio/
- for f in *; ffmpeg -i $f $f.mp3; done : convertit tous les fichiers du dossier en mp3.
Autres commandes pratiques
- rename 's/ /_/g' * : remplace les espaces par des underscores dans les noms de fichiers
- ↑
Alt gr + 6
(Linux, Windows)Alt + l
(Mac)