URL: https://linuxfr.org/users/jseb/journaux/le-core-utile Title: Le core utile Authors: jseb Date: 2015年12月10日T11:51:04+01:00 License: CC By-SA Tags: shell, coreutils et selinux Score: 58 # GNU Coreutils # Ce journal concerne les utilitaires GNU. Ils sont présents dans toutes les distributions Linux, et tous les adeptes du shell les connaissent. Mais connaissons-nous vraiment toutes ces commandes ? J'ai donc listé le contenu du paquet _coreutils_ de ma distribution, et j'ai écrit une description rapide pour les commandes que je ne connaissais pas, ou peu. [La doc GNU](http://www.gnu.org/software/coreutils/coreutils.html) **base64** Codage/décodage d'un fichier dans le format base64. Fonctionne avec l'entrée standard (on peut donc piper). **basename** Voir _dirname_ **cat** **chcon** Modifier le contexte de sécurité d'un fichier. Ceci ne concerne que les utilisateurs de SELinux. Le contexte de sécurité est visible avec `ls -Z` **chgrp** **chmod** **chown** **chroot** Lancer une commande ou un shell en confinant le répertoire racine. **cksum** Calcule le checksum (CRC) d'un fichier. Donne également sa taille. **comm** Compare deux fichiers. La sortie se fait en colonnes. **cp** **csplit** Découpe un fichier en différentes sections. Chaque section est sauvée dans un fichier (on peut préciser la règle de nommage). Les sections sont délimitées par un nombre de lignes, ou une regex. **cut** **date** **dd** **df** **dir** Ce n'est pas un alias vers _ls_. La syntaxe des options l'évoque pourtant fortement. Voir _vdir_. **dircolors** Permet de créer la variable shell `LS_COLORS`, au bon format selon le shell. **dirname** Voir _basename_. **du** **echo** **env** **expand** Conversion des tabulations d'un fichier en espaces. Voir _unexpand_. **expr** Évaluation d'une expression. `expr 1 = 2` : renvoie 0. On peut aussi faire du calcul arithmétique ou du traitement de chaines. **factor** Factorise un nombre et imprime le résultat sur la sortie standard. `factor 16` : renvoie "2 2 2 2" **false** Ne fait rien, et le fait mal en plus. Sûrement utile pour renvoyer une erreur de façon lisible dans un script. **fmt** Formatage simple de texte. Me semble utile pour formater rapidement un texte aux lignes trop longues. **fold** Formatage simple de texte. Ne semble pas très différent de _fmt_. Je n'ai pas compris à quoi servait l'option `-b`. **head** **hostid** Sort un nombre hexadécimal qui correspondrait à un identifiant pour l'hôte. Pas de détails dans la page de manuel sur le mystérieux calcul utilisé. **id** **install** Copie de fichiers d'un endroit vers un autre. La page de manuel recommande quand même d'utiliser un vrai gestionnaire de package. **join** Permet une union sur deux fichiers. **link** Crée un hard link (version simplifiée de _ln_). **ln** **logname** Équivalent à whoami. **ls** **md5sum** Calcule le md5 d'un fichier, ou contrôle les sommes en utilisant une liste de fichiers. **mkdir** **mkfifo** **mknod** **mktemp** Crée un répertoire temporaire garanti unique. **mv** **nice** **nl** Numérote les lignes d'un fichier. Ne numérote pas les lignes vides (on peut le forcer). **nohup** Lance une commande en ignorant les signaux, et en redirigeant la sortie vers un fichier. **nproc** Sort le nombre de processeurs du système. **numfmt** Conversion de nombres vers un format plus lisible pour nous, les humains. Semble surtout utile pour des conversion telles que 1000 -> 1K . **od** Dumpe un fichier en différentes bases. Par défaut, c'est en octal, d'où le nom de la commande. **paste** Je n'ai pas compris l'intérêt de cette commande. **pathchk** Vérifie la validité d'un nom de fichier. L'option -P permet de vérifier qu'un fichier ne commence pas par un tiret. `pathchk -P -- -toto` : renvoie une erreur. **pinky** Permet d'obtenir des informations sur les utilisateurs connectés au système. Semble très semblable à who , mais en plus lent. **pr** Pour imprimer à l'ancienne. **printenv** Équivalent à _env_. **printf** **ptx** Pas compris l'intérêt. **pwd** **readlink** Avec l'option `-f` , imprime le chemin complet du fichier. Résout également tous vos problèmes de liens symboliques. **realpath** La même chose que `readlink -f`. **rm** **rmdir** **runcon** Lance un programme dans un certain contexte de sécurité. Pour les utilisateurs de SELinux. **seq** Génère une séquence, et l'imprime sur la sortie standard. `seq 1 10` Équivalent built-in pour Bash : for (( ... )) `for ((i=1; i<=10; i++)); do echo $i; done` **sha1sum** **sha224sum** **sha256sum** **sha384sum** **sha512sum** Et bientôt sous vos yeux ébahis, la commande _shasum_ et ses paramètres! **shred** Écrase un fichier avec des valeurs aléatoires, puis l'efface (si option `-u`) **shuf** Mélange le contenu d'un fichier en permutant ses lignes. Fonctionne aussi avec l'entrée standard. **sleep** **sort** **split** Découpe un fichier en plusieurs morceaux. **stat** Donne toutes sortes d'information sur le système de fichiers, ou les fichiers eux-même. Ex: sur quel point de montage suis-je en ce moment ? `stat --printf="%m" .` **stdbuf** Lance une commande et change la façon dont ses entrées/sorties sont bufferisées. Après quelques essais sur mes logs, je ne vois pas de différence lors d'un grep sur 200Mo. **stty** **sum** Encore un calcul de checksum **sync** Achève toutes les écritures en attente du FS. Très utile après l'umount d'une clé USB : regardez comme elle clignote joliment. (oui je sais, ce n'est pas normal de devoir faire ça après un umount). **tac** Du _tac_ au _cat_. **tail** **tee** Lit l'entrée standard, et écrit à la fois sur la sortie standard et dans un fichier. **test** Pour ma part, je trouve ça moins lisible que [ **timeout** Lance une commande et envoie un signal au bout d'un certain temps. **touch** **tr** Pour les conversions caractères par caractères. **true** Ne fait rien, mais le fait bien. **truncate** Définit la taille d'un fichier (de zéro à l'infini). Si des données sont présentes, leur préservation dépend de la taille demandée. **tsort** Tri topologique. Tous les détails [ici](https://en.wikipedia.org/wiki/Topological_sorting). **tty** Donne le nom du périphérique utilisé comme tty, dans le terminal ou la console qui a lancé la commande **uname** Le _whoami_ du noyau. **unexpand** Conversion des espaces d'un fichier en tabulations. Voir _expand_. **uniq** **unlink** Je ne vois pas la différence avec un _rm_. **users** **vdir** Tout comme _dir_, ressemble fortement à _ls_. **wc** **who** _users_, avec plus d'informations. **whoami** Bin c'est toi, voyons. **yes** Permet de sortir la chaine de son choix, jusqu'à que kill s'ensuive. Par défaut, sort 'y'.