Différences entre versions de « Manipulation de fichiers avec Bash »
De GBLL, TAL, ALAO, etc.
Ligne 71 : | Ligne 71 : | ||
=== Manipulation de dossiers === | === Manipulation de dossiers === | ||
− | *mkdir nomDossier : Crée un nouveau dossier "nomDossier" | + | *{{code|mkdir nomDossier|bash}} : Crée un nouveau dossier "nomDossier" |
− | *cp -R nomDossier ../ : Copie le dossier nomDossier dans le répertoire parent | + | *{{code|cp -R nomDossier ../|bash}} : Copie le dossier nomDossier dans le répertoire parent |
− | *mv -R nomDossier ../ : Déplace le dossier nomDossier dans le répertoire parent | + | *{{code|mv -R nomDossier ../|bash}} : Déplace le dossier nomDossier dans le répertoire parent |
− | *rm -R nomDossier : Supprime le dossier nomDossier | + | *{{code|rm -R nomDossier|bash}} : Supprime le dossier nomDossier |
− | |||
== Analyses et manipulations un peu plus avancées == | == Analyses et manipulations un peu plus avancées == |
Version du 8 octobre 2021 à 13:52
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 terminalmore 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 lignestail fichier.txt
: Affiche les 10 dernières ligneshead -n 50 fichier.txt
: Affiche les 50 premières lignesvim 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.txtcp 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 parentmv -R nomDossier ../
: Déplace le dossier nomDossier dans le répertoire parentrm -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)