From 2c5dd75eb709590df755a0760c4c901c4011c085 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Sat, 2 Jan 2016 14:12:08 +0000 Subject: [PATCH 01/35] Improved sections El arte del terminal and Meta --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index eee53ed..84205a8 100644 --- a/README-es.md +++ b/README-es.md @@ -21,29 +21,29 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta mejora su flexibilidad y productividad como ingeniero en formas obvia y sutil. Esta es una selección de notas y consejos al usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora su flexibilidad y productividad como ingeniero de maneras obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudiendo fácilmente sugerir mejoras. Si ve un error o algo que podría ser mejor, por favor, crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si encuentras un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) ## Meta Alcance: -- Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se enfoca en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y al Bash scripting por lo general. -- Incluye tanto comandos "estándar" Unix, así como aquellos que requieren la instalación especial de un paquete -- siempre que sea suficientemente importante para ameritar su inclusión. +- Esta guía es tanto para principiantes como para expertos. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. +- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos sirven o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Se concentra en Bash interactivo, aunque muchos de los consejos sirven para otros shells y en general para el scripting en Bash. +- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para justificar su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que comandos, opciones, pipes, etc. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opciones, las pipes, etc. ## Fundamentos From 786524b090c1037534483efb026e84610ef1ea57 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Sat, 2 Jan 2016 14:14:25 +0000 Subject: [PATCH 02/35] Improved translation on line 24 --- README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index 84205a8..39baf2b 100644 --- a/README-es.md +++ b/README-es.md @@ -21,7 +21,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora su flexibilidad y productividad como ingeniero de maneras obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte @@ -43,7 +43,7 @@ Alcance: Notas: - Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opciones, las pipes, etc. +- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opcioneslas pipes, etc. ## Fundamentos From 4cbb0134eb23fa38345c725e93022f09ef82a13d Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Mon, 4 Jan 2016 12:32:20 +0000 Subject: [PATCH 03/35] Making changes thanks to ceoaliongroo --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index 39baf2b..bfb9a40 100644 --- a/README-es.md +++ b/README-es.md @@ -21,29 +21,29 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero ésta mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si encuentras un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si ves un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) ## Meta Alcance: -- Esta guía es tanto para principiantes como para expertos. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos sirven o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se concentra en Bash interactivo, aunque muchos de los consejos sirven para otros shells y en general para el scripting en Bash. -- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para justificar su inclusión. +- Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. +- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Se centra en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y en general para el Bash scripting. +- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opcioneslas pipes, etc. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares cuando conoces la idea o comando, con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. ## Fundamentos From 4c6240a339231946bd3ac72d272b43e95f2bfde1 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Mon, 4 Jan 2016 12:36:39 +0000 Subject: [PATCH 04/35] se aplican to aplican --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index bfb9a40..bf67f08 100644 --- a/README-es.md +++ b/README-es.md @@ -37,7 +37,7 @@ Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. - Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se centra en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y en general para el Bash scripting. +- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y en general para el Bash scripting. - Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. Notas: From ce77a04dc54a69d05221449397dac3adf165fb88 Mon Sep 17 00:00:00 2001 From: miuc Date: Wed, 6 Jan 2016 11:56:53 +0800 Subject: [PATCH 05/35] update taocl for chinese language --- README-zh.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 5d6ea85..fb3a83e 100644 --- a/README-zh.md +++ b/README-zh.md @@ -319,8 +319,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 运行这个函数从这篇文档中随机获取一条技巧(解析 Markdown 文件并抽取项目): ```sh function taocl() { - curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-zh.md| pandoc -f markdown -t html | + iconv -f 'utf-8' -t 'unicode' | xmlstarlet fo --html --dropdtd | xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | xmlstarlet unesc | fmt -80 From c7aa146c8e65334d1111688494804ec1821ff084 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Wed, 13 Jan 2016 16:04:27 +0000 Subject: [PATCH 06/35] Added changes recommended by ceoaliongroo --- README-es.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-es.md b/README-es.md index bf67f08..fdb1a90 100644 --- a/README-es.md +++ b/README-es.md @@ -37,12 +37,12 @@ Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. - Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y en general para el Bash scripting. -- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. +- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y al Bash scripting por lo general. +- Incluye tanto comandos "estándar" Unix así como los que requieren instalaciones de paquetes especiales -- siempre que sean lo suficientemente importantes para merecer su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares cuando conoces la idea o comando, con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +-- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. - Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. From 615aa90917707a815e131a93f10d49102c29a3d2 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:05:28 +0100 Subject: [PATCH 07/35] fr: Translate the introduction --- README-fr.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 README-fr.md diff --git a/README-fr.md b/README-fr.md new file mode 100644 index 0000000..6248955 --- /dev/null +++ b/README-fr.md @@ -0,0 +1,32 @@ +[ Langues: +[English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +] + +# L'art de la ligne de commande + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Meta](#meta) +- [Notions de base](#notions-de-base) +- [Utilisation quotidienne](#utilisation-quotidienne) +- [Traitement des fichiers et des données](#traitement-des-fichiers-et-des-données) +- [Débogage du système](#débogage-du-système) +- [Unilignes](#unilignes) +- [Obscures mais utiles](#obscures-mais-utiles) +- [Uniquement OS X](#uniquement-os-x) +- [Ressources supplémentaires](#ressources-supplémentaires) +- [Avertissement](#avertissement) + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. +Ceci est une sélection de notes et d'astuces sur l'utilisation de la ligne de commande que nous avons trouvées utiles en travaillant avec Linux. +Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou obscures. +Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui se trouve dans ce document, alors vous saurez beaucoup de choses. + +Ce document est le fruit du travail de [nombreux auteurs et de traducteurs](AUTHORS.md). +Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. +Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) + + + From 997ba3847ac4c4747a83b2c91b83e59921b7d556 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:15:54 +0100 Subject: [PATCH 08/35] fr: Translate the "Disclaimer" and "License" sections --- README-fr.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README-fr.md b/README-fr.md index 6248955..9cb3ba1 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,4 +29,14 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Avertissement +Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. +Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie nécessairement que vous devriez le faire ! ;) + + +## Licence + +[![Licence Creative Commons](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Ce document est mis à disposition selon les termes de la [Licence Creative Commons Attribution - Partage dans les mêmes conditions 4.0 International](http://creativecommons.org/licenses/by-sa/4.0/). From d29bbb911f5d66e91cfec0c94d1e1f11145e6cb7 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:27:12 +0100 Subject: [PATCH 09/35] fr: Translate the section "More resources" --- README-fr.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-fr.md b/README-fr.md index 9cb3ba1..a8afb7f 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,15 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Autres ressources + +- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): un guide plus approfondi sur la ligne de commande pour Mac OS. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) : pour écrire de meilleurs scripts shell. +- [shellcheck](https://github.com/koalaman/shellcheck) : un outil d'analyse statique des scripts shell. L'équivalent de lint pour bash, sh et zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html) : les points de détail, malheureusement compliqués, sur la manière de manipuler correctement les noms de fichiers dans les scripts shell. + + ## Avertissement Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. From 8e5172f10eda9d8ce93895628b3941e66c55ba69 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 16:01:03 +0100 Subject: [PATCH 10/35] fr: Translate the section "OS X only" --- README-fr.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README-fr.md b/README-fr.md index a8afb7f..052e5be 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,29 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Uniquement OS X + +Ce qui suit ne s'applique *qu'*à Mac OS. + +- Gestion des paquets avec `brew` (Homebrew) ou `port` (MacPorts). +Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessous. + +- Copier la sortie de n'importe quelle commande dans une application de bureau avec `pbcopy` et coller l'entrée d'une commande avec `pbpaste`. + +- Pour permettre à la touche Option de fonctionner comme la touche Alt dans le terminal de Mac OS (comme dans les commandes **alt-b**, **alt-f**, etc), allez dans Préférences -> Profils -> Clavier et sélectionner « Choisir la touche Option comme touche virtuelle ». + +- Pour ouvrir un fichier avec une application de bureau, utilisez `open` ou `open -a /Applications/Whatever.app`. + +- Spotlight : recherche de fichiers avec `mdfind` et affichage des métadonnées (telles que les informations EXIF d'une photo) avec `mdls`. + +- Ayez à l'esprit que Mac OS dérive du système Unix BSD et que beaucoup de commandes (par exemples `ps`, `ls`, `tail`, `awk`, `sed`) présentent de légères différences avec leurs versions pour Linux, qui lui est largement influencé par System V et les outils GNU. +Vous pouvez souvent faire la distinction grâce à l'en-tête « BSD General Commands Manual » dans les pages de manuel. +Dans certains cas, les versions GNU peuvent également être installées (telles que `gawk` et `gsed` pour GNU awk et GNU sed). +Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles commandes (par exemple, envisagez d'utiliser Python ou Perl) ou alors testez-les soigneusement. + +- Pour obtenir des informations sur la version de Mac OS, servez-vous de `sw_vers`. + + ## Autres ressources - [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. From 7425dcb12ea88e281084ec4dfde41da090442da3 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 23 Dec 2015 08:13:09 +0100 Subject: [PATCH 11/35] fr: Translate the section "Obscure but useful" --- README-fr.md | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/README-fr.md b/README-fr.md index 052e5be..597e291 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,159 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Obscures mais utiles + +- `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. + +- `m4` : simple macro processeur. + +- `yes` : affiche une chaîne de caractères indéfiniment. + +- `cal` : un calendrier sympathique. + +- `env` : exécute une commande (utile dans les scripts). + +- `printenv` : imprime les variables d'environnement (utile pour le débogage et dans les scripts). + +- `look` : trouve les mots anglais (ou les lignes d'un fichier) commençant par une chaîne donnée. + +- `cut`, `paste` and `join` : manipulation des données. + +- `fmt` : formate du texte. + +- `pr` : formate un texte en page ou en colonne. + +- `fold` : coupe des lignes de texte. + +- `column` : formate un texte en colonnes alignées, de largeurs fixes ou en tables. + +- `expand` et `unexpand` : convertit les tabulations en espaces et vice-versa. + +- `nl` : numérote les lignes d'un fichier. + +- `seq` : affiche une suite de nombres. + +- `bc` : une calculatrice. + +- `factor` : factorise des nombres entiers. + +- [`gpg`](https://gnupg.org/) : chiffre et signe les fichiers. + +- `toe` : table des entrées terminfo. + +- `nc` : debogage réseau et transfert de données. + +- `socat` : relai et réacheminement de port TCP (semblable à `netcat`). + +- [`slurm`](https://github.com/mattthias/slurm) : visualisation du trafic réseau. + +- `dd` : déplacer les données entre les fichiers ou les périphériques. + +- `file` : détermine le type d'un fichier + +- `tree` : affiche les répertoires et sous-répertoires sous la forme d'un arbre (comme `ls` mais récursivement). + +- `stat` : affiche des informations sur un fichier. + +- `time`: exécute et chronomètre une commande. + +- `timeout`: exécute une commande avec une limite de temps et stoppe le processus après la durée indiquée. + +- `lockfile` : crée un fichier sémaphore qui ne peut être supprimé que par `rm -f` + +- `logrotate` : permet la rotation, la compression et l'envoi des fichiers journaux par courrier électronique. + +- `watch` : exécute une commande périodiquement, affiche le résultat et surligne les différences entre les résultats. + +- `tac` : affiche des fichiers à l'envers. + +- `shuf` : affiche une permutation aléatoire des lignes d'un fichier. + +- `comm` : compare ligne à ligne deux fichiers triés. + +- `pv` : surveille la progression des données à travers un tube. + +- `hd`, `hexdump`, `xxd`, `biew` et `bvi` : dump et édition de fichiers binaires. + +- `strings` : extraire du texte de fichiers binaires. + +- `tr` : conversion et manipulation de caractères. + +- `iconv` ou `uconv` : conversion entre différents encodages de caractères. + +- `split` et `csplit` : découpage de fichiers. + +- `sponge` : lit l'entrée standart avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, p.ex., `grep -v something some-file | sponge some-file` + +- `units` : conversions d'unités et calculs. Convertit des furlongs par fortnight en twips par blink (voir aussi `/usr/share/units/deifinitions.units`). + +- `apg` : génère des mots de passe aléatoires. + +- `7z` : compresse des fichiers avec taux de compression élevé. + +- `ldd` : affiche des informations sur les bibliothèques partagées. + +- `nm` : affiche les symboles contenus dans un fichier objet. + +- `ab` : mesure les performances de serveurs web + +- `strace`: trace les appels système. + +- `mtr`: un traceroute amélioré pour débugguer un réseau. + +- `cssh` : visual concurrent shell + +- `rsync` : synchronise des fichiers et des dossiers via SSH ou localement. + +- `wireshark` et `tshark`: capture de paquets et dépannage réseau. + +- `ngrep` : grep pour les couches réseau. + +- `host` et `dig`: interroge les serveurs DNS. + +- `lsof` : process file descriptor and socket info. + +- `dstat` : statistiques sur les ressources système. + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat` : statistiques sur l'usage des disques. + +- `mpstat` : statistiques sur l'usage des CPUs. + +- `vmstat` : statistiques sur l'usage de la mémoire. + +- `htop` : version améliorée de top. + +- `last` : historique des connexions. + +- `w` : montre qui est connecté. + +- `id` : affiche les informations sur un utilisateur et ses groupes. + +- `sar` : statistiques sur l'activité du système + +- `iftop` ou `nethogs` : utilisation du réseau par un socket ou un processus. + +- `ss` : statistiques relatives aux sockets. + +- `dmesg` : messages lors du démarrage et erreurs système. + +- `sysctl` : visualise et configure les paramètres du noyau Linux à chaud. + +- `hdparm` : manipulation et performances d'un disque SATA ou ATA. + +- `lsb_release` : informations sur la distribution Linux. + +- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et partitions). + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. + +- `lsmod` et `modinfo` : liste des modules du noyau et informations les concernant. + +- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous considérez les locomotives à vapeur et les citations de Jean-Claude Van Damme « utiles ». + + ## Uniquement OS X Ce qui suit ne s'applique *qu'*à Mac OS. From e2756f66de917b6faeb4826789294b7f6c78d961 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 23 Dec 2015 17:38:23 +0100 Subject: [PATCH 12/35] fr: Translate the section "Meta" --- README-fr.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-fr.md b/README-fr.md index 597e291..b444e4b 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,26 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Méta + +Contexte : + +- Ce guide est destiné aux utilisateurs débutants et chevronnés. +Les objectifs sont l'*envergure* (tout est important), la *spécificité* (donner des exemples concrets des cas les plus courants) et la *concision* (éviter tout ce qui n'est pas essentiel et les digressions disponibles facilement ailleurs). +Chaque astuce est indispensable dans certaines situations ou fait gagner un temps considérable par rapport aux solutions alternatives. +- Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». +Beaucoup des autres items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). +- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts Bash. +- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation des paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. + +Remarques : + +- Afin que tout tienne sur une seule page, le contenu est implicitement inclus par référence. +Vous êtes suffisamment intelligents pour chercher les renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. +Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distribution ou OS) pour installer de nouveaux programmes. +- Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From 5ca176b3e1a6e6f4fde0f66debb111ff981327d3 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 26 Dec 2015 10:13:01 +0100 Subject: [PATCH 13/35] fr: Translate the section "System debugging" --- README-fr.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/README-fr.md b/README-fr.md index b444e4b..7fd8f4f 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,57 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Débogage du système + +- Pour du débogage web, `curl` et `curl -I` sont pratiques, de même que leurs +équivalents avec `wget` ou le plus moderne [`httpie`](https://github.com/jkbrzt/httpie). + +- Pour connaître l'état courant du CPU ou du disque, les outils conventionnels sont `top` (ou `htop` meilleur), `iostat` et `iotop`. +Utilisez `iostat -mxz 15` pour des statistiques de base concernant le CPU, des statistiques détaillées pour les disques et un aperçu des performances. + +- Pour des informations sur les connexions réseaux, utilisez `netstat` et `ss`. + +- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. +Pour un aperçu plus étendu et détaillé, utilisez [`glances`](https://github.com/nicolargo/glances). + +- Pour connaître l'état de la mémoire, exécutez `free` et `vmstat` et comprenez leurs sorties. +En particulier, ayez à l'esprit que la valeur du « cache » est la mémoire utilisée par le noyau Linux comme cache de fichiers, donc compte comme de la mémoire « libre ». + +- Le système de debogage de Java est une autre paire de manche, cependant un truc simple sur la JVM d'Oracle et quelques autres JVMs consiste à exécuter `kill -3 ` pour obtenir une trace complète des appels et une empreinte de la mémoire (y compris des détails sur le ramasse-miettes qui peuvent être hautement instructifs) dans stderr ou des fichiers journaux. +Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil SJK](https://github.com/aragozin/jvm-tools) est plus avancé. + +- Utilisez `mtr` comme un `traceroute` amélioré pour identifier les problèmes de réseau. + +- Pour déterminer les raisons pour lesquelles un disque est plein, `ncdu` permet de gagner du temps par rapport aux commandes habituelles telles que `du -sh *`. + +- Pour trouver quel socket ou processus utilise la bande passante essayez `iftop` ou `nethogs`. + +- L'outil `ab` (fourni avec Apache) est utile pour une vérification rapide et grossière des performances d'un serveur web. +Pour des tests de charge plus complexes servez-vous de `siege`. + +- Pour du debogage réseau plus sérieux : `wireshark`, `tshark` ou `ngrep`. + +- Connaîssez `strace` et `ltrace`. +Ces commandes peuvent être utiles si un programme fonctionne mal ou plante et que vous n'en connaissez pas la raison, ou si vous voulez vous faire une idée des performances. +Remarquez l'option de profilage (`-c`) et la possibilité de les rattacher à un processus en cours d'exécution (`-p`). + +- Connaîssez `ldd` pour afficher les bibliothèques partagées, etc. + +- Sachez comment vous connecter à un processus en cours avec `gdb` et récupérer la trace d'appels. + +- Utilisez `/proc`. C'est parfois incroyablement utile pour résoudre des problèmes en live. +Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd`, `/proc/xxx/smaps` (où `xxx` est l'identifiant du processus ou pid). + +- Pour comprendre pourquoi quelque chose a mal tourné antérieurement, `sar` peut-être très utile. +Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau, etc. + +- Pour une analyse plus approfondie du système et des performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). + +- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur l'Unix et le noyau) ou `lsb_release -a` (informations sur la distribution Linux). + +- Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From 1f5fa377530b5b66e1fc0e4479d4ec640a30426e Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sun, 27 Dec 2015 11:01:20 +0100 Subject: [PATCH 14/35] fr: Translate the section "Processing files and data" --- README-fr.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7fd8f4f..7bec3e2 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,107 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Traitement des fichiers et des données + +- Pour localiser un fichier par son nom dans le répertoire courant, `find . -iname '*something*'` (ou autres). +Pour trouver un fichier n'importe où par son nom, utilisez `locate something` (mais n'oubliez pas que `updatedb` peut ne pas avoir indexé les fichiers récemment créés). + +- Pour une recherche à travers les fichiers sources ou fichiers de données (plus poussée que `grep -r`), utilisez [`ag`](https://github.com/ggreer/the_silver_searcher). + +- Pour convertir du HTML en texte brut : `lynx -dump -stdin`. + +- Pour le Markdown, HTML et les conversions dans toutes sortes de formats, essayez [`pandoc`](http://pandoc.org). + +- Si vous devez manipuler du XML, le vieux `xmlstarlet` marche bien. + +- Pour le JSON, utilisez [`jq`](http://stedolan.github.io/jq/). + +- Pour le YAML, utilisez [`shyaml`](https://github.com/0k/shyaml). + +- Pour les fichiers Excel ou CSV, [csvkit](https://github.com/onyxfish/csvkit) fournit `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. + +- Pour Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) est pratique et [`s4cmd`](https://github.com/bloomreach/s4cmd) est plus rapide. +L'outil d'Amazon [`aws`](https://github.com/aws/aws-cli) et la version améliorée [`saws`](https://github.com/donnemartin/saws) sont indispensables pour les autres tâches liées à AWS. + +- Connaissez `sort` et `uniq`, y compris les options `-u` et `-d` de `uniq` (voir les unilignes plus bas). Voir aussi `comm`. + +- Connaissez `cut`, `paste` et `join` pour manipuler les fichiers textes. +Beaucoup de personnes utilisent `cut` mais oublient `join`. + +- Connaissez `wc` pour compter les lignes (`-l`), les caractères (`-m`), les mots (`-w`) et les octets (`-c`). + +- Connaissez `tee` pour copier depuis stdin vers un fichier ou vers stdout, comme dans `ls -al | tee file.txt`. + +- Sachez que la locale affecte de nombreux outils en ligne de commande de manière subtile, comme l'ordre pour les tris (collation) et les performances. +La plupart des installateurs Linux définissent la variable `LANG` ou d'autres variables locales d'environnement pour configurer une locale telle que US English. +Mais ayez à l'esprit que le tri sera modifié si vous changez la locale. +Et sachez que les routines i18n peuvent rendre les opérations de tri et d'autres commandes *beaucoup* plus lentes. +Dans certains cas (tels que les opérations concernant les ensembles et l'unicité abordées ci-dessous) vous pouvez, sans risque, complètement ignorer les lentes routines i18n et utiliser l'ordre classique basé sur les octets à l'aide de `export LC_ALL=C`. + +- Connaissez `awk` et `sed` pour de l'analyse de données élémentaire. +Par exemple, pour effectuer la somme de tous les nombres de la troisième colonne d'un fichier texte : `awk '{ x += $3 } END { print x}'`. +C'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python. + +- Pour remplacer toutes les occurences d'une chaîne de caractères dans un ou plusieurs fichiers : +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` + +- Pour renommer de multiple fichiers ou effectuer des recherches et remplacements dans des fichiers, essayez [`repren`](https://github.com/jlevy/repren) (dans certains cas la commande `rename` permet aussi de renommer de multiples fichiers, mais soyez prudent car ses fonctionnalités ne sont pas les mêmes sur toutes les distributions Linux). +```sh + # Renomme les répertoires, les fichiers et leurs contenus à l'aide + # de la substitution foo -> bar : + repren --full --preserve-case --from foo --to bar . + # Restaure des fichiers de sauvegarde à l'aide de la + # substitution whatever.bak -> whatever : + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Même chose que ci-dessus avec rename s'il est disponible : + rename 's/\.bak$//' *.bak +``` + +- Selon sa page de manuel, `rsync` est un outil de duplication de fichiers vraiment rapide et incroyablement polyvalent. +Il est connu pour faire de la synchronisation entre machines, mais est également utile pour un usage local. +Il est aussi parmi les outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : +```sh + mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- Utilisez `shuf` pour mélanger ou sélectionner aléatoirement des lignes d'un fichier. + +- Connaissez les options de `sort`. +Pour les nombres, utilisez `-n`, ou `-h` pour traiter des nombres dans un format lisible par un humain (p. ex. issus de `du -h`). +Sachez comment les clés fonctionnent (`-t` et `-k`). +En particulier, faites attention à bien écrire `-k1,1` pour trier selon le premier champ uniquement : `-k1` signifie que l'on trie selon la ligne entière. +Le tri stable (`sort -s`) peut s'avérer utile. +Par exemple, pour trier d'abord selon le champ 2, puis selon le champ 1, vous pouvez utiliser `sort -k1,1 | sort -s -k2,2`. + +- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez la copier-coller). + +- Les outils habituels pour *patcher* un code source sont `diff` et `patch`. +Voir aussi `diffstat` pour un relevé statistique d'un diff et `sdiff` pour un affichage côte à côte d'un diff. +Remarquez que `diff -r` marche avec des répertoires entiers. +Utilisez `diff -r tree1 tree2 | diffstat` pour obtenir un résumé des changements. +Utilisez `vimdiff` pour comparer et éditer des fichiers. + +- Pour les fichiers binaires, utilisez `hd`, `hexdump` ou `xxd` pour un affichage simple en hexadécimal et `bvi`, `biew` pour éditer des fichiers binaires. + +- Également pour les fichiers binaires, `strings` (ainsi que `grep`, etc) vous permet d'y trouver des bouts de texte. + +- Pour effectuer des différences entre des fichiers binaires (compression différentielle), utilisez `xdelta3`. + +- Pour changer l'encodage d'un texte, essayer `iconv`, ou `uconv` pour un usage plus sophistiqué : il permet quelques trucs avancés avec l'Unicode. +Par exemple, cette commande met en minuscules et retire tous les accents (en les développant et les écartant) : +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Pour découper des fichiers en morceaux, voyez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. + +- Pour manipuler des dates et des heures, utilisez `dateadd`, `datediff`, `strptime`, etc. fournis par [`dateutils`](http://www.fresse.org/dateutils/). + +- Utilisez `zless`, `zmore`, `zcat` et `zgrep` pour opérer sur des fichiers compressés. + + ## Débogage du système - Pour du débogage web, `curl` et `curl -I` sont pratiques, de même que leurs From 34a8cdf3ff5ec0d7b8cc6ab0ac6c1c9740099294 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Tue, 29 Dec 2015 16:37:08 +0100 Subject: [PATCH 15/35] fr: Translate the section "One-liners" --- README-fr.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7bec3e2..290fb57 100644 --- a/README-fr.md +++ b/README-fr.md @@ -201,6 +201,53 @@ Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau - Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). +## Unilignes + +Quelques exemples d'assemblages de commandes : + +- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence de fichiers texte à l'aide de `sort` et `uniq`. +Supposez que `a` et `b` soient des fichiers texte ne contenant pas de lignes répétées. +C'est rapide et fonctionne sur des fichiers de taille quelconque jusqu'à plusieurs gigaoctets (le tri n'est pas limité par la capacité mémoire bien que vous puissiez avoir besoin d'utiliser l'option `-T` si `/tmp` est sur une petite partition racine). +Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sort` (omise ci-dessous pour plus de clarté). +```sh + cat a b | sort | uniq > c # c est l'union de a et b + cat a b | sort | uniq -d > c # c est l'intersection de a et b + cat a b b | sort | uniq -u > c # c est la difference a - b +``` + +- Utilisez `grep . *` pour rapidement inspecter les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). +Cela peut être utile pour des répertoires remplis de fichiers de configuration comme ceux de `/sys`, `/proc`, `/etc`. + +- Pour ajouter les nombres de la troisième colonne d'un fichier texte (c'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python) : +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- Pour visualiser les tailles et les dates des fichiers d'une arborescence, une sorte de `ls -l` récursive, mais plus facile à lire que `ls -lR` : +```sh + find . -type f -ls +``` + +- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. +Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_id` : +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Pour surveiller en permanence tout changement, utilisez `watch`, par exemple vérifiez les modifications dans les fichiers d'un répertoire avec `watch -d -n 2 'ls -rtlh | tail'` ou surveillez les paramètres de votre réseau tout en dépannant la configuration de votre wifi avec `watch -d -n 2 ifconfig`. + +- Exécutez cette fonction pour afficher aléatoirement une astuce de ce texte (analyse le le code en Markdown et en extrait un élément d'une liste) : +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From ae50019bd92609e19b3669db01e83777e9985d57 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 30 Dec 2015 20:42:59 +0100 Subject: [PATCH 16/35] fr: Translate the section "Basics" --- README-fr.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README-fr.md b/README-fr.md index 290fb57..c054c43 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,42 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Notions de base + +- Apprenez les bases de Bash. +En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. +Les shells alternatives peuvent être intéressants, mais Bash est puissant et toujours disponible (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de serveurs existants). + +- Apprenez à bien utiliser au moins un éditeur en mode texte. +Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer un texte dans un terminal de manière inopinée (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). + +- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` énumère les numéros des sections, par exemple 1 pour les commandes utilisateur, 5 pour les formats de fichier et les conventions et 8 pour tout ce qui concerne l'administration système). +Trouvez les pages de manuel avec `apropos`. +Sachez que certaines commandes ne sont pas des exécutables, mais des commandes internes de Bash et que vous pouvez obtenir de l'aide à leur sujet avec `help` et `help -d`. + +- Apprenez les redirections des entrées et des sorties au moyen de `>` et `<` et les tuyaux à l'aide de `|`. +Sachez que `>` écrase le fichier de sortie et `>>` sert à ajouter. +Renseignez-vous sur stdout et stderr. + +- Apprenez à propos de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous pour en savoir plus sur l'expansion des variables). + +- Familiarisez-vous avec la gestion des processus de Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. + +- Apprenez `ssh` et les principes de l'authentification sans mot de passe à l'aide de `ssh-agent`, `ssh-add`, etc. + +- Les bases de la gestion des fichiers : `ls` et `ls -l` (en particulier, apprenez la signification de chacune des colonnes de `ls -l`), `less`, `head`, `tail` et `tail -f` (ou mieux, `less +F`), `ln` et `ln -s` (apprenez les différences et les avantages des liens durs par rapport aux liens symboliques), `chown`, `chmod`, `du` (pour un rapide résumé de l'espace disque occupé : `du -hs *`). +Pour la gestion du système de fichiers : `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +Apprenez ce qu'est un inode (`ls -i` ou `df -i`). + +- Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. + +- Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. +Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. + +- Apprenez à utiliser `apt-get`, `yum`, `dnf` ou `pacman` (selon la distribution) pour trouver et installer des paquets. +Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). + + ## Traitement des fichiers et des données - Pour localiser un fichier par son nom dans le répertoire courant, `find . -iname '*something*'` (ou autres). From 4ff08bf0a1e447167557a00a35de29911e682df1 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 2 Jan 2016 12:03:02 +0100 Subject: [PATCH 17/35] fr: Translate the section "Everyday use" --- README-fr.md | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/README-fr.md b/README-fr.md index c054c43..2da0a4c 100644 --- a/README-fr.md +++ b/README-fr.md @@ -85,6 +85,134 @@ Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). +## Utilisation quotidienne + +- En Bash, utilisez **Tab** pour compléter les arguments ou lister toutes les commandes disponibles, et **ctrl-r** pour rechercher dans l'historique des commandes (tapez pour rechercher, appuyez sur **ctrl-r** plusieurs fois pour parcourir les différentes correspondances, appuyez sur **Enter** pour exécuter la commande trouvée ou sur la flèche droite pour l'éditer). + +- En Bash, utilisez **ctrl-w** pour effacer le dernier mot et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. +Utilisez **alt-b** et **alt-f** pour se déplacer mot par mot, **ctrl-a** pour déplacer le curseur au début de la ligne, **ctrl-e** pour déplacer le curseur à la fin de la ligne, **ctrl-k** pour effacer depuis le curseur jusqu'à la fin de la ligne, **ctrl-l** pour effacer l'écran. +Voir `man readline` pour la liste des raccourcis clavier par défault de Bash. +Il y en a beaucoup. +Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** développe un glob. + +- Autrement, si vous adorez les raccourcis clavier de vi, utilisez `set -o vi` (et `set -o emacs` pour revenir à l'état initial). + +- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le mode vi) ouvre un éditeur pour éditer la commande courante. + +- Pour voir les commandes récentes, `history`. +Il y a aussi beaucoup abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. + +- Pour revenir au répertoire précédent : `cd -`. + +- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et la saisir comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). +Vous pouvez alors y revenir plus tard à l'aide de la commande history. + +- Utilisez `xargs` (ou `parallel`). +C'est très puissant. +Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que le parallélisme (`-P`). +Si vous n'êtes pas sûr s'il fera les choses correctement, utilisez d'abord `xargs echo`. +`-I{}` est également pratique. +Exemples : +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` fournit un affichage utile des processus sous la forme d'un arbre. + +- `pgrep` et `pkill` pour rechercher ou envoyer un signal à des processus en fonction de leur nom (`-f` est utile). + +- Apprenez les différents signaux que vous pouvez envoyer aux processus. +Par exemple, pour arrêter un processus, utiliser `kill -STOP [pid]`. +Pour la liste complète, consultez `man 7 signal`. + +- Utilisez `nohup` ou `disown` pour qu'un processus en arrière-plan reste actif indéfiniment. + +- Vérifiez quels sont les processus qui écoutent à l'aide de `netstat -lntp` ou `ss -plat` (pour TCP; ajoutez `-u` pour UDP). + +- Regardez `lsof` pour la liste des fichiers et *sockets* ouverts. + +- Voyez `uptime` ou `w` pour savoir depuis combien de temps le système fonctionne. + +- Utilisez `alias` pour créer des raccourcis pour les commandes fréquemment utilisées. +Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. + +- Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. +Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). +Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. +Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (renseignez-vous sur le sujet car ce sujet est un peu délicat). +Pour des scripts plus compliqués, servez-vous également de `trap` pour intercepter EXIT ou ERR. +Une bonne habitude est de commencer un script comme cela, ce qui lui permettra de détecter les erreurs courantes, de s'interrompre et d'afficher un message : +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Dans les scripts Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. +Un exemple typique consiste à se déplacer temporairement dans un autre répertoire de travail, p. ex. +```bash + # faire quelque chose dans le répertoire courant + (cd /some/other/dir && other-command) + # continue dans le répertoire original +``` + +- Remarquez qu'en Bash il y a de nombreux types d'expansion des variables. +Vérifier l'existence d'une variable : `${name:?error message}`. +Par exemple, si un script Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. +L'expansion arithmétique  `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. + +- La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. +Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- Renseignez-vous à propos des « here documents » en Bash, comme dans `cat < logfile 2>&1` ou `some-command &>logfile`. +Souvent, pour s'assurer qu'une commande de laisse pas un descripteur de fichier ouvert sur l'entrée standard, le l'attachant au terminal dans lequel vous vous trouvez, c'est une bonne pratique d'ajouter ` Date: Fri, 15 Jan 2016 09:39:01 +0100 Subject: [PATCH 18/35] fr: Make lots of minor corrections --- README-fr.md | 176 +++++++++++++++++++++++++-------------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/README-fr.md b/README-fr.md index 2da0a4c..1f65f04 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,4 +1,4 @@ -[ Langues: +[ Langues : [English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] @@ -6,7 +6,7 @@ [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -- [Meta](#meta) +- [Méta](#méta) - [Notions de base](#notions-de-base) - [Utilisation quotidienne](#utilisation-quotidienne) - [Traitement des fichiers et des données](#traitement-des-fichiers-et-des-données) @@ -14,7 +14,7 @@ - [Unilignes](#unilignes) - [Obscures mais utiles](#obscures-mais-utiles) - [Uniquement OS X](#uniquement-os-x) -- [Ressources supplémentaires](#ressources-supplémentaires) +- [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) @@ -22,53 +22,53 @@ La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. Ceci est une sélection de notes et d'astuces sur l'utilisation de la ligne de commande que nous avons trouvées utiles en travaillant avec Linux. Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou obscures. -Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui se trouve dans ce document, alors vous saurez beaucoup de choses. +Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui s'y trouve, alors vous saurez beaucoup de choses. -Ce document est le fruit du travail de [nombreux auteurs et de traducteurs](AUTHORS.md). +Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. -Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +Si vous trouvez une erreur ou quelque chose qui pourrait être meilleur, nous vous invitons à remplir un ticket ou à soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#méta) ainsi que les *pull requests* et tickets en cours.) ## Méta Contexte : -- Ce guide est destiné aux utilisateurs débutants et chevronnés. +- Ce guide est destiné aux débutants et aux utilisateurs chevronnés. Les objectifs sont l'*envergure* (tout est important), la *spécificité* (donner des exemples concrets des cas les plus courants) et la *concision* (éviter tout ce qui n'est pas essentiel et les digressions disponibles facilement ailleurs). -Chaque astuce est indispensable dans certaines situations ou fait gagner un temps considérable par rapport aux solutions alternatives. +Chaque astuce est indispensable dans certaines situations ou fait gagner beaucoup de temps par rapport aux solutions alternatives. - Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». -Beaucoup des autres items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). -- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts Bash. -- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation des paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. +Beaucoup d'items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). +- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts en Bash. +- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation de paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. Remarques : -- Afin que tout tienne sur une seule page, le contenu est implicitement inclus par référence. -Vous êtes suffisamment intelligents pour chercher les renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. +- Afin que le guide tienne sur une seule page, du contenu est implicitement inclus par référence. +Vous êtes suffisamment intelligents pour rechercher des renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distribution ou OS) pour installer de nouveaux programmes. -- Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +- Allez sur [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. ## Notions de base - Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. -Les shells alternatives peuvent être intéressants, mais Bash est puissant et toujours disponible (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de serveurs existants). +Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). - Apprenez à bien utiliser au moins un éditeur en mode texte. -Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer un texte dans un terminal de manière inopinée (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). +Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer inopinément un texte dans un terminal (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). -- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` énumère les numéros des sections, par exemple 1 pour les commandes utilisateur, 5 pour les formats de fichier et les conventions et 8 pour tout ce qui concerne l'administration système). +- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` liste les sections avec leur numéro, par exemple 1 pour les commandes « normales » , 5 pour les formats des fichiers et les conventions, et 8 pour tout ce qui concerne l'administration système). Trouvez les pages de manuel avec `apropos`. Sachez que certaines commandes ne sont pas des exécutables, mais des commandes internes de Bash et que vous pouvez obtenir de l'aide à leur sujet avec `help` et `help -d`. -- Apprenez les redirections des entrées et des sorties au moyen de `>` et `<` et les tuyaux à l'aide de `|`. +- Apprenez à rediriger les entrées et sorties au moyen de `>` et `<`, et à créer des tubes avec `|`. Sachez que `>` écrase le fichier de sortie et `>>` sert à ajouter. Renseignez-vous sur stdout et stderr. -- Apprenez à propos de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous pour en savoir plus sur l'expansion des variables). +- Apprenez au sujet de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation, et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous). -- Familiarisez-vous avec la gestion des processus de Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. +- Familiarisez-vous avec la gestion des processus avec Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. - Apprenez `ssh` et les principes de l'authentification sans mot de passe à l'aide de `ssh-agent`, `ssh-add`, etc. @@ -79,39 +79,39 @@ Apprenez ce qu'est un inode (`ls -i` ou `df -i`). - Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. - Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. -Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. +Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` sont bonnes à connaître. - Apprenez à utiliser `apt-get`, `yum`, `dnf` ou `pacman` (selon la distribution) pour trouver et installer des paquets. -Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). +Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous sont plus faciles à installer avec `pip`). ## Utilisation quotidienne - En Bash, utilisez **Tab** pour compléter les arguments ou lister toutes les commandes disponibles, et **ctrl-r** pour rechercher dans l'historique des commandes (tapez pour rechercher, appuyez sur **ctrl-r** plusieurs fois pour parcourir les différentes correspondances, appuyez sur **Enter** pour exécuter la commande trouvée ou sur la flèche droite pour l'éditer). -- En Bash, utilisez **ctrl-w** pour effacer le dernier mot et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. +- En Bash, utilisez **ctrl-w** pour effacer le mot précédent et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. Utilisez **alt-b** et **alt-f** pour se déplacer mot par mot, **ctrl-a** pour déplacer le curseur au début de la ligne, **ctrl-e** pour déplacer le curseur à la fin de la ligne, **ctrl-k** pour effacer depuis le curseur jusqu'à la fin de la ligne, **ctrl-l** pour effacer l'écran. Voir `man readline` pour la liste des raccourcis clavier par défault de Bash. Il y en a beaucoup. Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** développe un glob. -- Autrement, si vous adorez les raccourcis clavier de vi, utilisez `set -o vi` (et `set -o emacs` pour revenir à l'état initial). +- Sinon, si vous adorez les combinaisons de touches dans le style vi, utilisez `set -o vi` (`set -o emacs` pour revenir en arrière). -- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le mode vi) ouvre un éditeur pour éditer la commande courante. +- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le style vi) ouvre l'éditeur pour éditer la commande courante. - Pour voir les commandes récentes, `history`. -Il y a aussi beaucoup abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. +Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. -- Pour revenir au répertoire précédent : `cd -`. +- Pour revenir au répertoire de travail précédent : `cd -`. -- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et la saisir comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). +- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). Vous pouvez alors y revenir plus tard à l'aide de la commande history. - Utilisez `xargs` (ou `parallel`). C'est très puissant. -Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que le parallélisme (`-P`). -Si vous n'êtes pas sûr s'il fera les choses correctement, utilisez d'abord `xargs echo`. -`-I{}` est également pratique. +Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). +Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. +L'option `-I{}` est également pratique. Exemples : ```bash find . -name '*.py' | xargs grep some_function @@ -122,25 +122,25 @@ Exemples : - `pgrep` et `pkill` pour rechercher ou envoyer un signal à des processus en fonction de leur nom (`-f` est utile). -- Apprenez les différents signaux que vous pouvez envoyer aux processus. -Par exemple, pour arrêter un processus, utiliser `kill -STOP [pid]`. +- Connaissez les différents signaux que vous pouvez envoyer aux processus. +Par exemple, pour suspendre l'exécution d'un processus, utilisez `kill -STOP [pid]`. Pour la liste complète, consultez `man 7 signal`. - Utilisez `nohup` ou `disown` pour qu'un processus en arrière-plan reste actif indéfiniment. - Vérifiez quels sont les processus qui écoutent à l'aide de `netstat -lntp` ou `ss -plat` (pour TCP; ajoutez `-u` pour UDP). -- Regardez `lsof` pour la liste des fichiers et *sockets* ouverts. +- Voyez également `lsof` pour la liste des *sockets* et fichiers ouverts. - Voyez `uptime` ou `w` pour savoir depuis combien de temps le système fonctionne. -- Utilisez `alias` pour créer des raccourcis pour les commandes fréquemment utilisées. +- Utilisez `alias` pour créer des raccourcis vers les commandes fréquemment utilisées. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. - Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. -Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (renseignez-vous sur le sujet car ce sujet est un peu délicat). +Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (cependant lisez-en plus si vous l'utilisez car ce sujet est un peu délicat). Pour des scripts plus compliqués, servez-vous également de `trap` pour intercepter EXIT ou ERR. Une bonne habitude est de commencer un script comme cela, ce qui lui permettra de détecter les erreurs courantes, de s'interrompre et d'afficher un message : ```bash @@ -148,8 +148,8 @@ Une bonne habitude est de commencer un script comme cela, ce qui lui permettra d trap "echo 'error: Script failed: see failed command above'" ERR ``` -- Dans les scripts Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. -Un exemple typique consiste à se déplacer temporairement dans un autre répertoire de travail, p. ex. +- Dans les scripts en Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. +Un exemple classique consiste à se déplacer temporairement dans un autre répertoire de travail : ```bash # faire quelque chose dans le répertoire courant (cd /some/other/dir && other-command) @@ -158,8 +158,8 @@ Un exemple typique consiste à se déplacer temporairement dans un autre répert - Remarquez qu'en Bash il y a de nombreux types d'expansion des variables. Vérifier l'existence d'une variable : `${name:?error message}`. -Par exemple, si un script Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. -L'expansion arithmétique  `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. +Par exemple, si un script en Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. +L'expansion arithmétique : `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. - La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : @@ -167,19 +167,19 @@ Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- Renseignez-vous à propos des « here documents » en Bash, comme dans `cat < logfile 2>&1` ou `some-command &>logfile`. -Souvent, pour s'assurer qu'une commande de laisse pas un descripteur de fichier ouvert sur l'entrée standard, le l'attachant au terminal dans lequel vous vous trouvez, c'est une bonne pratique d'ajouter ` bar : @@ -273,21 +273,21 @@ C'est probablement trois fois plus rapide et trois fois plus petit que son équi - Selon sa page de manuel, `rsync` est un outil de duplication de fichiers vraiment rapide et incroyablement polyvalent. Il est connu pour faire de la synchronisation entre machines, mais est également utile pour un usage local. -Il est aussi parmi les outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : +Il est aussi l'un des outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - Utilisez `shuf` pour mélanger ou sélectionner aléatoirement des lignes d'un fichier. -- Connaissez les options de `sort`. -Pour les nombres, utilisez `-n`, ou `-h` pour traiter des nombres dans un format lisible par un humain (p. ex. issus de `du -h`). -Sachez comment les clés fonctionnent (`-t` et `-k`). -En particulier, faites attention à bien écrire `-k1,1` pour trier selon le premier champ uniquement : `-k1` signifie que l'on trie selon la ligne entière. +- Sachez les options de `sort`. +Pour les nombres, utilisez `-n`, ou `-h` s'ils sont dans un format lisible par un humain (p. ex. issus de `du -h`). +Comprenez le fonctionnement des clés (`-t` et `-k`). +En particulier, faites attention à bien écrire `-k1,1` pour trier seulement selon le premier champ : `-k1` signifie que l'on trie selon la ligne entière. Le tri stable (`sort -s`) peut s'avérer utile. Par exemple, pour trier d'abord selon le champ 2, puis selon le champ 1, vous pouvez utiliser `sort -k1,1 | sort -s -k2,2`. -- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez la copier-coller). +- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez le copier-coller). - Les outils habituels pour *patcher* un code source sont `diff` et `patch`. Voir aussi `diffstat` pour un relevé statistique d'un diff et `sdiff` pour un affichage côte à côte d'un diff. @@ -307,7 +307,7 @@ Par exemple, cette commande met en minuscules et retire tous les accents (en les uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` -- Pour découper des fichiers en morceaux, voyez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. +- Pour découper des fichiers en morceaux, regardez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. - Pour manipuler des dates et des heures, utilisez `dateadd`, `datediff`, `strptime`, etc. fournis par [`dateutils`](http://www.fresse.org/dateutils/). @@ -337,20 +337,20 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - Pour déterminer les raisons pour lesquelles un disque est plein, `ncdu` permet de gagner du temps par rapport aux commandes habituelles telles que `du -sh *`. -- Pour trouver quel socket ou processus utilise la bande passante essayez `iftop` ou `nethogs`. +- Pour trouver quel socket ou processus utilise la bande passante, essayez `iftop` ou `nethogs`. - L'outil `ab` (fourni avec Apache) est utile pour une vérification rapide et grossière des performances d'un serveur web. -Pour des tests de charge plus complexes servez-vous de `siege`. +Pour des tests de charge plus complexes, essayez `siege`. - Pour du debogage réseau plus sérieux : `wireshark`, `tshark` ou `ngrep`. -- Connaîssez `strace` et `ltrace`. +- Sachez utiliser `strace` et `ltrace`. Ces commandes peuvent être utiles si un programme fonctionne mal ou plante et que vous n'en connaissez pas la raison, ou si vous voulez vous faire une idée des performances. -Remarquez l'option de profilage (`-c`) et la possibilité de les rattacher à un processus en cours d'exécution (`-p`). +Remarquez l'option de profilage (`-c`) et la possibilité de les attacher à un processus en cours d'exécution (`-p`). -- Connaîssez `ldd` pour afficher les bibliothèques partagées, etc. +- Connaissez `ldd` pour afficher les bibliothèques partagées, etc. -- Sachez comment vous connecter à un processus en cours avec `gdb` et récupérer la trace d'appels. +- Sachez comment vous connecter à un processus en cours d'exécution avec `gdb` et récupérer la trace des appels. - Utilisez `/proc`. C'est parfois incroyablement utile pour résoudre des problèmes en live. Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd`, `/proc/xxx/smaps` (où `xxx` est l'identifiant du processus ou pid). @@ -358,9 +358,9 @@ Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cw - Pour comprendre pourquoi quelque chose a mal tourné antérieurement, `sar` peut-être très utile. Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau, etc. -- Pour une analyse plus approfondie du système et des performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). +- Pour une analyse plus approfondie du système et de ses performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). -- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur l'Unix et le noyau) ou `lsb_release -a` (informations sur la distribution Linux). +- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur la version d'Unix et du noyau) ou `lsb_release -a` (informations sur la distribution Linux). - Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). @@ -369,7 +369,7 @@ Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau Quelques exemples d'assemblages de commandes : -- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence de fichiers texte à l'aide de `sort` et `uniq`. +- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence ensemblistes de fichiers texte à l'aide de `sort` et `uniq`. Supposez que `a` et `b` soient des fichiers texte ne contenant pas de lignes répétées. C'est rapide et fonctionne sur des fichiers de taille quelconque jusqu'à plusieurs gigaoctets (le tri n'est pas limité par la capacité mémoire bien que vous puissiez avoir besoin d'utiliser l'option `-T` si `/tmp` est sur une petite partition racine). Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sort` (omise ci-dessous pour plus de clarté). @@ -379,7 +379,7 @@ Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sor cat a b b | sort | uniq -u > c # c est la difference a - b ``` -- Utilisez `grep . *` pour rapidement inspecter les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). +- Utilisez `grep . *` pour inspecter rapidement les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). Cela peut être utile pour des répertoires remplis de fichiers de configuration comme ceux de `/sys`, `/proc`, `/etc`. - Pour ajouter les nombres de la troisième colonne d'un fichier texte (c'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python) : @@ -400,7 +400,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - Pour surveiller en permanence tout changement, utilisez `watch`, par exemple vérifiez les modifications dans les fichiers d'un répertoire avec `watch -d -n 2 'ls -rtlh | tail'` ou surveillez les paramètres de votre réseau tout en dépannant la configuration de votre wifi avec `watch -d -n 2 ifconfig`. -- Exécutez cette fonction pour afficher aléatoirement une astuce de ce texte (analyse le le code en Markdown et en extrait un élément d'une liste) : +- Exécutez cette fonction pour afficher aléatoirement une astuce de ce guide (analyse le code en Markdown et en extrait un élément d'une des listes) : ```sh function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | @@ -432,7 +432,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `fmt` : formate du texte. -- `pr` : formate un texte en page ou en colonne. +- `pr` : formate un texte en pages ou en colonnes. - `fold` : coupe des lignes de texte. @@ -478,7 +478,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `tac` : affiche des fichiers à l'envers. -- `shuf` : affiche une permutation aléatoire des lignes d'un fichier. +- `shuf` : sélection aléatoire de lignes d'un fichier. - `comm` : compare ligne à ligne deux fichiers triés. @@ -486,7 +486,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `hd`, `hexdump`, `xxd`, `biew` et `bvi` : dump et édition de fichiers binaires. -- `strings` : extraire du texte de fichiers binaires. +- `strings` : extrait du texte de fichiers binaires. - `tr` : conversion et manipulation de caractères. @@ -494,7 +494,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `split` et `csplit` : découpage de fichiers. -- `sponge` : lit l'entrée standart avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, p.ex., `grep -v something some-file | sponge some-file` +- `sponge` : lit entièrement un flux d'entrée avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, par exemple : `grep -v something some-file | sponge some-file` - `units` : conversions d'unités et calculs. Convertit des furlongs par fortnight en twips par blink (voir aussi `/usr/share/units/deifinitions.units`). @@ -504,9 +504,9 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `ldd` : affiche des informations sur les bibliothèques partagées. -- `nm` : affiche les symboles contenus dans un fichier objet. +- `nm` : affiche les symboles des fichiers objets. -- `ab` : mesure les performances de serveurs web +- `ab` : mesure les performances de serveurs web. - `strace`: trace les appels système. @@ -518,7 +518,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `wireshark` et `tshark`: capture de paquets et dépannage réseau. -- `ngrep` : grep pour les couches réseau. +- `ngrep` : grep pour les couches réseaux. - `host` et `dig`: interroge les serveurs DNS. @@ -526,11 +526,11 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `dstat` : statistiques sur les ressources système. -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. -- `iostat` : statistiques sur l'usage des disques. +- `iostat` : statistiques sur l'usage du disque. -- `mpstat` : statistiques sur l'usage des CPUs. +- `mpstat` : statistiques sur l'usage du CPU. - `vmstat` : statistiques sur l'usage de la mémoire. @@ -560,9 +560,9 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. -- `lsmod` et `modinfo` : liste des modules du noyau et informations les concernant. +- `lsmod` et `modinfo` : liste les modules du noyau et donne des informations sur un module. -- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous considérez les locomotives à vapeur et les citations de Jean-Claude Van Damme « utiles ». +- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous estimez que les locomotives à vapeur et les citations de Jean-Claude Van Damme sont « utiles ». ## Uniquement OS X @@ -570,7 +570,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i Ce qui suit ne s'applique *qu'*à Mac OS. - Gestion des paquets avec `brew` (Homebrew) ou `port` (MacPorts). -Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessous. +Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessus. - Copier la sortie de n'importe quelle commande dans une application de bureau avec `pbcopy` et coller l'entrée d'une commande avec `pbpaste`. @@ -585,7 +585,7 @@ Vous pouvez souvent faire la distinction grâce à l'en-tête « BSD General Com Dans certains cas, les versions GNU peuvent également être installées (telles que `gawk` et `gsed` pour GNU awk et GNU sed). Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles commandes (par exemple, envisagez d'utiliser Python ou Perl) ou alors testez-les soigneusement. -- Pour obtenir des informations sur la version de Mac OS, servez-vous de `sw_vers`. +- Pour obtenir des informations sur la version de Mac OS, utilisez `sw_vers`. ## Autres ressources @@ -599,8 +599,8 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com ## Avertissement -Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. -Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie nécessairement que vous devriez le faire ! ;) +À l'exception des très petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. +Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie pas nécessairement que vous devriez le faire ! ;) ## Licence From 85fa91f43e63424503a4f5dba6d823f7a13cbfee Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 15 Jan 2016 10:00:52 +0100 Subject: [PATCH 19/35] fr: Translate a last item --- README-fr.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-fr.md b/README-fr.md index 1f65f04..eae96dd 100644 --- a/README-fr.md +++ b/README-fr.md @@ -161,6 +161,9 @@ Vérifier l'existence d'une variable : `${name:?error message}`. Par exemple, si un script en Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. L'expansion arithmétique : `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. +- L'expansion des accolades avec `{`...`}` évite de retaper des textes similaires et automatise les combinaisons d'éléments de listes. +C'est utile dans des exemples comme `mv foo.{txt,pdf} some-dir` (qui déplace les deux fichiers), `cp somefile{,.bak}` (équivalent à `cp somefile somefile.bak`) ou `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (qui engendre toutes les combinaisons possibles et crée une arborescence de répertoires). + - La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : ```sh From c2db142a71839deb40eeef5ef2c177db5ebce980 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 15 Jan 2016 11:29:35 +0100 Subject: [PATCH 20/35] fr: Synchronize the translation --- README-fr.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README-fr.md b/README-fr.md index eae96dd..54f7948 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,6 +1,6 @@ -[ Langues : -[English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + # L'art de la ligne de commande @@ -17,6 +17,7 @@ - [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) + ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. @@ -25,8 +26,8 @@ Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou ob Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui s'y trouve, alors vous saurez beaucoup de choses. Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). -Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. -Si vous trouvez une erreur ou quelque chose qui pourrait être meilleur, nous vous invitons à remplir un ticket ou à soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#méta) ainsi que les *pull requests* et tickets en cours.) +Une partie de celui-ci a été [initialement](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [publiée](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais il se trouve maintenant sur GitHub, où des personnes plus compétentes que l'auteur originel ont apporté de nombreuses améliorations. +[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être meilleur ! ## Méta From 538e29d94e39de8bebbe63d40b1cf534cf9f8fd1 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 17 Jan 2016 03:11:15 +0100 Subject: [PATCH 21/35] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a920b7..87c9d5d 100644 --- a/README.md +++ b/README.md @@ -477,7 +477,7 @@ A few examples of piecing together commands: - `lsb_release`: Linux distribution info -- `lsblk`: list block devices: a tree view of your disks and disk paritions +- `lsblk`: list block devices: a tree view of your disks and disk partitions - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: hardware information, including CPU, BIOS, RAID, graphics, devices, etc. From 766f20e95633087e0dba9dce78fb5e8879158971 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 17 Jan 2016 07:10:57 +0100 Subject: [PATCH 22/35] sl: Update translation --- README-sl.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-sl.md b/README-sl.md index 4db5000..08830a2 100644 --- a/README-sl.md +++ b/README-sl.md @@ -35,7 +35,7 @@ vendar se je premaknilo na GitHub, kjer so ljudje bolj talentirani od prvotnega Obseg: - Ta vodič je tako za začetnike kot za poznavalce. Cilji so *širina* (vse pomembno), *specifičnost* (podaja konkretne primere najpogostejših primerov uporabe) in *kratkost* (izogiba se stvarem, ki niso bistvene ali se odmikajo, kar lahko enostavno pogledate drugje). Vsak nasvet je bistven v določeni situaciji ali bistveno prihrani čas pred alternativami. -- To je napisano za Linux z izjemo sekcije "[Samo za OS X](#samo-za-os-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali MacOS (ali celo Cygwin). +- To je napisano za Linux z izjemo sekcije "[Samo za OS X](#samo-za-os-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali OS X (ali celo Cygwin). - Poudarek je na interaktivnosti Bash-a, čeprav mnogo nasvetov velja za ostale lupine in splošno skriptanje Bash-a. - Vključuje tako "standardne" ukaze Unix-a kot tudi tiste, ki zahtevajo namestitev posebnih paketov -- dokler so dovolj pomembni, da zaslužijo vključitev. @@ -488,27 +488,27 @@ Nekaj primerov sestavljanja ukazov skupaj: ## Samo za OS X -To so elementi pomembni *samo* za MacOS. +To so elementi pomembni *samo* za OS X. -- Upravljanje paketov z `brew` (Homebrew) in/ali `port` (MacPorts). Te so lahko uporabljeni za namestitev mnogih zgornjih ukazov na MacOS. +- Upravljanje paketov z `brew` (Homebrew) in/ali `port` (MacPorts). Te so lahko uporabljeni za namestitev mnogih zgornjih ukazov na OS X. - Kopirajte izpis katerega koli ukaza na namizno aplikacijo s `pbcopy` in prilepite vnos iz ene s `pbpaste`. -- Da omogočite uporabo topke Option v Mac OS Terminalu kot tipka alt (kot je uporabljena v ukazih zgoraj kot **alt-b**, **alt-f** itd), odprite Preferences -> Profiles -> Keyboard in izberite "Use Option as Meta key". +- Da omogočite uporabo topke Option v OS X Terminalu kot tipka alt (kot je uporabljena v ukazih zgoraj kot **alt-b**, **alt-f** itd), odprite Preferences -> Profiles -> Keyboard in izberite "Use Option as Meta key". - Da odprete datoteko z namizno aplikacijo, uporabite `open` ali `open -a /Applications/Whatever.app`. - Spotlight: Poiščite datoteke z `mdfind` in izpišite meta podatke (kot so EXIF informacije fotografije) z `mdls`. -- Bodite pozorni, saj je MacOS osnovan na BSD Unix in mnogi ukazi (na primer `ps`, `ls`, `tail`, `awk`, `sed`) imajo mnoge subtilne različice iz Linux-a, na katerega je večinoma vplival System V-style Unix in GNU tools. Pogostokrat lahko poveste razliko tako, da opazite, da ima stran man naslov "BSD General Commands Manual." V nekaterih primerih se lahko namestijo tudi GNU različice (kot so `gawk` in `gsed` za GNU awk in sed). Če pišete skripte Bash za vse platforme, se izogibajte takim ukazom (na primer, z upoštevanjem Python ali `perl`) ali pazljivo testirajte. +- Bodite pozorni, saj je OS X osnovan na BSD Unix in mnogi ukazi (na primer `ps`, `ls`, `tail`, `awk`, `sed`) imajo mnoge subtilne različice iz Linux-a, na katerega je večinoma vplival System V-style Unix in GNU tools. Pogostokrat lahko poveste razliko tako, da opazite, da ima stran man naslov "BSD General Commands Manual." V nekaterih primerih se lahko namestijo tudi GNU različice (kot so `gawk` in `gsed` za GNU awk in sed). Če pišete skripte Bash za vse platforme, se izogibajte takim ukazom (na primer, z upoštevanjem Python ali `perl`) ali pazljivo testirajte. -- Da dobite informacije o izdaji MacOS, uporabite `sw_vers`. +- Da dobite informacije o izdaji OS X, uporabite `sw_vers`. ## Več virov - [awesome-shell](https://github.com/alebcay/awesome-shell): urejan seznam orodij lupine in virov. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Bolj poglobljen vodič za Mac OS ukazno vrstico. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Bolj poglobljen vodič za OS X ukazno vrstico. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) za pisanje boljših skript lupine. - [shellcheck](https://github.com/koalaman/shellcheck): lupinska skripta orodja statične analize. V osnovi, lint za bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Na žalost kompleksne podrobnosti, kako pravilno ravnati z imeni datotek v lupinskih skriptah. From ab4e476cbb92101c59f4132149c75bb609cc3ff8 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Mon, 18 Jan 2016 09:56:42 +0200 Subject: [PATCH 23/35] es: apply OS X patch. --- README-es.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-es.md b/README-es.md index 70f801c..868ddb4 100644 --- a/README-es.md +++ b/README-es.md @@ -36,7 +36,7 @@ pero se ha movido desde entonces a Github, donde personas más talentosas que el Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o OS X (o incluso Cygwin). - Se enfoca en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y al Bash scripting por lo general. - Incluye tanto comandos "estándar" Unix, así como aquellos que requieren la instalación especial de un paquete -- siempre que sea suficientemente importante para ameritar su inclusión. @@ -488,26 +488,26 @@ Algunos ejemplos de comandos reunidos: ## Solo para OS X -Estos son puntos relevantes *únicamente* para MacOS. +Estos son puntos relevantes *únicamente* para OS X. -- Administración de paquetes con `brew` (Homebrew) y/o `port` (MacPorts). Estos pueden ser utilizados para instalar en MacOS muchos de los comandos de arriba. +- Administración de paquetes con `brew` (Homebrew) y/o `port` (MacPorts). Estos pueden ser utilizados para instalar en OS X muchos de los comandos de arriba. - Copie la salida de cualquier comando en una aplicación de escritorio con `pbcopy` y pegue una entrada con `pbpaste`. -- Para activar la teacla Option en un Terminal Mac OS Terminal como una tecla alt (tal como se usan en los comandos más arriba como **alt-b**, **alt-f**, etc.), abre Preferencias -> Perfiles -> Teclado y selecciona "Usa Option como tecla Meta". +- Para activar la teacla Option en un OS X Terminal como una tecla alt (tal como se usan en los comandos más arriba como **alt-b**, **alt-f**, etc.), abre Preferencias -> Perfiles -> Teclado y selecciona "Usa Option como tecla Meta". - Para abrir un archivo con una aplicación de escritorio, use `open` o `open -a /Applications/Whatever.app`. - Spotlight: Busque archivos con `mdfind` y liste metadata (tal como información de foto EXIF) con `mdls`. -- Ten en cuenta que MacOS está basado en BSD Unix, y muchos comandos (por ejemplo `ps`, `ls`, `tail`, `awk`, `sed`) tiene sutiles variaciones en comparación con Linux, que está en gran parte influenciado por el sistema Unix V-style y herramientas GNU. Comunmente se puede diferenciar al notar que una página man tienen el encabezado "BSD General Commands Manual." En algunos casos versiones GNU pueden ser instaladas también (tales como `gawk` y `gsed` para GNU awk y sed). Si escribe Bash scripts multiplataforma, evite tales comandos (por ejemplo, considere Python o `perl`) o prueba cuidadosamente. +- Ten en cuenta que OS X está basado en BSD Unix, y muchos comandos (por ejemplo `ps`, `ls`, `tail`, `awk`, `sed`) tiene sutiles variaciones en comparación con Linux, que está en gran parte influenciado por el sistema Unix V-style y herramientas GNU. Comunmente se puede diferenciar al notar que una página man tienen el encabezado "BSD General Commands Manual." En algunos casos versiones GNU pueden ser instaladas también (tales como `gawk` y `gsed` para GNU awk y sed). Si escribe Bash scripts multiplataforma, evite tales comandos (por ejemplo, considere Python o `perl`) o prueba cuidadosamente. -- Para obtener la información de la versión del MacOS, usa `sw_vers`. +- Para obtener la información de la versión del OS X, usa `sw_vers`. ## Más recursos - [awesome-shell](https://github.com/alebcay/awesome-shell): Una lista curada de herramientas shell y recursos. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Una guía más detallada para la línea de comandos del Mac OS. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Una guía más detallada para la línea de comandos del OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) para escribir mejores script shell. - [shellcheck](https://github.com/koalaman/shellcheck): Una herramienta de análisis estadístico del script shell. Esencialmente, lint para bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Las menudencias tristemente complejas sobre cómo manejar nombres de archivos correctamente en shell scripts. From 67ba26064d22416ee7d231a11204c9b39242e009 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 18 Jan 2016 09:05:24 +0100 Subject: [PATCH 24/35] fr: Make some improvements --- README-fr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-fr.md b/README-fr.md index 54f7948..38f5a26 100644 --- a/README-fr.md +++ b/README-fr.md @@ -560,7 +560,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `lsb_release` : informations sur la distribution Linux. -- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et partitions). +- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et de leurs partitions). - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. @@ -594,8 +594,8 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com ## Autres ressources -- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): un guide plus approfondi sur la ligne de commande pour Mac OS. +- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et de ressources pour le shell. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line) : un guide plus approfondi sur la ligne de commande pour Mac OS. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) : pour écrire de meilleurs scripts shell. - [shellcheck](https://github.com/koalaman/shellcheck) : un outil d'analyse statique des scripts shell. L'équivalent de lint pour bash, sh et zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html) : les points de détail, malheureusement compliqués, sur la manière de manipuler correctement les noms de fichiers dans les scripts shell. From 3b97f45dcff32e80ee572a128da549f5c5d4fc4c Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 11:01:43 -0800 Subject: [PATCH 25/35] fr language links. Follow up on #344. --- README-cs.md | 3 +-- README-es.md | 5 ++--- README-fr.md | 11 +++++------ README-it.md | 3 +-- README-ja.md | 3 +-- README-ko.md | 3 +-- README-pt.md | 3 +-- README-ru.md | 3 +-- README-sl.md | 3 +-- README-uk.md | 3 +-- README-zh.md | 3 +-- README.md | 2 +- 12 files changed, 17 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 9674dd3..a8e3aa9 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index 868ddb4..08af60b 100644 --- a/README-es.md +++ b/README-es.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # El Arte del Terminal @@ -27,7 +26,7 @@ Parte de esta: [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. +pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. [**Por favor contribuye**](/CONTRIBUTING.md) Si ves un error o algo que podría ser mejor! diff --git a/README-fr.md b/README-fr.md index 38f5a26..dff9889 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,7 +1,6 @@ 🌍 *[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - # L'art de la ligne de commande [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -52,7 +51,7 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib ## Notions de base -- Apprenez les bases de Bash. +- Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). @@ -108,7 +107,7 @@ Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` - Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). Vous pouvez alors y revenir plus tard à l'aide de la commande history. -- Utilisez `xargs` (ou `parallel`). +- Utilisez `xargs` (ou `parallel`). C'est très puissant. Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. @@ -328,7 +327,7 @@ Utilisez `iostat -mxz 15` pour des statistiques de base concernant le CPU, des s - Pour des informations sur les connexions réseaux, utilisez `netstat` et `ss`. -- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. +- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. Pour un aperçu plus étendu et détaillé, utilisez [`glances`](https://github.com/nicolargo/glances). - Pour connaître l'état de la mémoire, exécutez `free` et `vmstat` et comprenez leurs sorties. @@ -396,7 +395,7 @@ Cela peut être utile pour des répertoires remplis de fichiers de configuration find . -type f -ls ``` -- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. +- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_id` : ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn @@ -530,7 +529,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `dstat` : statistiques sur les ressources système. -- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. +- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. - `iostat` : statistiques sur l'usage du disque. diff --git a/README-it.md b/README-it.md index be9a9d6..742d5ff 100644 --- a/README-it.md +++ b/README-it.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 6ab6215..80d6be8 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 02f9ed0..10b41c7 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 1d95b0b..1565c29 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 47d7193..7f5077a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 08830a2..2a9bc09 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 1eeabce..d7738f4 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index c529b19..90d2acb 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # 命令行的艺术 diff --git a/README.md b/README.md index c62dd30..87b28cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line From b1c5c32c538e3a56d9ae24c55b83bde7e224edbc Mon Sep 17 00:00:00 2001 From: Uggla Date: Tue, 19 Jan 2016 20:08:49 +0100 Subject: [PATCH 26/35] Add instructions to manage filenames with whitespaces --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c62dd30..d0eda11 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,9 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` +- Use null character delimiter to manage filenames with whitespaces, example `locate -0 patern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. + To iterate on filenames containing whitespaces in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. + - `pstree -p` is a helpful display of the process tree. - Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). From 865e9d7ca9f7b30c27202cdd4cc0c29a014ee78e Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 19:20:51 -0800 Subject: [PATCH 27/35] Update roles and authors file. Add maintainers and translators for French. Fix two missing contributors that GitHub was omitting in API. --- AUTHORS.md | 16 ++++++++++------ admin/authors-info.yml | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 6f16f39..d0b473e 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -9,13 +9,13 @@ Contributors are listed in alphabetical order by GitHub login. * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) * [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) -* [Guo Chong (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ +* [Chong Guo (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ * [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) * [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[13+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) * [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) * [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) @@ -30,8 +30,10 @@ Contributors are listed in alphabetical order by GitHub login. * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) * [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _francescomalatesta_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) @@ -40,9 +42,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) * [Hyojin Kwak (hyojin)](https://github.com/hyojin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hyojin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahyojin) * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) -* [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) +* [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [116+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [124+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[22+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -60,18 +62,20 @@ Contributors are listed in alphabetical order by GitHub login. * [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera) * [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) * [Crisoforo Gaspar Hernández (mitogh)](https://github.com/mitogh) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mitogh)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amitogh) +* [miuc (miuc)](https://github.com/miuc) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=miuc)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amiuc) * [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) * [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translator and maintainer (pt)_ * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [30+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[21+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [34+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) * [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) +* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _rverchere_ * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) @@ -83,7 +87,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) * [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) -* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) +* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [Sungjin Kang (ujuc)](https://github.com/ujuc) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc) — _translator (ko)_ * [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translator and maintainer (ko)_ * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 0ca75fe..889b2e3 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -43,3 +43,5 @@ roles: stepan0904: translator and maintainer (uk) francescomalatesta: translator and maintainer (it) lsrom: translator and maintainer (cs) + ericguirbal: translator and maintainer (fr) + rverchere: translator (fr) From a86a78c0e1ca6734c0938f6b7af21115f51ea2fa Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 19:29:53 -0800 Subject: [PATCH 28/35] One more fix to authors. #352. --- AUTHORS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index d0b473e..386f711 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,7 +33,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) -* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _francescomalatesta_ +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) @@ -44,7 +44,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [124+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[22+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [125+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -75,7 +75,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) -* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _rverchere_ +* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _translator (fr)_ * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) From b1133546f80dc897e80f5ceea7a9c6969d7f8b0b Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 20 Jan 2016 08:46:34 +0100 Subject: [PATCH 29/35] fr: Make some improvements Thanks to an anonymous contributor. --- README-fr.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-fr.md b/README-fr.md index dff9889..e25d329 100644 --- a/README-fr.md +++ b/README-fr.md @@ -26,7 +26,7 @@ Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). Une partie de celui-ci a été [initialement](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [publiée](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais il se trouve maintenant sur GitHub, où des personnes plus compétentes que l'auteur originel ont apporté de nombreuses améliorations. -[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être meilleur ! +[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être amélioré ! ## Méta @@ -53,7 +53,7 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. -Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). +Les shells alternatifs peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). - Apprenez à bien utiliser au moins un éditeur en mode texte. Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer inopinément un texte dans un terminal (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). @@ -110,7 +110,7 @@ Vous pouvez alors y revenir plus tard à l'aide de la commande history. - Utilisez `xargs` (ou `parallel`). C'est très puissant. Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). -Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. +Si vous n'êtes pas sûr d'avoir fait ce qu'il faut, utilisez d'abord `xargs echo`. L'option `-I{}` est également pratique. Exemples : ```bash @@ -199,7 +199,7 @@ Une alternative plus légère pour la persistance des sessions seulement est `dt - Envisagez [`mosh`](https://mosh.mit.edu/) comme une alternative à ssh qui utilise UDP, évitant ainsi les pertes de connexion et ajoutant du confort en situation de mobilité (exige une installation côté serveur). -- Pour obtenir les permissions d'un fichier en octal, utile pour configurer le système mais non fournit pas `ls`, utilisez quelque chose comme +- Pour obtenir les permissions d'un fichier en octal, utile pour configurer le système mais non fournit par `ls`, utilisez quelque chose comme ```sh stat -c '%A %a %n' /etc/timezone ``` From 0f2e1386e486004ba0334e090e303773c1f896c9 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Wed, 20 Jan 2016 09:14:55 +0000 Subject: [PATCH 30/35] Fixed las opciones, las pipes, rephrased en Google --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index fdb1a90..f558eba 100644 --- a/README-es.md +++ b/README-es.md @@ -42,7 +42,7 @@ Alcance: Notas: --- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. - Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. From c73ddc08e64ab60c87580d6cb6077c585493f2cc Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 21 Jan 2016 09:20:42 -0800 Subject: [PATCH 31/35] Clarify language tags. Re #349 --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 11d003d..fe1772a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,7 +42,7 @@ Translations to new languages are always welcome, especially if you can maintain - Check existing issues to see if a translation is in progress or stalled. If so, offer to help. - If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. -- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the language code. Use standard [IETF language tags](https://www.w3.org/International/articles/language-tags/), i.e. the same as is used by Wikipedia, *not* the code for a single country. These are usually just the two-letter lowercase code, for example, `fr` for French and `uk` for Ukrainian (not `ua`, which is for the country). For langauges that have variations, use the shortest tag, such as `zh-Hant`. - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - Add links to your translation at the top of every README*.md file. (For consistency, the link should be added in alphabetical order by ISO code, and the anchor text should be in the native language.) - When done, indicate on the PR that it's ready to be merged into the main repo. From 80d1bc91c6dd85b768a060995d3e0b0c64d5c111 Mon Sep 17 00:00:00 2001 From: Uggla Date: Fri, 22 Jan 2016 14:45:13 +0100 Subject: [PATCH 32/35] Update according to @jlevy suggestion into #350 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index d0eda11..81e2443 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,7 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` -- Use null character delimiter to manage filenames with whitespaces, example `locate -0 patern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. - To iterate on filenames containing whitespaces in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. +- Prefer the `-0` or `-print0` options to enable null characters to delimit filenames. This better supports filenames with whitespace.Example : `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. Always surround your bash variables with `"`. - `pstree -p` is a helpful display of the process tree. From d91728e4a0307c28093cd8eb528d720a94bb638c Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 22 Jan 2016 13:25:15 -0800 Subject: [PATCH 33/35] Follow up on #350. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fe04c78..c50a61e 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,6 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` -- Prefer the `-0` or `-print0` options to enable null characters to delimit filenames. This better supports filenames with whitespace.Example : `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. Always surround your bash variables with `"`. - `pstree -p` is a helpful display of the process tree. @@ -111,6 +110,8 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. +- Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. + - In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use `set -e` to abort on errors (nonzero exit code). Use `set -u` to detect unset variable usages. Consider `set -o pipefail` too, to on errors within pipes, too (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message: ```bash set -euo pipefail From 9be5e624f403b11b7aa3667695dc9b425c6cdccf Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 23 Jan 2016 03:18:56 +0100 Subject: [PATCH 34/35] fr: Update the translation --- README-fr.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README-fr.md b/README-fr.md index e25d329..54c1316 100644 --- a/README-fr.md +++ b/README-fr.md @@ -137,6 +137,11 @@ Pour la liste complète, consultez `man 7 signal`. - Utilisez `alias` pour créer des raccourcis vers les commandes fréquemment utilisées. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. +- Comprennez qu'il convient d'être prudent lorsque des variables et des noms de fichiers contiennent des espaces. +Mettez vos variables entre guillemets, par exemple `"$FOO"`. +Préférez les options `-0` ou `-print0` qui permettent de délimiter les noms des fichiers avec le caractère nul, par exemple `locate -0 pattern | xargs -0 ls -al` ou `find / -print0 -type d | xargs -0 ls -al`. +Pour itérer sur des noms de fichiers contenant des espaces dans une boucle for, positionnez la variable IFS avec le caractère de retour à la ligne à l'aide de `IFS=$'\n'`. + - Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. From c2d211f489fd87a8c671d6659510d287b3b2bfa5 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 23 Jan 2016 03:27:39 +0100 Subject: [PATCH 35/35] sl: sync translation --- README-sl.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README-sl.md b/README-sl.md index 2a9bc09..b0bf041 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,7 @@ 🌍 *[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + # Umetnost ukazne vrstice [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -92,6 +93,7 @@ Opombe: cat hosts | xargs -I{} ssh root@{} hostname ``` + - `pstree -p` je priročen prikaz drevesa procesov. - Uporabite `pgrep` in `pkill`, da najdete ali signalizirate procese po imenu (`-f` je v pomoč). @@ -108,6 +110,8 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. +- Razumite, da je potrebna skrb, ko spremenljivke in imena datotek vsebujejo prazne znake. Obdajte vaše spremenljivke Bash s citati, npr. `"$FOO"`. Raje cenite opciji `-0` ali `-print0`, da omogočite razmejevanje imen datotek z ničelnimi znaki, npr. `locate -0 pattern | xargs -0 ls -al` ali `find / -print0 -type d | xargs -0 ls -al`. Za iteracijo v for zanki na imenih datotek, ki vsebujejo prazne znake, nastavite da vaš IFS za nove vrstice uporablja samo `IFS=$'\n'`. + - V skriptah Bash uporabite `set -x` (ali varianto `set -v`, ki beleži dnevnik surovega izpisa, vključno z nerazširjenimi spremenljivkami in komentarji) za razhroščevanje izpisa. Uporabite striktni način razen, če imate dober razlog, da ga ne: Uporabite `set -e`, da preskočite napake (neničelna koda izhoda). Uporabite `set -u`, da zaznate uporabo nenastavljenih spremenljivk. Premislite tudi o `set -o pipefail`, da na napakah znotraj pip, (vendar preberite o tem več, če boste to uporabili, saj je ta tema nekoliko subtilna). Za bolj vključene skripte, uporabite tudi `trap` pri EXIT ali ERR. Uporabna navada je tako začeti skripto, kar bo naredilo, da lahko zazna ali prekliče na pogostih napakah in izpiše sporočilo: ```bash set -euo pipefail