Coreutils est un ensemble de logiciel GNU regroupant les outils logiciels essentiels UNIX.
En général, on injecte du contenu à traiter par une ligne de commande; ce contenu est appelé standard input (stdin). Une fois passé dans la moulinette, le contenu est transformé en un nouveau contenu, le standard output (stdout).
ls
: Liste les éléments d'un dossier
cd
: Change de dossier
mkdir
: Crée un nouveau dossier
rm
: Supprime un fichier
less
: Permet de naviguer dans le contenu d'un fichier
|
: Permet de relier des programmes entre eux
>
: Permet d'écrire le résultat d'une commande dans un fichier
>>
: Permet d'écrire le résultat d'une commande à la suite d'un fichier
cat
: Afficher le contenu d'un fichier
comm
: Comparer deux fichiers triés ligne par ligne
csplit
: Éclater un fichier en différentes sections
cut
: Sélectionner une colonne dans un fichier
fmt
: Formater un texte
fold
: Mettre toutes les lignes d'un fichier à la même longueur
head
: Afficher les premières lignes d'un fichier
join
: Joindre les lignes de 2 fichiers en prenant comme critère une colonne
commune
nl
: Numéroter les lignes d'un fichier
paste
: Afficher sur chaque ligne de la sortie standard les lignes correspondantes
des fichiers passées en paramètre et séparées par des tabulations
pr
: Convertir un fichier texte pour l'imprimer
sort
: Trier par ordre alphabétiques les lignes d'un fichier
split
: Éclater un fichier en plusieurs fichiers de même taille
tail
: Afficher les dernières lignes d'un fichier
tr
: Remplacer un caractère particulier dans un fichier (exemple
remplacer tous les 'a' par des 'b')
uniq
: Supprimer les doublons d'un fichier
wc
: Calculer le nombre de lignes, de mots et de caractères d'un fichier
Afficher le contenu d'un fichier.
# Lit tous les fichiers textes du dossier.
$ cat *.txt | less
# Combine deux fichiers textes en un seul.
$ cat a.txt b.txt > ab.txt
Comparer deux fichiers triés ligne par ligne Par défaut, 3 colonnes sont imprimées. Celle de gauche correspond aux mots présents dans le texte 1 uniquement, celle de droite dans le texte 2 uniquement et celle du milieu aux mots présents dans les deux textes.
# créer un lexique des deux textes à comparer le lexique est une liste de
# tous les mots d'un texte, à la ligne, et triés alphabétiquement
$ cat mon_fichier_1.txt | tr " " "\n" | sort | uniq >|
lexique_fichier_1.txt $ cat mon_fichier_2.txt | tr " " "\n" | sort | uniq
>| lexique_fichier_2.txt
# comparer les deux fichiers
$ comm lexique_fichier_1.txt lexique_fichier_2.txt
> ... équilibrée. équipiers éradiquer, étaient était étions étudiants
> été évitant ...
éclater un fichier en différentes sections.
Sélectionner une colonne dans un fichier
# affiche les caractères 2 à 4
$ echo "salut" | cut -c 2-4
> alu
# affiche les caractères 1 3 et 5
$ echo "salut" | cut -c 1,3,5
> slt
# affiche la première phrase de chaque paragraphe
$ cut -d. -f1 discours_columbia.txt
> ...
>
Monsieur le Président de l'Université de Columbia,
Mesdames et Me...
> Je vais essayer d'être à la hauteur de votre Université prestigieus...
> Moi je veux vous parler franchement, en ami, ce qui ne veut pas dir...
> Vous appartenez à un pays qui est le premier pays du monde par sa p...
> Nous sommes au XXIème siècle
> Une deuxième chose dont je suis certain, c'est qu'au XXIème siècle,...
> Et la troisième idée que je voudrais vous faire partager, c'est que...
> ...
Formater un texte.
# formate les lignes d'un texte à 20/30 caractères et les centre
$ fmt 20 30 discours_columbia.txt | fmt -c
Mettre toutes les lignes d'un fichier à la même longueur.
# formate les lignes d'un texte à 20 caractères/ligne
sans couper les mots
$ fold -sw 20 lux_transcript.txt
> Annick Lantenois,
> organizator and
> moderator of the
> first table starts
> with a quotation by
> Hal Foster:
> "Le design est l'un
> des principaux
> agents qui nous
> enferme dans un
> consumérisme
> contemporain"
> We aren't anymore
> in an econony of
> tangible goods but
> in an economy of
> knowledge, or
> cognitive
> capitalism.
>
> Quel est le
> positionement des
> designers comme
> individus à l'égard
> de ces
> transformation?
Afficher les premières lignes d'un fichier.
# affiche le nom et les 2 premières lignes d'un fichier
$ head -vn 2 lux_transcript.txt
> ==> lux_transcript.txt <==
> Annick Lantenois, organizator and moderator of the first table starts
> with a quotation by Hal Foster: "Le design est l'un des principaux
> agents qui nous enferme dans un consumérisme contemporain"
Joindre les lignes de 2 fichiers en prenant comme critère une colonne commune.
$ cat fichier1
> a a1
> c c1
> b b1
$ cat fichier2
> a a2
> c c2
> b b2
$ join fichier1 fichier2
> a a1 a2
> c c1 c2
> b b1 b2
Numéroter les lignes d'un fichier.
Afficher sur chaque ligne de la sortie standard les lignes correspondantes des fichiers passées en paramètre et séparées par des tabulations.
$ cat num2
> 1
> 2
$ cat let3
> a
> b
> c
$ paste num2 let3
> 1 a
> 2 b
> c
$ paste -s num2 let3
> 1 2
> a b c
Convertir un fichier texte pour l'imprimer.
# met un texte sur 2 colonnes séparées par ' || '
$ pr --columns=2 -J -s' || '
> Annick Lantenois, organizator and modera || - machine
> tor of the first table starts with a qu || - discours
> otation by Hal Foster: || - pratique
> "Le design est l'un des principaux agent || - industrie
> s qui nous enferme dans un consumérisme || - espace
> contemporain" ||
> We aren't anymore in an econony of tangi || machine de letcture: Memex
> ble goods but in an economy of knowledge || Influence Douglas Engelbart (invente le
> , or cognitive capitalism. || PC?) souris/windows
> || Texte de programmation était très littér
> Quel est le positionement des designers || aire à l'époque.
> comme individus à l'égard de ces transfo || Le design du new media -> Brenda Laurel
> rmation? || Xanadu Ted Nelson
Trier par ordre alphabétiques les lignes d'un fichier.
# crée un lexique d'un texte
$ cat lux_transcipt.txt | tr ' ' '\n' | sort -du
> 1947:
> 2ème
> 5
> a
> à
> agents
> Alain
> an
> and
> (anglophone)
> Annick
> anymore
> aren't
> au
> avec
> Basé
> Brenda
> but
> by
> capitalism.
> Catheine
> ces
> c'est
> (cf
> citation
> coeur
> cognitive
> collaboration
> ...
Éclater un fichier en plusieurs fichiers de même taille.
# Sépare un fichier texte en fichiers de 10 lignes maximum
$ split -l 10 stdin_grille_numerique.txt grille
# Sépare un fichier texte en fichiers de 2ko
$ split -b 2k stdin_grille_numerique.txt grille
Afficher les dernières lignes d'un fichier.
# Affiche toutes les lignes d'un fichier dans l'ordre inverse.
$ tail -r monfichier.txt
Remplacer un caractère particulier dans un fichier (exemple : remplacer tous les 'a' par des 'b').
# Remplace toutes les lettres capitales par des minuscules.
$ cat monfichier.txt | tr A-Z a-z
$ cat monfichier.txt | tr "[:lower:]" "[:upper:]"
# Remplace toutes les espaces par un saut de ligne.
$ cat monfichier.txt | tr " " "\n"
# Remplace toutes les "e" accentués par un "e" non-accentué.
$ cat monfichier.txt | tr "[=e=]" "e"
Supprimer les doublons d'un fichier.
# Compte le nombre d'occurrences d'un mot dans un texte, classés par ordre
# alphabétique
$ cat monfichier.txt | tr ' ' '\n' | sort | uniq -c
# Compte le nombre d'occurrences d'un mot dans un texte, classés par
# nombre d'occurrences
$ cat monfichier.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
Calculer le nombre de lignes, de mots et de caractères d'un fichier.
# Compte le nombre de mots d'un fichier.
$ wc -w stdin_grille_numerique.txt
> 2504 stdin_grille_numerique.txt
# Compte le nombre de signes d'un fichier.
$ wc -c stdin_grille_numerique.txt
> 16721 stdin_grille_numerique.txt
# Compte le nombre total de fichiers de l'ordinateur
$ find / -type f | wc -l