From 2c5dd75eb709590df755a0760c4c901c4011c085 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Sat, 2 Jan 2016 14:12:08 +0000 Subject: [PATCH 001/104] 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 002/104] 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 003/104] 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 004/104] 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 005/104] 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 006/104] 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 007/104] 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 008/104] 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 009/104] 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 010/104] 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 011/104] 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 012/104] 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 013/104] 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 014/104] 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 015/104] 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 016/104] 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 017/104] 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 018/104] 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 019/104] 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 020/104] 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 021/104] 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 022/104] 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 67ba26064d22416ee7d231a11204c9b39242e009 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 18 Jan 2016 09:05:24 +0100 Subject: [PATCH 023/104] 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 024/104] 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 025/104] 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 026/104] 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 027/104] 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 028/104] 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 029/104] 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 030/104] 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 031/104] 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 032/104] 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 033/104] 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 034/104] 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 From 6ecaf462a853f0b790e99962f941778860c715a7 Mon Sep 17 00:00:00 2001 From: kevingo Date: Wed, 20 Jan 2016 18:15:44 +0800 Subject: [PATCH 035/104] Translate to Traditional Chinese --- README-cs.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 517 ++++++++++++++++++++++++++++++++++++++++++++++ README-zh.md | 2 +- README.md | 2 +- 12 files changed, 528 insertions(+), 11 deletions(-) create mode 100644 README-zh-Hant.md diff --git a/README-cs.md b/README-cs.md index 9674dd3..5e62dae 100644 --- a/README-cs.md +++ b/README-cs.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index 70f801c..90eef88 100644 --- a/README-es.md +++ b/README-es.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-it.md b/README-it.md index be9a9d6..4c9fa37 100644 --- a/README-it.md +++ b/README-it.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 6ab6215..de57166 100644 --- a/README-ja.md +++ b/README-ja.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.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..fa38bcc 100644 --- a/README-ko.md +++ b/README-ko.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 1d95b0b..57139f4 100644 --- a/README-pt.md +++ b/README-pt.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 47d7193..40436dc 100644 --- a/README-ru.md +++ b/README-ru.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 4db5000..0482601 100644 --- a/README-sl.md +++ b/README-sl.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 1eeabce..a8bb034 100644 --- a/README-uk.md +++ b/README-uk.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md new file mode 100644 index 0000000..5dec030 --- /dev/null +++ b/README-zh-Hant.md @@ -0,0 +1,517 @@ +🌍 +*[Č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) ∙ [繁體中文](README-zh-Hant.md)* + + +# 命令列的藝術 + +[![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) + +- [必讀](#必讀) +- [基礎](#基礎) +- [日常使用](#日常使用) +- [檔案及資料處理](#檔案及資料處理) +- [系統偵錯](#系統偵錯) +- [單行指令碼](#單行指令碼) +- [冷門但有用](#冷門但有用) +- [僅限 OS X 系統](#僅限-os-x-系統) +- [更多資源](#更多資源) +- [免責聲明](#免責聲明) +- [授權條款](#授權條款) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +熟練使用命令列是一種常常被忽視,或被認為難以掌握的技能,但實際上,它會提高你作為工程師的靈活性以及生產力。本文是一份我在 Linux 上工作時,發現的一些命令列使用技巧的摘要。有些技巧非常基礎,而另一些則相當複雜,甚至晦澀難懂。這篇文章並不長,但當你能夠熟練掌握這裡列出的所有技巧時,你就學會了很多關於命令列的東西了。 + +這篇文章是[許多作者和譯者](AUTHORS.md)共同的成果。這裡的大部分內容 +[首次](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[出現](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +於 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know),但考慮到這裡的人們都具有學習的天賦且樂於接受別人的建議,使用 Github 來做這件事是更佳的選擇。如果你在本文中發現了錯誤或者​​存在可以改善的地方,請果斷提交 Issue 或 Pull Request! (當然在提交前請看一下必讀節和已有的 PR/issue)。 + + +## 必讀 + +涵蓋範圍: + +- 這篇文章對剛接觸命令列的新手以及具有命令列使用經驗的人都有用處。本文致力於做到*覆蓋面廣*(盡量包括一切重要的內容),*具體*(給出最常見的具體的例子)以及*簡潔*(避免不必要的,或是可以在其他地方輕鬆查到的細枝末節)。每個技巧都是在特定情境下必備的,或是能顯著減省時間的。 +- 本文為 Linux 所寫,除​​了 [僅限OS X 系統](#僅限-os-x-系統) 章節外,其它章節中的大部分內容都適用於其它 Unix 系統或 MacOS 系統,甚至 Cygwin。 +- 本文關注於互動式 Bash,儘管很多技巧也適用於其他 shell 或 Bash 指令碼。 +- 本文包括了“標準的” Unix 命令和需要安裝特定套件的命令,只要它們足夠重要。 + +注意事項: + +- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合適的包管理器)來安裝新程式。 +- 使用 [Explainshell](http://explainshell.com/) 去獲取相關命令、參數、管道等解釋。 + + +## 基礎 + +- 學習 Bash 的基礎知識。具體來說,輸入`man bash` 並至少全文瀏覽一遍; 它很簡單並且不長。其他的 shell 可能很好用,但 Bash 功能強大且幾乎所有情況下都是可用的( *只*學習 zsh,fish 或其他的 shell 的話,在你自己的電腦上會顯得很方便,但在很多情況下會限制你,比如當你需要在伺服器上工作時)。 + +- 學習並掌握至少一個基於文字的編輯器。通常 Vim (`vi`) 會是你最好的選擇,因為在終端裡進行隨機編輯 Vim 真的毫無敵手,哪怕是Emacs、某大型IDE 甚至時下非常流行的編輯器。 + +- 學會如何使用`man` 命令去閱讀文件。學會使用 `apropos` 去查詢文件。瞭解有些命令是不可執行,而是Bash內建的,可以使用`help` 和`help -d` 命令獲取幫助資訊。 + +- 學會使用`>` 和`<` 來重定向輸出和輸入,學會使用`|` 來重定向管道。明白`>` 會覆蓋了輸出文件而`>>` 是在檔案末新增。瞭解標準輸出 stdout 和標準錯誤 stderr。 + +- 學會使用通配符`*` (或許再算上`?` 和`[`...`]`) 和引用以及引用中`'` 和`"` 的區別。 + +- 熟悉 Bash 任務管理工具:`&`,**ctrl-z**,**ctrl-c**,`jobs`,`fg`,`bg`,`kill` 等。 + +- 瞭解`ssh`,以及學會通過使用`ssh-agent`,`ssh-add` 等命令來實現基本的無密碼認證。 + +- 學會基本的檔案管理:`ls` 和`ls -l` (瞭解`ls -l` 中每一列代表的意義),`less`,`head`,`tail` 和`tail -f` (甚至`less +F`),`ln` 和`ln -s` (瞭解硬連結與軟連結的區別),`chown`,`chmod`,`du` (硬碟使用情況概述:`du -hs *` )。關於檔案系統的管理,學習`df`,`mount`,`fdisk`,`mkfs`,`lsblk`。知道 inode 是什麼(與`ls -i` 和`df -i` 等命令相關)。 + +- 學習基本的網路管理:`ip` 或`ifconfig`,`dig`。 + +- 熟悉正規表示式,以及`grep`/`egrep` 裡不同參數的作用,例如`-i`,`-o`,`-v`,`-A`,`-B` 和`-C` ,這些參數是值得學習並掌握的。 + +- 學會使用`apt-get`,`yum`,`dnf` 或`pacman` (取決於你使用的 Linux 發行版)來查詢或安裝軟體包。並確保你的環境中有`pip` 來安裝基於 Python 的命令列工具(接下來提到的部分程式使用`pip` 來安裝會很方便)。 + + +## 日常使用 + +- 在 Bash 中,可以使用 **Tab** 自動補全參數,使用 **ctrl-r** 搜尋命令列歷史(在按下之後,鍵入便可以搜尋,重複按下**ctrl-r**會在更多匹配中迴圈,按下 **Enter** 會執行找到的命令,按下右方向鍵會將結果放入當前行中,使你可以進行編輯)。 + +- 在 Bash 中,可以使用 **ctrl-w** 刪除你鍵入的最後一個單詞,使用 **ctrl-u** 刪除整行,使用 **alt-b** 和 **alt-f**以單詞為單位移動游標,​​使用 **ctrl-a** 將游標移至行首,使用 **ctrl-e** 將游標移至行尾,使用 **ctrl-k** 刪除游標至行尾的所有內容,使用 **ctrl-l** 清屏。鍵入`man readline` 檢視Bash 中的預設快捷鍵,內容很多。例如 **alt-.** 迴圈地移向前一個參數,以及 **alt-*** 展開通配符。 + +- 你喜歡的話,可以鍵入`set -o vi` 來使用vi 風格的快捷鍵,而`set -o emacs` 可以把它改回來。 + +- 為了方便地鍵入長命令,在設定你的編輯器後(例如`export EDITOR=vim`),鍵入 **ctrl-x** **ctrl-e** 會開啟一個編輯器來編輯當前命令。在 vi 模式下則鍵入 **escape-v** 實現相同的功能。 + +- 鍵入 `history` 檢視命令列歷史記錄。其中有許多縮寫,例如`!$`(最後鍵入的參數)和`!!`(最後鍵入的命令),儘管通常被 **ctrl-r** 和 **alt-.** 取代。 + +- 回到上一個工作路徑:`cd -` + +- 如果你輸入命令的時候改變了主意,按下 **alt-#** 來在行首新增`#`,或者依次按下 **ctrl-a**, **#**, **enter **。這樣做的話,之後你可以很方便的利用命令列歷史回到你剛才輸入到一半的命令。 + +- 使用 `xargs` ( 或 `parallel`),他們非常強大。注意到你可以控制每行參數的個數(`-L`)和最大並行數(`-P`)。如果你不確定它們是否會按你想的那樣工作,先使用`xargs echo` 檢視一下。此外,使用 `-I{}` 會很方便。例如: +```bash +      find . -name '*.py' | xargs grep some_function +      cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` 有助於展示程序樹。 + +- 使用`pgrep` 和`pkill` 根據名字查詢程序或傳送訊號(`-f` 參數通常有用)。 + +- 瞭解你可以發往程序的訊號的種類。比如,使用`kill -STOP [pid]` 停止一個程序。使用 `man 7 signal` 檢視詳細列表。 + +- 使用`nohup` 或`disown` 使一個後臺程序持續運行。 + +- 使用`netstat -lntp` 或`ss -plat` 檢查哪些程序在監聽埠(預設是檢查 TCP 埠; 使用參數`-u` 檢查 UDP 埠)。 + +- 有關開啟 socket 和檔案,請參閱`lsof`。 + +- 使用`uptime` 或`w` 來檢視系統已經運行多長時間。 + +- 使用`alias` 來創建常用命令的快捷形式。例如:`alias ll='ls -latr'` 使你可以方便地執行`ls -latr`命令。 + +- 在 Bash 指令碼中,使用`set -x` 去偵錯輸出,盡可能的使用嚴格模式,使用`set -e` 令指令碼在發生錯誤時退出而不是繼續運行,使用`set -u` 來檢查是否使用了未賦值的變數,使用`set -o pipefail` 嚴謹地對待錯誤(儘管問題可能很微妙)。當牽扯到很多指令碼時,使用 `trap`。一個好的習慣是在指令碼檔案開頭這樣寫,這會使它檢測一些錯誤,並在錯誤發生時中斷程式並輸出資訊: +```bash +      set -euo pipefail +      trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- 在 Bash 指令碼中,子 shell(使用括號`(...)`)是一種組織參數的便捷方式。一個常見的例子是臨時地移動工作路徑,程式碼如下: +```bash +      # do something in current dir +      (cd /some/other/dir && other-command) +      # continue in original dir +``` + +- 在 Bash 中,要注意其中有許多形式的擴展。檢查變數是否存在:`${name:?error message}`。例如,當 Bash 指令碼需要一個參數時,可以使用這樣的程式碼`input_file=${1:?usage: $0 input_file}`。數學表示式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截斷字元串:`${var%suffix}` 和`${var#prefix}`。例如,假設`var=foo.pdf`,那麼`echo ${var%.pdf}.txt` 將輸出`foo.txt`。 + +- 使用括號擴展(`{`...`}`)來減少輸入相似文字,並自動化文字組合。這在某些情況下會很有用,例如`mv foo.{txt,pdf} some-dir`(同時移動兩個檔案),`cp somefile{,.bak}`(會被擴展成`cp somefile somefile .bak`)或者`mkdir -p test-{a,b,c}/subtest-{1,2,3}`(會被擴展成所有可能的組合,並創建一個目錄樹)。 + +- 通過使用`<(some command)` 可以將輸出視為檔案。例如,對比本地檔案`/etc/hosts` 和一個​​遠端檔案: +```sh +      diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- 瞭解 Bash 中的“here documents”,例如`cat <logfile 2>&1`。通常,為了保證命令不會在標準輸入裡殘留一個開啟了的檔案控制代碼導致你當前所在的終端無法操作,新增` bar: +      repren --full --preserve-case --from foo --to bar . +      # Recover backup files whatever.bak -> whatever: +      repren --renames --from '(.*)\.bak' --to '\1' *.bak +      # Same as above, using rename, if available: +      rename 's/\.bak$//' *.bak +``` + +- 根據 man 頁面的描述,`rsync` 真的是一個快速且非常靈​​活的檔案複製工具。它通常被用於機器間的同步,但在本地也同樣有用。它同時也是刪除大量檔案的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove -huge-number-of-files.html)之一: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- 使用`shuf` 從一個檔案中隨機選取多行。 + +- 瞭解 `sort` 的參數。處理數字方面,使用`-n` 或者`-h` 來處理可讀性數字(例如`du -h` 的輸出)。明白鍵的工作原理(`-t` 和 `-k`)。例如,注意到你需要`-k1,1` 來按照第一個欄位來排序,而`-k1` 意味著按照整行排序。穩定排序(`sort -s`)在某些情況下很有用。例如,以第二個欄位為主關鍵字,第一個欄位為次關鍵字進行排序,你可以使用`sort -k1,1 | sort -s -k2,2`。 + +- 如果你想在 Bash 命令列中寫 tab 製表符,按下**ctrl-v** **[Tab]** 或鍵入`$'\t'` (後者可能更好,因為你可以複製貼上它)。 + +- 標準的原始碼對比及合併工具是`diff` 和`patch`。使用 `diffstat` 檢視變更總覽資料。注意到 `diff -r` 對整個資料夾有效。使用`diff -r tree1 tree2 | diffstat` 檢視變更總覽資料。 + +- 對於二進製檔案,使用`hd` 使其以十六進位制顯示以及使用`bvi` 來編輯二進位制。 + +- 同樣對於二進製檔案,`strings`(包括`grep` 等等)允許你查詢一些文字。 + +- 二進製檔案對比(Delta 壓縮),使用`xdelta3`。 + +- 使用 `iconv` 更改文字編碼。而更高階的用法,可以使用`uconv`,它支援一些高階的Unicode 功能。例如,這條命令將所有母音字母轉為小寫並移除了: +```sh +      uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- 拆分檔案,檢視`split`(按大小拆分)和`csplit`(按模式拆分)。 + +- 用[`dateutils`](http://www.fresse.org/dateutils/) 中的`dateadd`, `datediff`, `strptime` 等工具操作日期和時間表示式。 + +- 使用`zless`,`zmore`,`zcat` 和`zgrep` 對壓縮過的檔案進行操作。 + + +## 系統偵錯 + +- `curl` 和`curl -I` 可以便捷地被應用於 web 偵錯,它們的好兄弟`wget` 也可以,或者是更潮的[`httpie`](https://github.com/jakubroztocil /httpie)。 + +- 使用`iostat`、`netstat`、`top` (`htop` 更佳)和`dstat` 去獲取硬碟、cpu 和網路的狀態。熟練掌握這些工具可以使你快速的對系統的當前狀態有一個大概的認識。 + +- 使用`netstat` 和`ss` 檢視網路連線的細節。 + +- 若要對系統有一個深度的總體認識,使用[`glances`](https://github.com/nicolargo/glances)。它在一個終端視窗中向你提供一些系統層級的資料。這對於快速的檢查各個子系統非常有幫助。 + +- 若要了解記憶體狀態,運行並理解`free` 和`vmstat` 的輸出。尤其注意 “cached” 的值,它指的是 Linux 核心用來作為檔案快取的記憶體大小,因此它與空閒記憶體無關。 + +- Java 系統偵錯則是一件截然不同的事,一個可以用於 Oracle 的 JVM 或其他 JVM 上的偵錯的技巧是你可以運行`kill -3 ` 同時一個完整的棧軌跡和堆概述(包括 GC 的細節)會被儲存到標準輸出/日誌檔案。 JDK 中的`jps`,`jstat`,`jstack`,`jmap` 很有用。 [SJK tools](https://github.com/aragozin/jvm-tools) 更高階. + +- 使用`mtr` ​​去跟蹤路由,用於確定網路問題。 + +- 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 + +- 查詢正在使用頻寬的 socket 連線或程序,使用`iftop` 或`nethogs`。 + +- `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 + +- `wireshark`,`tshark` 和`ngrep` 可用於復雜的網路偵錯。 + +- 瞭解 `strace` 和 `ltrace`。這倆工具在你的程式運行失敗、掛起甚至崩潰,而你卻不知道為什麼或你想對效能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的程序參數(`-p`)。 + +- 瞭解使用 `ldd` 來檢查共享庫。 + +- 瞭解如何運用`gdb` 連線到一個運行著的程序並獲取它的堆棧軌跡。 + +- 學會使用 `/proc`。它在偵錯正在出現的問題的時候有時會效果驚人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/` ,`/proc/xxx/smaps`(這裡的`xxx` 表示程序的 id 或 pid)。 + +- 當偵錯一些之前出現的問題的時候,`sar` 非常有用。它展示了 cpu、記憶體以及網路等的歷史資料。 + +- 關於更深層次的系統分析以及效能分析,看看`stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org /wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 + +- 檢視你當前使用的系統,使用`uname` , `uname -a` (Unix/kernel 資訊) 或者`lsb_release -a` (Linux 發行版資訊)。 + +- 無論什麼東西工作得很歡樂時試試`dmesg`(可能是硬體或驅動問題)。 + + +## 單行指令碼 + +一些命令組合的例子: + +- 當你需要對文字檔案做集合交、並、差運算時,結合使用`sort`/`uniq` 很有幫助。假設 `a` 與 `b` 是兩內容不同的檔案。這種方式效率很高,並且在小檔案和上G的檔案上都能運用(`sort` 不被記憶體大小約束,儘管在`/tmp` 在一個小的根分區上時你可能需要`-T ` 參數),參閱前文中關於`LC_ALL` 和`sort` 的`-u` 參數的部分。 +```sh +      cat a b | sort | uniq > c # c is a union b +      cat ab | sort | uniq -d > c # c is a intersect b +      cat abb | sort | uniq -u > c # c is set difference a - b +``` + +- 使用`grep . *`(每行都會附上檔名)或者`head -100 *`(每個檔案有一個標題)來閱讀檢查目錄下所有檔案的內容。這在檢查一個充滿配置檔案的目錄(如`/sys`、`/proc`、`/etc`)時特別好用。 + +- 計算文字檔案第三列中所有數的和(可能比同等作用的Python 程式碼快三倍且程式碼量少三倍): +```sh +      awk '{ x += $3 } END { print x }' myfile +``` + +- 如果你想在檔案樹上檢視大小/日期,這可能看起來像遞迴版的`ls -l` 但比`ls -lR` 更易於理解: +```sh +      find . -type f -ls +``` + +- 假設你有一個類似於 web 伺服器日誌檔案的文字檔案,並且一個確定的值只會出現在某些行上,假設一個`acct_id` 參數在URI中。如果你想計算出每個`acct_id` 值有多少次請求,使用如下程式碼: +```sh +      cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- 運行這個函數從這篇文件中隨機獲取一條技巧(解析 Markdown 檔案並抽取項目): +```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 +      } +``` + + +## 冷門但有用的指令 + +- `expr`:計算表示式或正規表示法 + +- `m4`:簡易的巨集處理器 + +- `yes`:列印多次字串 + +- `cal`:漂亮的日曆 + +- `env`:執行一個命令(指令碼中很有用) + +- `printenv`:列印環境變數(偵錯時或在使用指令碼時很有用) + +- `look`:查詢以特定字元串開頭的單詞 + +- `cut`、`paste` 和 `join`:資料操作 + +- `fmt`:格式化文字段落 + +- `pr`:將文字格式化成頁/列形式 + +- `fold`:包裹文字中的幾行 + +- `column`:將文字格式化成多列或表格 + +- `expand` 和`unexpand`:在 tab 與空格之間轉換 + +- `nl`:新增行號 + +- `seq`:列印數字 + +- `bc`:計算機 + +- `factor`:分解因數 + +- [`gpg`](https://gnupg.org/):加密並針對檔案簽章 + +- `toe`:terminfo entries 列表 + +- `nc`:網路偵錯及資料傳輸 + +- `socat`:socket 代理,與 `netcat` 類似 + +- [`slurm`](https://github.com/mattthias/slurm):網路流量視覺化 + +- `dd`:在檔案或裝置間傳輸資料 + +- `file`:確定檔案類型 + +- `tree`:以樹的形式顯示路徑和檔案,類似於遞迴的`ls` + +- `stat`:檔案資訊 + +- `time`:執行命令,同時計算執行時間 + +- `lockfile`:使檔案只能通過`rm -f` 移除 + +- `logrotate`: 切換、壓縮以及傳送日誌檔案 + +- `watch`:重複運行同一個命令,展示結果並 highlight 有更改的部分 + +- `tac`:反向輸出文件 + +- `shuf`:檔案中隨機選取幾行 + +- `comm`:一行一行的比較排序過的檔案 + +- `pv`:監視通過 pipe 的資料 + +- `hd`,`hexdump`,`xxd`,`biew` 和`bvi`:儲存或編輯二進位檔案 + +- `strings`:從二進位檔案中抽取文字 + +- `tr`:轉換字母 + +- `iconv` 或 `uconv`:簡易的檔案編碼 + +- `split` 和 `csplit`:分割檔案 + +- `sponge`:在寫入前讀取所有輸入,在讀取檔案後再向同一檔案寫入時比較有用,例如`grep -v something some-file | sponge some-file` + +- `units`:將一種計量單位轉換為另一種等效的計量單位(參閱`/usr/share/units/definitions.units`) + +- `apg`:隨機生成密碼 + +- `7z`:高比例的檔案壓縮 + +- `ldd`:動態庫資訊 + +- `nm`:提取 obj 檔案中的符號 + +- `ab`:效能分析 web 伺服器 + +- `strace`:系統呼叫偵錯 + +- `mtr`:更好的網路偵錯跟蹤工具 + +- `cssh`:視覺化的並發 shell + +- `rsync`:通過ssh 或本地檔案系統同步檔案和資料夾 + +- `wireshark` 和`tshark`:抓包和網路偵錯工具 + +- `ngrep`:網路層的 grep + +- `host` 和 `dig`:DNS 查詢 + +- `lsof`:列出當前系統開啟檔案的工具以及檢視埠資訊 + +- `dstat`:系統狀態檢視 + +- [`glances`](https://github.com/nicolargo/glances):高層次的多子系統總覽 + +- `iostat`:硬碟使用狀態 + +- `mpstat`: CPU 使用狀態 + +- `vmstat`: 記憶體使用狀態 + +- `htop`:top 的加強版 + +- `last`:登入記錄 + +- `w`:檢視處於登入狀態的使用者 + +- `id`:使用者/組 ID 資訊 + +- `sar`:系統歷史資料 + +- `iftop` 或`nethogs`:套接字及程序的網路利用 + +- `ss`:socket 資料 + +- `dmesg`:引導及系統錯誤資訊 + +- `sysctl`: 在核心運行時動態地檢視和修改內核的運行參數 + +- `hdparm`:SATA/ATA 磁碟更改及效能分析 + +- `lsb_release`:Linux 發行版資訊 + +- `lsblk`:列出塊裝置資訊:以樹形展示你的磁碟以及磁碟分區資訊 + +- `lshw`,`lscpu`,`lspci`,`lsusb` 和`dmidecode`:檢視硬體資訊,包括CPU、BIOS、RAID、顯示卡、USB裝置等 + +- `lsmod` 和`modinfo`:列出核心模組,並顯示其細節 + +- `fortune`,`ddate` 和`sl`:額,這主要取決於你是否認為蒸汽火車和莫名其妙的名人名言是否“有用” + +## 僅限 OS X 系統 + +以下是*僅限於* MacOS 系統的技巧 + +- 用`brew` (Homebrew)或者`port` (MacPorts)進行套件管理。這些可以用來在 Mac 系統上安裝以上的大多數命令。 + +- 用`pbcopy` 複製任何命令的輸出到桌面應用,用`pbpaste` 貼上輸入。 + +- 若要在 Mac OS 終端中將 Option 鍵視為 alt 鍵(例如在上面介紹的**alt-b**, **alt-f** 等命令中用到),開啟偏好設定-> 描述檔案-> 鍵盤並勾選“使用 Option 鍵作為 Meta 鍵”。 + +- 用`open` 或者`open -a /Applications/Whatever.app` 使用桌面應用開啟檔案。 + +- Spotlight: 用`mdfind` 搜尋檔案,用`mdls` 列出後設資料(例如照片的EXIF 資訊)。 + +- 注意 MacOS 系統是基於BSD UNIX 的,許多命令(例如`ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,這些指令主要是被 System V -style Unix 和 GNU 工具影響。你可以透過標題為"BSD General Commands Manual" 的 man 頁面發現這些不同。在有些情況下 GNU 版本的命令也可能被安裝(例如`gawk` 和`gsed` 對應GNU 中的awk 和sed )。如果要寫跨平臺的 Bash 指令碼,避免使用這些命令(例如,考慮 Python 或者`perl` )或者經過仔細的測試。 + +- 用 `sw_vers` 獲取 MacOS 的版本資訊。 + + + +## 更多資源 + +- [awesome-shell](https://github.com/alebcay/awesome-shell):一份精美的命令列工具及資源的列表。 +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line):一份針對 Mac OS 命令列的更深入的指南。 +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):為了編寫更好的指令碼檔案。 +- [shellcheck](https://github.com/koalaman/shellcheck):一個靜態shell 指令碼分析工具,本質上是 bash/sh/zsh 的lint。 +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):有關如何在 shell 腳本里正確處理檔名的細枝末節。 + + +## 免責聲明 + +除去特別微小的任務,編寫程式碼是出於方便閱讀的目的。能力往往伴隨著責任。你*可以* 在 Bash 中做一些事並不意味著你應該去做! ;) + + +##授權條款 + +[![創作共用License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +本文使用授權協議[知識共享署名 - 相同方式共享4.0國際許可(http://creativecommons.org/licenses/by-sa/4.0/)。 diff --git a/README-zh.md b/README-zh.md index 0249d9f..8037fdf 100644 --- a/README-zh.md +++ b/README-zh.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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 diff --git a/README.md b/README.md index 4bacb7a..d6f2d4e 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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From bf5fbaa669e6f29765a9f968726ab714032dfbbd Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 21:40:08 +0800 Subject: [PATCH 036/104] ru: sync&correct translate --- README-ru.md | 202 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 73 deletions(-) diff --git a/README-ru.md b/README-ru.md index 7f5077a..6338ed3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -9,7 +9,7 @@ - [Основы](#Основы) - [Ежедневное использование](#Ежедневное-использование) - [Процессинг файлов и информации](#Процессинг-файлов-и-информации) -- [Системный дебаггинг](#Системный-дебаггинг) +- [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) - [OS X only](#os-x-only) @@ -21,17 +21,18 @@ Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят, как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! +Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста оставьте тикет или киньте пулл-реквест (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). +начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[MacOS only](#macos-only)". Все остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin). +- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[OS X only](#os-x-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу. - Эта инструкция включает в себя стандартные Unix команды и те, для которых нужно устанавливать сторонние пакеты. Они настолько полезны, что стоят того, чтобы их установили. @@ -43,43 +44,47 @@ ## Основы -- Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноуте во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). +- Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноутбуке во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). - Выучите как использовать хотя бы один консольный редактор текста. Идеально Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если Вы постоянно сидите на Emacs/какой-нибудь тяжелой IDE или на каком-нибудь модном хипстерском редакторе) - Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos`, и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. -- Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` добавляет к нему. Узнайте побольше про stdout и stderr. +- Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` дописывает в конец. Узнайте побольше про stdout и stderr. - Узнайте побольше про раскрытие file glob элементов `*` (а также `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже.) -- Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, и т.д. +- Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` и т.д. -- Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add`, и т.д. +- Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add` и т.д. -- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` или `df -i`). - Основы работы с сетью: `ip` или `ifconfig`, `dig`. -- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-A`, и `-B` стоит знать. +- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. -- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива). Знайте как искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). +- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). ## Ежедневное использование -- Используйте таб в Баше для автокомплита аргументов к командам и **ctrl-r** для поиска по истории командной строки. +- Используйте таб в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки (после нажатия введите запрос, нажмите **ctrl-r** снова чтобы натйи следующее сопадение, нажмите **Enter** для выполнения текущей найденной команды или стрелку вправо чтобы отредактировать команду). -- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-k** для того, чтобы прыгнуть к концу строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех шорткатах Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** расширяет глоб.?? +- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing). -- Если Вам нравятся шорткаты vim, сделайте `set -o vi`. +- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). - Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. -- Для того, чтобы прыгнуть к последней рабочей директории, используйте `cd -` +- Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. + +- Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. -- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду, как комментарий. Потом вы сможете вернуться к ней через историю. +- Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` -- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а также параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: +- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. + +- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -97,9 +102,17 @@ - Используйте `lsof` для того, чтобы посмотреть открытые сокеты и файлы. -- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. +- Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы. + +- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. +- Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. + +- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` -- В Баш скриптах используйте `set -x` для того, чтобы дебажить аутпут. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap`. - В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так: ```bash @@ -110,20 +123,22 @@ - В Баше много типов пространства переменных. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf` тогда `echo ${var%.pdf}.txt` выведет `foo.txt`. -- Вывод любой команды можно сохранить в файлоподобный контекст по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: +- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). + +- Вывод любой команды можно сохранить в файлоподобный контекст с помощью `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` - Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <logfile 2>&1`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять ` bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- Как говорит man, `rsync` действительно быстрая и очень универсальная утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - Используйте `shuf`, чтобы перемешать строки или выбрать случайную строчку из файла. -- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1` для того, чтобы отсортировать только первое поле; `-k1` - это сортировка, учитывая всю строчку. Также стабильная сортировка может быть полезной (`sort -s`). Например для того, чтобы отсортировать самое важное по второму полю, а второстепенное по первому, можно использовать sort -k1,1 | sort -s -k2,2`. +- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1` для того, чтобы отсортировать только первое поле; `-k1` - это сортировка, учитывая всю строчку. Также стабильная сортировка может быть полезной (`sort -s`). Например для того, чтобы отсортировать самое важное по второму полю, а второстепенное по первому, можно использовать `sort -k1,1 | sort -s -k2,2`. - Если вам когда-нибудь придётся написать код символа табуляции в терминале, например, для сортировки по табуляциям с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать. - Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. -- Для бинарников используйте `hd` для простых hex-дампом, и `bvi` для двоичного изменения бинарников. +- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` for a side-by-side diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. Use `vimdiff` to compare and edit files. -- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарниках. +- Для бинарных файлов используйте `hd`, `hexdump` или `xxd` для простых hex-дампов, и `bvi` для двоичного изменения бинарных файлов. -- Чтобы посмотреть разницу в бинарниках (дельта-кодирование): `xdelta3`. +- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарных файлах. -- Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (кои бывают, например, в испанском языке) +- Чтобы посмотреть разницу в бинарниках (дельта-кодирование) используйте `xdelta3`. + +- Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (которые бывают, например, в испанском языке) ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt @@ -219,19 +247,25 @@ - Для того, чтобы разбить файл на куски, используйте `split` (разбивает на куски по размеру), или `csplit` (по шаблону или регулярному выражению). +- Для операций с датой и временными выраженияями используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). + - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. -## Системный дебаггинг +## Отладка системы -- Дле веб-дебаггинга используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). +- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). -- Чтобы получить информацию о диске/CPU/сети используйте `iostat`, `netstat`, `top` (или лучшую альтернативу `htop`) и особенно `dstat`. Хороший старт для того, чтобы понимать, что происходит в системе. -- Для более детальной информации используйте [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами. + +- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. + +- Для получения информации о сетевых соедиениях используйте `netstat` и `ss`. + +- Для получения краткой информации о происходящем в системе используйте `dstat`, для более детальной информации: [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами. - Для того, чтобы следить за памятью, научитесь понимать `free` и `vmstat`. В частности, не забывайте, что кешированые значения ("cached" value) – это память, которую держит ядро и эти значения являются частью `free`. -- Дебаггинг Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать делать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно дампнуть в stderr или логи. +- Отладка Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать делать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. - Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети. @@ -239,23 +273,23 @@ - Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`. -- `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного лоад-тестинга используйте `siege`. +- `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. -- Для более серьёзного дебаггинга сетей используйте `wireshark`, `tshark`, и `ngrep`. +- Для более серьёзной отладки сетей используйте `wireshark`, `tshark` и `ngrep`. -- Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность дебаггинга (`-c`) и возможность прицепиться к процессу по pid (`-p`). +- Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). - Не забывайте про `ldd` для проверки системных библиотек. - Знайте как прицепиться к работающему процессу через `gdb` и получить трассировку стека. -- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. +- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (где `xxx` это pid). -- Когда дебажите что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. +- Когда отлаживаете что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. - Для анализа более сложных систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig). -- Узнайте, какая у вас операционка, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). +- Узнайте, какая у вас ОС, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). @@ -278,23 +312,18 @@ awk '{ x += $3 } END { print x }' myfile ``` -- Если вам нужно посмотреть размеры и даты создания древа файлов используйте: +- Если вам нужно посмотреть размеры и даты создания дерева файлов используйте: ```sh find . -type f -ls ``` Это почти как рекурсивная `ls -l`, но выглядит более читабельно чем `ls -lR`: -- Используйте `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а так же параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: -```sh - find . -name '*.py' | xargs grep some_function - cat hosts | xargs -I{} ssh root@{} hostname -``` - - Давайте представим, что у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` +- Для непрерывного мониторинга измененний используйте `watch`, например, проверка измений файлов в директории: `watch -d -n 2 'ls -rtlh | tail'` или сетевых настроек во время устранения проблем с вашей wifi сетью: `watch -d -n 2 ifconfig`. - Запустите этот скрипт, чтобы получить случайный совет из этой инструкции: ```sh @@ -320,7 +349,7 @@ - `env`: для того, чтобы выполнить команду (полезно в Bash-скриптах) -- `printenv`: показать переменные окружения (полезно в скриптах или дебаггинге) +- `printenv`: показать переменные окружения (полезно в скриптах или отладке) - `look`: найти английские слова (или строки) в файле @@ -344,15 +373,15 @@ - `factor`: возвести числа в степень -- `gpg`: зашифровать и подписать файлы +- [`gpg`](https://gnupg.org/): зашифровать и подписать файлы - `toe`: таблица терминалов terminfo с описанием -- `nc`: дебаггинг сети и передачи данных +- `nc`: отладка сети и передачи данных - `socat`: переключатель сокетов и перенаправление tcp-портов (похоже на `netcat`) -- `slurm`: визуализация трафика сети +- [`slurm`](https://github.com/mattthias/slurm): визуализация трафика сети - `dd`: перенос информации между блочными устройствами @@ -362,6 +391,16 @@ - `stat`: информация о файле +- `time`: время выполнения команды + +- `timeout`: выполнять команду указанное количество времени и остановить процесс по его истечении + +- `lockfile`: создание семафорного файла, который может быть удален только с помощью `rm -f` + +- `logrotate`: ротация, сжатие и отправка логов по почте. + +- `watch`: повторный запуск команды с выводом результата или подсветкой изменений + - `tac`: вывести файл посимвольно наоборот ("ласипан") - `shuf`: случайная выборка строк из файла @@ -370,7 +409,7 @@ - `pv`: мониторинг прогресса прохождения информации через пайп -- `hd`, `hexdump`, `xxd`, `biew`: hex-дамп и редактирование бинарников +- `hd`, `hexdump`, `xxd`, `biew` и `bvi`: hex-дамп и редактирование бинарных файлов - `strings`: найти текст в бинарниках @@ -380,33 +419,35 @@ - `split` и `csplit`: разбить файлы -- `sponge`: прочитать весь инпут перед тем, как его записать. Полезно, когда читаешь из того же файла, куда записываешь. Например, вот так: `grep -v something some-file | sponge some-file` +- `sponge`: прочитать весь входной поток перед тем, как его записать. Полезно, когда читаешь из того же файла, куда записываешь. Например, вот так: `grep -v something some-file | sponge some-file` - `units`: конвертер. Метры в километры, версты в пяди (смотрите `/usr/share/units/definitions.units`) +- `apg`: генерация случайных паролей + - `7z`: архиватор с высокой степенью сжатия - `ldd`: показывает зависимости программы от системных библиотек -- `nm`: получаем названия всех функций, которые определены в .o или .a +- `nm`: получаем названия всех функций, которые определены в .o или .a (объектные файлы) - `ab`: бенчмаркинг веб-серверов - `strace`: отладка системных вызовов -- `mtr`: лучшая трассировка для дебаггинга сети +- `mtr`: лучшая трассировка для отладки сети - `cssh`: несколько терминалов в одном UI - `rsync`: синхронизация файлов и папок через SSH -- `wireshark` и `tshark`: перехват пакетов и дебаг сети +- `wireshark` и `tshark`: перехват пакетов и отладка сети -- `ngrep`: grep для слоя сети (network layer) +- `ngrep`: grep для слоя сети (network layer). Перехват пакетов по заданной маске. - `host` и `dig`: узнать DNS -- `lsof`: процессинг дескрипторов и информация о сокетах +- `lsof`: информация о дескрипторах и сокетах процесса - `dstat`: полезная статистика ОС @@ -414,6 +455,10 @@ - `iostat`: статистика процессора и использования жёсткого диска +- `mpstat`: статистика использования процессора + +- `vmstat`: статистика использования памяти + - `htop`: улучшенная версия `top` - `last`: история логинов в систему @@ -430,6 +475,8 @@ - `dmesg`: ошибки загрузки и ошибки системы +- `sysctl`: просмотр и конфигурирование параметров ядра Linux + - `hdparm`: манипуляции с SATA/ATA - `lsb_release`: информация о дистрибутиве Linux @@ -438,26 +485,35 @@ - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: информация о железе, включая CPU, BIOS, RAID, графику, девайсы, и т.д. -- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) +- `lsmod` и `modinfo`: информация о модулях ядра. + +- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезные" веселые цитатки и поезда, пересекающие ваш терминал :) ## OS X only -Некоторые вещи, подходящие *только* для Мака. +Некоторые вещи, подходящие *только* для OS X. - Системы управлением пакетами – `brew` (Homebrew) и `port` (MacPorts). Они могут быть использованы для того, чтобы установить большинство программ, упомянутых в этом документе. - Копируйте выдачу консольных программ в десктопные через `pbcopy` и вставляйте входные данные через `pbpaste`. +- Чтобы использовать в OS X кнопку Options как Alt (для использования команд **alt-b**, **alt-f** и т.д.) в настройках Терминала откройте Профили -> Клавиатура и выберите "Использовать клавишу Option в качестве метаклавиши" ("Use Option as Meta key"). + - Для того, чтобы открыть файл или десктопную программу типа Finder, используйте `open`. Вот так: `open -a /Applications/Whatever.app`. -- Spotlight: Ищите файлы в консоли, через `mdfind`, и смотрите метадату (например EXIF информацию фотографий) через `mdls`. +- Spotlight: Ищите файлы в консоли, через `mdfind`, и смотрите метаданные (например EXIF информацию фотографий) через `mdls`. -- Не забывайте, что MacOS основан на BSD Unix и многие команды (например `ps`, `ls`, `tail`, `awk`, `sed`) имеют небольшие различия с линуксовыми. Это обусловлено влянием `UNIX System V` и `GNU Tools`. Разницу можно заметить, увидев заголовок "BSD General Commands Manual." в манах программ. В некоторых случаях, на Мак можно поставить GNU-версии программ, например `gawk` и `gsed`. Когда пишите кроссплатформенные Bash-скрипты, старайтесь избегать использовать команды, которые могут различаться (например, лучше используйте Python или `perl`), или тщательно все тестируйте. +- Не забывайте, что OS X основана на BSD Unix и многие команды (например `ps`, `ls`, `tail`, `awk`, `sed`) имеют небольшие различия с линуксовыми. Это обусловлено влянием `UNIX System V` и `GNU Tools`. Разницу можно заметить, увидев заголовок "BSD General Commands Manual." в манах программ. В некоторых случаях, на Мак можно поставить GNU-версии программ, например `gawk` и `gsed`. Когда пишите кроссплатформенные Bash-скрипты, старайтесь избегать использовать команды, которые могут различаться (например, лучше используйте Python или `perl`), или тщательно все тестируйте. + +- Чтобы получить информацию о версии OS X используйте `sw_vers`. ## Больше информации по теме - [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Более детальные гайды по терминалу в OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) Для того, чтобы писать шелл-скрипты лучше. +- [shellcheck](https://github.com/koalaman/shellcheck): Статический анализатор скриптов. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Сборник мелочей о правильной обработке имен файлов в скриптах. ## Дисклеймер From 8010533a8023093eda81a118e4555f3afce9a4b2 Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 22:01:13 +0800 Subject: [PATCH 037/104] ru: sync&correct translate +fixed gramma --- README-ru.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README-ru.md b/README-ru.md index 6338ed3..b9094e3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -58,13 +58,13 @@ - Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add` и т.д. -- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` или `df -i`). +- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` bkb `df -i`). - Основы работы с сетью: `ip` или `ifconfig`, `dig`. - Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. -- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). +- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). ## Ежедневное использование @@ -82,9 +82,9 @@ - Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` -- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. +- Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. -- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: +- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -107,7 +107,7 @@ - Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. - Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. -- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): +- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -132,7 +132,7 @@ - Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедиться, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. +- Отладка Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. - Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети. From 806cd03f62e7488664d1a46effb17c16b24f817d Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 23:18:19 +0800 Subject: [PATCH 038/104] ru: sync&correct translate +more fixes --- README-ru.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/README-ru.md b/README-ru.md index b9094e3..a7607f8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -8,7 +8,7 @@ - [Описание](#Описание) - [Основы](#Основы) - [Ежедневное использование](#Ежедневное-использование) -- [Процессинг файлов и информации](#Процессинг-файлов-и-информации) +- [Обработка файлов и информации](#Обработка-файлов-и-информации) - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) @@ -19,7 +19,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) -Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят, как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! +Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) @@ -123,7 +123,7 @@ - В Баше много типов пространства переменных. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf` тогда `echo ${var%.pdf}.txt` выведет `foo.txt`. -- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). +- Использование скобок `{...}` может уменьшить необходиость повторно вводить схожий текст и автоматизирует комбинирование элементов. Это полезно например здесь: `mv foo.{txt,pdf} some-dir` (переместит оба файла), `cp somefile{,.bak}` (приведется к `cp somefile somefile.bak`) или `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (раскроет все возможные комбинации и создаст дерево каталогов). - Вывод любой команды можно сохранить в файлоподобный контекст с помощью `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: ```sh @@ -170,7 +170,7 @@ - Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы эмулировать свежий логин от рута или другого пользователя. -## Процессинг файлов и информации +## Обработка файлов и информации - Для того, чтобы найти файл в текущей директории, сделайте `find . -iname '*something*'`. Для того, чтобы искать файл по всей системе, используйте `locate something` (но не забывайте, что `updatedb` мог еще не проиндексировать недавно созданные файлы). @@ -229,9 +229,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Если вам когда-нибудь придётся написать код символа табуляции в терминале, например, для сортировки по табуляциям с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать. -- Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. - -- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` for a side-by-side diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. Use `vimdiff` to compare and edit files. +- Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики изменений (диффа) и `sdiff` для сравнения бок-о-бок (side-by-side). `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. Используйте `vimdiff` для сравнения и редактирования файлов. - Для бинарных файлов используйте `hd`, `hexdump` или `xxd` для простых hex-дампов, и `bvi` для двоичного изменения бинарных файлов. @@ -247,7 +245,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для того, чтобы разбить файл на куски, используйте `split` (разбивает на куски по размеру), или `csplit` (по шаблону или регулярному выражению). -- Для операций с датой и временными выраженияями используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). +- Для использования значений даты-времени используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. From b3a01d7f0ea5bc0cd2618a0b855b967f6113f1b2 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 25 Jan 2016 15:55:17 -0800 Subject: [PATCH 039/104] Traditional Chinese maintainer. Update authors. --- AUTHORS.md | 11 +++++++---- admin/authors-info.yml | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 386f711..4b8fc70 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,6 +4,7 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +* [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) * [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [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) @@ -30,7 +31,7 @@ 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)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[3+](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) — _translator and maintainer (it)_ @@ -44,7 +45,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) — [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_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [128+](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) @@ -52,6 +53,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) * [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ * [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) +* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translator and maintainer (zh-Hant)_ * [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13) * [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) @@ -68,7 +70,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) — [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)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [35+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[26+](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) @@ -79,6 +81,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) +* [Scott Griffin (sirsgriffin)](https://github.com/sirsgriffin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sirsgriffin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asirsgriffin) * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ @@ -87,7 +90,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)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) +* [René Ribaud (uggla)](https://github.com/uggla) — [5+](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 889b2e3..4bbdf76 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -45,3 +45,4 @@ roles: lsrom: translator and maintainer (cs) ericguirbal: translator and maintainer (fr) rverchere: translator (fr) + kevingo: translator and maintainer (zh-Hant) From 8faadd48977746e33ffd2e4a047141e4cef0e4c8 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:08:46 +0200 Subject: [PATCH 040/104] Add short Microsoft Windows section --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef25da8..e994e74 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) - [OS X only](#os-x-only) +- [Windows](#windows) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -35,7 +36,7 @@ but it has since moved to GitHub, where people more talented than the original a Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" section. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows](#windows)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -507,6 +508,23 @@ These are items relevant *only* on OS X. - To get OS X release information, use `sw_vers`. +## Windows + +- Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. + +- Install additional Unix programs with the Cygwin's package manager. + +- Use `mintty` as your command-line window. + +- Access the Windows clipboard through `/dev/clipboard`. + +- Run `cygstart` to open an arbitrary file through its registered application. + +- Access the Windows registry with `regtool`. + +- Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. + +- You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. ## More resources From a53ef6c6bdeafd3f13f72830f4de5dab67de41d5 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:19:59 +0200 Subject: [PATCH 041/104] Add .bashrc recommendation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..ee0de79 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,8 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. +- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. + - 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: From ba05a4866c674a234438e9f7989912108a295764 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:24:11 +0200 Subject: [PATCH 042/104] Recommend using Git to manage .bashrc --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee0de79..cf21ef7 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. +- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. - 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'`. From 459467c5ebf132805b698ed856ed50c10eb6abf2 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:28:16 +0200 Subject: [PATCH 043/104] Add home directory basics --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef25da8..2f24165 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,9 @@ Notes: - To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument) and `!!` last command, though these are often easily replaced with **ctrl-r** and **alt-.**. -- To go back to the previous working directory: `cd -` +- Go to your home directory with `cd`. Access files relative to your home directory with the `~` prefix (e.g. `~/.bashrc`). In `sh` scripts refer to the home directory as `$HOME`. + +- To go back to the previous working directory: `cd -`. - If you are halfway through typing a command but change your mind, hit **alt-#** to add a `#` at the beginning and enter it as a comment (or use **ctrl-a**, **#**, **enter**). You can then return to it later via command history. From 3fd605653a4c4421b29a4aa2b8f7d620d6ab3be5 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:36:08 +0200 Subject: [PATCH 044/104] Add version control management --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..ed10532 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ Notes: - Basic network management: `ip` or `ifconfig`, `dig`. +- Learn and use a version control management system, such as `git`. + - Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-v`, `-A`, `-B`, and `-C` options are worth knowing. - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). From c86523be03356d30eb5bd27dbcf6e526b2fff104 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 17:54:34 +0200 Subject: [PATCH 045/104] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf21ef7..29941c4 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. +- Save aliases and settings you commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. - 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'`. From dbc8f924d24cfd40c1cda04a72c987ad03d4b1d9 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 20:44:56 +0200 Subject: [PATCH 046/104] Add .bash_profile description --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 29941c4..c8ca568 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,11 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings you commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. +- Save aliases, shell settings, and functions you commonly use in `~/.bashrc`, and [arrange for login shells to source it](http://superuser.com/a/183980/7106). This will make your setup available in all your shell sessions. + +- Put the settings of environment variables as well as commands that should be executed when you login in `~/.bash_profile`. Separate configuration will be needed for shells you launch from graphical environment logins and `cron` jobs. + +- Synchronize your configuration files (e.g `.bashrc` and `.bash_profile`) among various computers with Git. - 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'`. From 2c5df2316990966064edf3e79514b9f2cb83dc25 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 20:57:29 +0200 Subject: [PATCH 047/104] Add command-specific environment settings --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..f530536 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,8 @@ Notes: - Know that locale affects a lot of command line tools in subtle ways, including sorting order (collation) and performance. Most Linux installations will set `LANG` or other locale variables to a local setting like US English. But be aware sorting will change if you change locale. And know i18n routines can make sort or other commands run *many times* slower. In some situations (such as the set operations or uniqueness operations below) you can safely ignore slow i18n routines entirely and use traditional byte-based sort order, using `export LC_ALL=C`. +- You can set a specific command's environment by prefixing its invocation with the environment variable settings, as in `TZ=Pacific/Fiji date`. + - Know basic `awk` and `sed` for simple data munging. For example, summing all numbers in the third column of a text file: `awk '{ x += $3 } END { print x }'`. This is probably 3X faster and 3X shorter than equivalent Python. - To replace all occurrences of a string in place, in one or more files: From 6f752fa251b5df1868cfd8343ea1a0630bed56bd Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 00:25:56 +0200 Subject: [PATCH 048/104] Add "only" to Windows section title --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e994e74..a1ffb25 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) - [OS X only](#os-x-only) -- [Windows](#windows) +- [Windows only](#windows-only) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -36,7 +36,7 @@ but it has since moved to GitHub, where people more talented than the original a Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows](#windows)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows only](#windows-only)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -508,7 +508,7 @@ These are items relevant *only* on OS X. - To get OS X release information, use `sw_vers`. -## Windows +## Windows only - Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. From 82d8626287eae6e89cfec111193ecdf52baa566d Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 08:47:33 +0200 Subject: [PATCH 049/104] Summarize Cygwin and Windows path mapping Addresses: #issuecomment-175369010 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1ffb25..c406e8f 100644 --- a/README.md +++ b/README.md @@ -522,7 +522,7 @@ These are items relevant *only* on OS X. - Access the Windows registry with `regtool`. -- Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. +- Note that a `C:\` Windows drive path becomes `/cygdrive/c` under Cygwin, and that Cygwin's `/` appears under `C:\cygwin` on Windows. Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. - You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. From 448887b781cdf5ae6ddb9108e07e4ad37ee93ce2 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 08:56:05 +0200 Subject: [PATCH 050/104] Add Cygwin link Addresses: #issuecomment-175369010 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c406e8f..77fcd62 100644 --- a/README.md +++ b/README.md @@ -510,7 +510,7 @@ These are items relevant *only* on OS X. ## Windows only -- Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. +- Access the power of the Unix shell under Microsoft Windows by installing [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. - Install additional Unix programs with the Cygwin's package manager. From b2f8c20a717718a99503818623ae1d5990587687 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 27 Jan 2016 09:39:09 +0100 Subject: [PATCH 051/104] fr: Update the translation --- README-fr.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7914430..4b5670e 100644 --- a/README-fr.md +++ b/README-fr.md @@ -78,6 +78,8 @@ Apprenez ce qu'est un inode (`ls -i` ou `df -i`). - Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. +- Apprenez à vous servir d'un logiciel de gestion de versions tel que `git`, et utilisez-le. + - Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` sont bonnes à connaître. @@ -102,6 +104,10 @@ Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** dév - Pour voir les commandes récentes, `history`. 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-.**. +- Placez-vous dans votre répertoire personnel avec `cd`. +Accédez aux fichiers à partir de leurs chemins relatifs par rapport à votre répertoire personnel en préfixant ceux-ci avec `~` (p. ex. `~/.bashrc`). +Dans les scripts shell, désignez le répertoire personnel par `$HOME`. + - 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 l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). @@ -137,6 +143,14 @@ 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`. +- Conservez les aliases, les paramètres du shell et les fonctions fréquemment utilisées dans le fichier `~/.bashrc`, et [arrangez-vous pour qu'il soit chargé par le shell de connexion](http://superuser.com/a/183980/7106). +Ainsi, votre configuration s'appliquera à toutes vos sessions shell. + +- Placez dans `~/.bash_profile` la configuration de vos variables d'environnement ainsi que les commandes à exécuter lorsque vous vous connectez. +Une configuration séparée est nécessaire lorsque vous vous connectez depuis un gestionnaire de connexion graphique et pour les tâches planifiées par `cron`. + +- Synchronisez vos fichiers de configuration (p. ex. `.bashrc` et `.bash_profile`) entre plusieurs ordinateurs avec Git. + - 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`. @@ -258,6 +272,8 @@ 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, ignorer complètement les lentes routines i18n et utiliser l'ordre de tri classique fondé sur les valeurs des octets à l'aide de `export LC_ALL=C`. +- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fidji date`. + - Apprenez `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. From 43584dacf153a63f221578a153cb2e4994f8cfca Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 18:28:40 +0200 Subject: [PATCH 052/104] el: Translate the section "Meta" --- README-el.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 README-el.md diff --git a/README-el.md b/README-el.md new file mode 100644 index 0000000..4a6e3ea --- /dev/null +++ b/README-el.md @@ -0,0 +1,16 @@ +## Meta + +Αντικείμενο: + +- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ίσχυουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. +- Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. + +Σημειώσεις: + +- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέριες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. + + + From 3fc9ff9b65a520e5428e4c580055c3e523f1e3ed Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 18:34:04 +0200 Subject: [PATCH 053/104] el: Fix typos in section "Meta" --- README-el.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index 4a6e3ea..2486f66 100644 --- a/README-el.md +++ b/README-el.md @@ -3,13 +3,13 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ίσχυουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέριες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. From 52f08cc7ad10e8dd1ab8cdc0cc94ddd09187ffcd Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 19:25:15 +0200 Subject: [PATCH 054/104] el: Translate the section "One-liners" --- README-el.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/README-el.md b/README-el.md index 2486f66..4e9f277 100644 --- a/README-el.md +++ b/README-el.md @@ -12,5 +12,48 @@ - Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. +## Εντολές σε μία γραμμή + +Μερικά παραδείγματα σωλήνωσης εντολών: + +- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Έστωσαν `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H Sort δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρό root διαμέρισμα. Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). +```sh + cat a b | sort | uniq > c # c is a union b + cat a b | sort | uniq -d > c # c is a intersect b + cat a b b | sort | uniq -u > c # c is set difference a - b +``` + +- Χρησιμοποιήστε `grep . *` για να εξετάσετε γρήγορα το περιεχόμενο όλων των αρχείων ενός καταλόγου (έτσι κάθε γραμμή αρχείου εμφανίζεται σε ζεύγος με το όνομα του αρχείου), ή `head -100 *` (έτσι κάθε αρχείο έχει μια κεφαλίδα). Αυτό μπορεί να είναι χρήσιμο για καταλόγους γεμάτους με αρχεία ρυθμίσεων όπως αυτά στους καταλόγους `/sys`, `/proc`, `/etc`. + + +- Η άθροιση όλων των αριθμών στην τρίτη στήλη ενός αρχείου κειμένου (αυτό είναι μάλλον 3X γρηγορότερο και απαιτεί 3X λιγότερο κώδικα από την αντίστοιχη υλοποίηση σε Python): +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- Για να δείτε μεγέθη/ημερομηνίες σε ένα δέντρο αρχείων, η παρακάτω είναι σα μια αναδρομική `ls -l`, αλλά είναι πιο ευανάγνωστη από `ls -lR`: +```sh + find . -type f -ls +``` + +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως log ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Για να παρακολουθείτε συνεχώς αλλαγές, χρησιμοποιήστε `watch`, π.χ. ελέγξτε αλλαγές σε αρχεία ενός καταλόγου με `watch -d -n 2 'ls -rtlh | tail'` ή σε ρυθμίσεις δικτύου ενώ επιδιορθώνετε τις ρυθμίσεις wifi με `watch -d -n 2 ifconfig`. + +- Εκτελέστε αυτή τη μέθοδο για να πάρετε μια τυχαία συμβουλή από αυτό το έγγραφο (αναλύει Markdown και εξάγει ένα στοιχείο): +```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 + } +``` + + From abc706d62056b9cc2bb1d9e2b716b3c51d96fc3d Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 20:24:44 +0200 Subject: [PATCH 055/104] el: Translate the section "Basics" --- README-el.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README-el.md b/README-el.md index 4e9f277..393fb5f 100644 --- a/README-el.md +++ b/README-el.md @@ -12,6 +12,33 @@ - Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. +## Τα βασικά + +- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). + +- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE, ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). + +- Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. + +- Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. + +- Μάθετε για την επέκταση αρχείων glob με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) + +- Εξοικειωθείτε με τη διαχείριση εργασιών στον Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` κλπ. + +- Να γνωρίζετε την εντολή `ssh` και τα βασικά της αυθεντικοποίησης χωρίς κωδικό με χρήση των `ssh-agent`, `ssh-add` κλπ. + +- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη της `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). + +- Βασική διαχείριση δικτύου: `ip` ή `ifconfig`, `dig`. + +- Μάθετε και χρησιμοποιήστε ένα σύστημα διαχείρισης και ελέγχου εκδόσεων, όπως το `git`. + +- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. + +- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From 6716d8bef136228ff3e244df754314780f59a639 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 27 Jan 2016 20:06:09 +0100 Subject: [PATCH 056/104] fr: Correct a typo --- README-fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 4b5670e..2bc7f36 100644 --- a/README-fr.md +++ b/README-fr.md @@ -272,7 +272,7 @@ 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, ignorer complètement les lentes routines i18n et utiliser l'ordre de tri classique fondé sur les valeurs des octets à l'aide de `export LC_ALL=C`. -- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fidji date`. +- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fiji date`. - Apprenez `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}'`. From b5fe76815944a56704dcd620db379d4428334366 Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 23:20:39 +0200 Subject: [PATCH 057/104] el: Translate the section "Everyday use" --- README-el.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/README-el.md b/README-el.md index 393fb5f..3569d3a 100644 --- a/README-el.md +++ b/README-el.md @@ -38,6 +38,115 @@ - Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +## Καθημερινή χρήση + +- Στον Bash, χρησιμοποιήστε **Tab** για να ολοκληρώσετε ορίσματα ή να εμφανίσετε σε λίστα όλες τις διαθέσιμες εντολές, **ctrl-r** για να αναζητήσετε στο ιστορικό των εντολών (αφού πατήσετε, πληκτρολογήστε για να αναζητήσετε, πατήστε **ctrl-r** επαναλαμβανόμενα για να περιηγηθείτε σε περισσότερα αποτελέσματα αναζήτησης, πατήστε **Enter** για να εκτελέσετε την εντολή που βρήκατε ή πατήστε το δεξί βέλος για να μεταφέρετε το αποτέλεσμα στην τρέχουσα γραμμή ώστε να μπορείτε να το επεξεργαστείτε). + +- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα glob. + +- Εναλλακτικά, αν σας αρέσουν οι συντομεύσεις τύπου vi, χρησιμοποιήστε `set -o vi` (και `set -o emacs` για να επαναφέρετε). + +- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή όπως γίνεται με vi, **escape-v**. + +- Για να δείτε πρόσφατες εντολές, `history`. Επίσης, υπάρχουν πολλές συντομεύσεις όπως `!$` (τελευταίο όρισμα) και `!!` (τελευταία εντολή), αν και συχνά αντικαθίστανται από **ctrl-r** και **alt-.**. + +- Πηγαίνετε στον κατάλογο home με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον home κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον κατάλογο home ως `$HOME`. + +- Για να πάτε στον προηγούμενο κατάλογο όπου εργαζόσαστε: `cd -`. + +- Αν έχετε γράψει μέχρι τη μέση μία εντολή, αλλά αλλάξατε γνώμη, πατήστε **alt-#** για να προσθέσετε ένα`#` στην αρχή και να την προσθέσετε ως ένα σχόλιο (ή χρησιμοποιήστε **ctrl-a**, **#**, **enter**). Μπορείτε να επιστρέψετε σε αυτή αργότερα με το ιστορικό εντολών. + +- Χρησιμοποιήστε `xargs` (ή `parallel`). Έχει πολλές δυνατότητες. Σημειώστε ότι μπορείτε να ελέγξετε πόσα στοιχεία θα εκτελέσετε ανά γραμμή (`-L`) καθώς και παράλληλη εκτέλεση εντολών (`-P`). Αν δεν είστε σίγουρος ότι θα κάνει το σωστό, χρησιμοποιήστε πρώτα `xargs echo`. Επίσης, η επιλογή `-I{}` είναι χρήσιμη. Παραδείγματα: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + + +- `pstree -p` είναι μία χρήσιμη εμφάνιση του δέντρου διεργασιών. + +- Χρησιμοποιήστε `pgrep` και `pkill` για να αναζητήσετε ή να στείλετε σήμα σε διεργασίες με βάση το όνομά τους (η επιλογή `-f` είναι χρήσιμη). + +- Να γνωρίζετε τα διάφορα σήματα που μπορείτε να στείλετε σε διεργασίες. Για παράδειγμα, για να αναστείλετε μία διεργασία χρησιμοποιήστε `kill -STOP [pid]`. Για ολόκληρη τη λίστα, δείτε `man 7 signal` + +- Χρησιμοποιήστε `nohup` ή `disown` αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. + +- Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). + +- Δείτε επίσης `lsof` για ανοιχτά sockets και αρχεία. + +- Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. + +- Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. + +- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`, και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. + +- Βάλτε τις ρυθμίσεις των μεταβλητών περιβάλλοντος καθώς και τις εντολές που χρειάζεται να εκτελεστούν με την είσοδό σας στο `~/.bash_profile`. Ξεχωριστές ρυθμίσεις θα χρειαστούν για τους φλοιούς που εκτελούνται από είσοδο από γραφικό περιβάλλον και εργασίες `cron`. + +- Συγχρονίστε τα αρχεία με τις ρυθμίσεις σας (π.χ. `.bashrc` και `.bash_profile`) μεταξύ διαφορετικών υπολογιστών χρησιμοποιώντας Git. + +- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. + +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που εμφανίζονται σε σωληνώσεις εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Σε scripts για Bash, οι υποφλοιοί (γραμμένοι μέσα σε παρενθέσεις) είναι βολικοί τρόποι ομαδοποίησης εντολών. Ένα συνηθισμένο παράδειγμα είναι η προσωρινή μετακίνηση σε διαφορετικό τρέχοντα κατάλογο, π.χ. +```bash + # do something in current dir + (cd /some/other/dir && other-command) + # continue in original dir +``` + +- Στον Bash, σημειώστε ότι υπάρχουν πολλοί τρόποι επέκτασης μιας μεταβλητής. Έλεγχος του αν μία μεταβλητή υπάρχει: `${name:?error message}`. Για παράδειγμα, αν ένα Bash script παίρνει ένα μόνο όρισμα, απλά γράψτε `input_file=${1:?usage: $0 input_file}`. Αριθμητική επέκταση: `i=$(( (i + 1) % 5 ))`. Ακολουθίες: `{1..10}`. Περικοπή αλφαριθμητικών: `${var%suffix}` και `${var#prefix}`. Για παράδειγμα, αν `var=foo.pdf`, τότε η `echo ${var%.pdf}.txt` τυπώνει `foo.txt`. + +- Η επέκταση με αγκύλες χρησιμοποιώντας `{`...`}` μπορεί να μειώσει τις φορές που χρειάζεται να πληκτρολογήσετε ξανά παρόμοιο κείμενο και να αυτοματοποιήσει συνδυασμούς στοιχείων. Αυτό είναι χρήσιμο σε παραδείγματα όπως `mv foo.{txt,pdf} some-dir` (που μετακινεί και τα δύο αρχεία), `cp somefile{,.bak}` (που επεκτείνεται σε `cp somefile somefile.bak`) ή `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (που επεκτείνεται σε όλους τους πιθανούς συνδυασμούς και δημιουργεί ένα δέντρο καταλόγων). + +- Μπορείτε να χειριστείτε την έξοδο μίας εντολής ως αρχείο `<(some command)`. Για παράδειγμα, συγκρίνετε το τοπικό `/etc/hosts` με ένα απομακρυσμένο: +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει έναν χειριστή αρχείου ανοιχτό στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε ` Date: Wed, 27 Jan 2016 23:45:33 +0200 Subject: [PATCH 058/104] el: Translate the introduction --- README-el.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README-el.md b/README-el.md index 3569d3a..428e11d 100644 --- a/README-el.md +++ b/README-el.md @@ -1,3 +1,36 @@ +🌍 +*[Č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) ∙ [繁體中文](README-zh-Hant.md)* + + +# Η Τέχνη της Γραμμής Εντολών + +[![Ελάτε στη συζήτηση στο 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) +- [Τα βασικά](#basics) +- [Καθημερινή χρήση](#everyday-use) +- [Επεξεργασία αρχείων και δεδομένων](#processing-files-and-data) +- [Αποσφαλμάτωση συστήματος](#system-debugging) +- [Εντολές σε μία γραμμή](#one-liners) +- [Ασυνήθιστες αλλά χρήσιμες](#obscure-but-useful) +- [Μόνο για OS X](#os-x-only) +- [Περισσότερες πηγές](#more-resources) +- [Αποποίηση ευθύνης](#disclaimer) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους, αλλά βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. + + +Αυτή η εργασία είναι αποτέλεσμα [πολλών συγγραφέων και μεταφραστών](AUTHORS.md). +Μέρος της +[αρχικά](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[δημοσιεύτηκε](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +στο [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +αλλά έπειτα μετακινήθηκε στο GitHub, όπου άνθρωποι πιο ταλαντούχοι από τον αρχικό συγγραφέα έχουν κάνει πολυάριθμες βελτιώσεις. +[**Παρακαλώ συνεισφέρετε**](/CONTRIBUTING.md), αν δείτε ένα λάθος ή κάτι που μπορεί να βελτιωθεί! + ## Meta Αντικείμενο: From 290036acb4d22adb8cdc55ed38bd7bde2902d208 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 00:24:56 +0200 Subject: [PATCH 059/104] el: Translate the section "System debugging" --- README-el.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README-el.md b/README-el.md index 428e11d..4e14395 100644 --- a/README-el.md +++ b/README-el.md @@ -181,6 +181,47 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. +## Αποσφαλμάτωση συστήματος + +- Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). + +- Για να γνωρίζετε την τρέχουσα κατάσταση της CPU και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`, και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τη CPU ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. + +- Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. + +- Για μια γρήγορη επισκόπηση του τι συμβαίνει σε ένα σύστημα, η `dstat` είναι ιδιαίτερα χρήσιμη. Για καλύτερη επισκόπηση με λεπτομέρειες, χρησιμοποιήστε [`glances`](https://github.com/nicolargo/glances). + +- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η "cached" τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως "free" τιμή. + +- Η αποσφαλμάτωση συστημάτων Java είναι άλλη ιστορία, αλλά ένα απλό κόλπο για το JVM της Oracle και άλλων είναι να τρέξετε την εντολή `kill -3 ` και ένα πλήρες ίχνος στοίβας και περίληψη σωρού (συμπεριλαμβανομένων και λεπτομερειών που αφορούν τη συλλογή απορριμάτων σε γενιές, που μπορεί να είναι πολύ κατατοπιστικές) θα εμφανιστούν στο stderr/logs. Οι εντολές του JDK `jps`, `jstat`, `jstack`, `jmap` είναι χρήσιμες. [Τα εργαλεία SJK](https://github.com/aragozin/jvm-tools) είναι για πιο προχωρημένους. + +- Χρησιμοποιήστε την `mtr` ως μια βελτίωση της traceroute για να ανιχνεύετε ζητήματα του δικτύου. + +- Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. + +- Για να βρείτε ποιο socket ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. + +- Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. + +- Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. + +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). + +- Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. + +- Να γνωρίζετε πως να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. + +- Χρησιμοποιήστε την `/proc`. Είναι εκπληκτικά χρήσιμη ορισμένες φορές, όταν αποσφαλματώνετε live προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). + +- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για CPU, μνήμη, δίκτυο κλπ. + +- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), και [`sysdig`](https://github.com/draios/sysdig). + +- Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). + +- Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From f17da53491f429556c62e7c7bde76fe4119701ad Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Thu, 28 Jan 2016 11:58:27 +0800 Subject: [PATCH 060/104] sync with en version --- README-ru.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README-ru.md b/README-ru.md index a7607f8..7339f3a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -62,6 +62,8 @@ - Основы работы с сетью: `ip` или `ifconfig`, `dig`. +- Освойте работу с системой контроля версий, например, `git` + - Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. - Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). @@ -80,6 +82,8 @@ - Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. +- Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В `sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME` + - Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` - Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. @@ -105,6 +109,13 @@ - Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы. - Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. + +- Сохраняйте псевдонимы (aliases), настройки оболочки и частоиспользуемые сокращения в `~/.bashrc`, и [организуйте их подгрузку](http://superuser.com/a/183980/7106). Это сделает ваши настройки доступными во всех сессиях оболочки. + +- Пропишите настройки переменных окружения и команды, которые должны быть выполнены при входе в систему в файл `~/.bash_profile`. Отдельная настройка будет необходима для оболочек, которые запускаются из GUI и `cron`. + +- Синхронизируйте ваши конфигурационные файлы (например, `.bashrc` и `.bash_profile`) между разными компьютерами с помощью Git. + - Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. - В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): @@ -201,6 +212,8 @@ - Не забывайте, что локализация вашей системы влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют `LANG` или любую другую переменную в подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Рутины `i18n` могут *значительно* снизить производительность сортировок. В некоторых случаях можно полностью этого избегать (за исключением редких случаев), сортируя традиционно побайтово, для этого `export LC_ALL=C`. +- Вы можете установить специфическое окружение для команды с помощью префикса перед ее вызовом, например `TZ=Pacific/Fiji date`. + - Знайте основы `awk` и `sed` для простых манипуляций с данными. Например, чтобы получить сумму всех чисел, которые находятся в третьей колонке текстового файла, можно использовать `awk '{ x += $3 } END { print x }'`. Скорее всего, это получится раза в 3 быстрее и раза в 3 проще, чем делать это в Питоне. - Чтобы заменить все вхождения подстроки в одном или нескольких файлах: From a69d9f625b15bd27b919d357fd5e5681f2a56dab Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 20:50:32 +0200 Subject: [PATCH 061/104] el: Translate the section "Obscure but useful" --- README-el.md | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 4e14395..3adb389 100644 --- a/README-el.md +++ b/README-el.md @@ -12,7 +12,7 @@ - [Επεξεργασία αρχείων και δεδομένων](#processing-files-and-data) - [Αποσφαλμάτωση συστήματος](#system-debugging) - [Εντολές σε μία γραμμή](#one-liners) -- [Ασυνήθιστες αλλά χρήσιμες](#obscure-but-useful) +- [Ασυνήθιστες αλλά χρήσιμες](#ασυνήθιστες-αλλά-χρήσιμες) - [Μόνο για OS X](#os-x-only) - [Περισσότερες πηγές](#more-resources) - [Αποποίηση ευθύνης](#disclaimer) @@ -264,6 +264,133 @@ } ``` +## Ασυνήθιστες αλλά χρήσιμες + +- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή υπολογίστε κανονικές εκφράσεις + +- `m4`: απλός macro επεξεργαστής + +- `yes`: τυπώστε ένα αλφαριθμητικό πολλές φορές + +- `cal`: όμορφο ημερολόγιο + +- `env`: εκτελέστε μία εντολή (χρήσιμο σε scripts) + +- `printenv`: τυπώστε μεταβλητές περιβάλλοντος (χρήσιμο στην αποσφαλμάτωση και σε scripts) + +- `look`: βρείτε αγγλικές λέξεις (ή γραμμές σε ένα αρχείο) αρχίζοντας με ένα αλφαριθμητικό + +- `cut`, `paste` και `join`: επεξεργασία δεδομένων + +- `fmt`: μορφοποίηση παραγράφων + +- `pr`: μορφοποίηση κειμένου σε σελίδες/στήλες + +- `fold`: τύλιγμα γραμμών κειμένου + +- `column`: μορφοποίηση πεδίων κειμένου σε στοιχισμένες, σταθερού πλάτους στήλες ή πίνακες + +- `tree`: εμφανίστε καταλόγους και υποκαταλόγους σε φωλιασμένο δένδρο, όπως η `ls` αλλά αναδρομική + +- `stat`: πληροφορίες αρχείου + +- `time`: εκτελέστε και χρονομετρήστε μία εντολή + +- `timeout`: εκτελέστε μια εντολή για συγκεκριμένο χρονικό διάστημα και σταμάτησε τη διεργασία, όταν ολοκληρωθεί το χρονικό διάστημα αυτό + +- `lockfile`: δημιουργήστε αρχεία σημαφόρους που μπορούν να διαγραφούν μόνο με `rm -f` + +- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs + +- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα, εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές + +- `tac`: τυπώστε αρχεία ανεστραμμένα + +- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο + +- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή + +- `pv`: παρακολουθήστε την πρόοδο των δεδομένων κατά μήκος μίας σωλήνωσης + +- `hd`, `hexdump`, `xxd`, `biew` και `bvi`: δείτε ή επεξεργαστείτε το περιεχόμενο δυαδικών αρχείων + +- `strings`: εξάγετε κείμενο από δυαδικά αρχεία + +- `tr`: μετάφραση χαρακτήρων ή επεξεργασία + +- `iconv` ή `uconv`: μετατροπή κωδικοποίησης κειμένου + +- `split` και `csplit`: χώρισμα αρχείων + +- `sponge`: διαβάστε όλη την είσοδο πριν γράψετε σε αυτή, χρήσιμο όταν πρόκειται να διαβάσετε από ένα αρχείο και μετά να γράψετε σε αυτό, π.χ., `grep -v something some-file | sponge some-file` + +- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) + +- `apg`: δημιουργεί τυχαίους κωδικούς + +- `7z`: υψηλής αναλογίας συμπίεση αρχείων + +- `ldd`: πληροφορίες για δυναμικές βιβλιοθήκες + +- `nm`: σύμβολα από αντικειμενικά αρχεία + +- `ab`: συγκριτική αξιολόγηση web servers + +- `strace`: αποσφαλμάτωση κλήσης συστήματος + +- `mtr`: καλύτερο εργαλείο traceroute για αποσφαλμάτωση δικτύου + +- `cssh`: visual concurrent shell + +- `rsync`: συγχρονισμός αρχείων και καταλόγων μέσω SSH ή σε τοπικό σύστημα αρχείων + +- `wireshark` και `tshark`: συλλογή πακέτων και αποσφαλμάτωση συστήματος + +- `ngrep`: grep για το επίπεδο δικτύου + +- `host` και `dig`: αναζητήσεις DNS + +- `lsof`: επεξεργαστείτε περιγραφέα αρχείου και πληροφορίες socket + +- `dstat`: χρήσιμα στατιστικά συστήματος + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat`: στατιστικά χρήσης δίσκου + +- `mpstat`: στατιστικά χρήσης CPU + +- `vmstat`: στατιστικά χρήσης μνήμης + +- `htop`: βελτιωμένη έκδοση της top + +- `last`: ιστορικό σύνδεσης (login) + +- `w`: ποιος συνδέθηκε + +- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας + +- `sar`: ιστορικά στατιστικά συστήματος + +- `iftop` ή `nethogs`: χρήση δικτύου ανά socket ή διεργασία + +- `ss`: στατιστικά socket + +- `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος + +- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται + +- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA + +- `lsb_release`: πληροφορίες διανομής Linux + +- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, graphics, devices κλπ. + +- `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα + +- `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" From 8e9de53dcd50f9be93c18cd53b06b36e04cdb7df Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:01:16 +0200 Subject: [PATCH 062/104] el: Translate the section "OS X only" --- README-el.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README-el.md b/README-el.md index 3adb389..98b0236 100644 --- a/README-el.md +++ b/README-el.md @@ -392,5 +392,21 @@ - `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +## Μόνο για OS X +Τα παρακάτω σημεία σχετίζονται *μόνο* με OS X. + +- Διαχείριση πακέτων λογισμικού `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. + +- Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. + +- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". + +- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή, χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. + +- Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. + +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε αν βρίσκεται τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. + +- Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. From 3749c0296a90fa045c8752fec33940f2e21e7b52 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:07:04 +0200 Subject: [PATCH 063/104] el: Translate the section "Processing files and data" --- README-el.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 98b0236..78e58e6 100644 --- a/README-el.md +++ b/README-el.md @@ -181,6 +181,86 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. + +## Επεξεργασία αρχείων και δεδομένων + +- Για να εντοπίσετε ένα αρχείο με βάση το όνομά του στον τρέχοντα κατάλογο, `find . -iname '*something*'` (ή με παρόμοιο τρόπο). Για να βρείτε ένα αρχείο με το όνομά του οπουδήποτε, χρησιμοποιήστε `locate something` (αλλά να έχετε στον νου σας ότι η `updatedb` μπορεί να μην έχει δημιουργήσει ευρετήριο για αρχεία που δημιουργήθηκαν πρόσφατα). + +- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`), χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). + +- Για να μετατρέψετε HTML σε κείμενο: `lynx -dump -stdin` + +- Για Markdown, HTML και άλλου είδους μετατροπές κειμένου, δοκιμάστε [`pandoc`](http://pandoc.org/). + +- Αν χρειάζεται να χειριστείτε XML, `xmlstarlet` είναι παλιά αλλά καλή. + +- Για JSON, χρησιμοποιήστε [`jq`](http://stedolan.github.io/jq/). + +- Για YAML, χρησιμοποιήστε [`shyaml`](https://github.com/0k/shyaml). + +- Για αρχεία Excel ή CSV , η [csvkit](https://github.com/onyxfish/csvkit) παρέχει τις `in2csv`, `csvcut`, `csvjoin`, `csvgrep` κλπ. + +- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. + +- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- δείτε τις εντολές σε μία γραμμή παρακάτω. Δείτε επίσης `comm`. + +- Να γνωρίζετε για τις `cut`, `paste`, και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut` αλλά ξεχνούν την `join`. + +- Να γνωρίζετε για την `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). + +- Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. + +- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότν η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες entirely και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. + +- Μπορείτε να ορίσετε ένα συγκεκριμένο περιβάλλον για μία εντολή προσθέτοντάς της ως πρόθεμα τις ρυθμίσεις της μεταβλητής περιβάλλοντος, όπως στην `TZ=Pacific/Fiji date`. + +- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορα και σύντομα από την αντίστοιχη υλοποίηση σε Python. + +- Για να αντικαταστήσετε επί τόπου όλες τις εμφανίσεις ενός αλφαριθμητικού σε ένα ή περισσότερα αρχεία: +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` + +- Για να μετονομάσετε πολλά και/ή να αναζητήσετε και να αντικαταστήσετε σε αρχεία, δοκιμάστε την [`repren`](https://github.com/jlevy/repren). (Σε ορισμένες περιπτώσεις η εντολή `rename` επιτρέπει επίσης πολλαπλές μετονομασίες, αλλά να είστε προσεχτικοί καθώς δε συμπεριφέρεται με τον ίδιο τρόπο σε όλες τις διανομές Linux.) +```sh + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- Χρησιμοποιήστε την `shuf` για να ανακατέψετε ή να επιλέξετε τυχαίες γραμμές από ένα αρχείο. + +- Να γνωρίζετε τις επιλογές της `sort`. Για αριθμούς χρησιμοποιήστε τις `-n`, ή `-h` για χειρισμό αριθμών που είναι εύκολο να διαβαστούν από άνθρωπο (π.χ. από `du -h`). Να γνωρίζετε πως λειτουργούν τα πλήκτρα (`-t` και `-k`). Συγκεκριμένα, προσέξτε ότι χρειάζεται να γράψετε `-k1,1` για να ταξινομήσετε με βάση μόνο το πρώτο πεδίο· `-k1` σημαίνει ταξινόμηση με βάση όλη τη γραμμή. Η σταθερή ταξινόμηση (`sort -s`) μπορεί να είναι χρήσιμη. Για παράδειγμα, για να ταξινομήσετε πρώτα με βάση το πεδίο 2 και δευτερευόντως με βάση το πεδίο 1, μπορείτε να χρησιμοποιήσετε `sort -k1,1 | sort -s -k2,2`. + +- Αν πότε χρειαστεί να γράψετε έναν χαρακτήρα στηλοθέτη στη γραμμή εντολών στον Bash (π.χ. για να ταξινομήσετε με βάση το όρισμα της επιλογής -t), πιέστε **ctrl-v** **[Tab]** ή γράψτε `$'\t'` (το τελευταίο είναι καλύτερο, γιατί μπορείτε να το αντιγράψετε/επικολλήσετε). + +- Τα συνήθη εργαλεία διόρθωσης πηγαίου κώδικα είναι οι εντολές `diff` και `patch`. Επίσης, δείτε την `diffstat` για περίληψη στατιστικών στοιχείων μίας diff και `sdiff` για εμφάνιση diff πλάι-πλάι. Σημειώστε ότι η `diff -r` λειτουργεί για ολόκληρους καταλόγους. Χρησιμοποιήστε την `diff -r tree1 tree2 | diffstat` για μια περίληψη αλλαγών. Χρησιμοποιήστε την `vimdiff` για να συγκρίνετε και να επεξεργαστείτε αρχεία. + +- Για δυαδικά αρχεία, χρησιμοποιήστε τις `hd`, `hexdump` ή την `xxd` για απλά δεκαεξαδικά dumps και τις `bvi` ή `biew` για επεξεργασία σε δυαδική μορφή. + +- Επίσης, για δυαδικά αρχεία η `strings` (και η `grep` κλπ.) σας δίνει τη δυνατότητα να βρείτε bits κειμένου. + +- Για δυαδικές διαφορές (συμπίεση δέλτα), χρησιμοποιήστε `xdelta3`. + +- Για να μετατρέψετε κωδικοποίηση κειμένου, δοκιμάστε την `iconv`. Ή `uconv` για πιο προχωρημένη χρήση· υποστηρίζει πιο προχωρημένα Unicode πράγματα. Για παράδειγμα, μετατρέπει σε πεζούς χαρακτήρες και απαλείφει τους τόνους (by expanding and dropping them): +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Για να σπάσετε αρχεία σε κομμάτια, δείτε τη `split` (για να σπάσετε με βάση το μέγεθος) και τη `csplit` (για να σπάσετε με βάση πρότυπο). + +- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). + +- Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). @@ -221,7 +301,6 @@ - Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). - ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From 382a4a4e877f92d29d6ed676c5d5dad711f24220 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:08:25 +0200 Subject: [PATCH 064/104] el: Translate the section "More resources" --- README-el.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-el.md b/README-el.md index 78e58e6..bb4588d 100644 --- a/README-el.md +++ b/README-el.md @@ -489,3 +489,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. +## Περισσότερες πηγές + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Μία προσεγμένη λίστα με εργαλεία και πηγές σχετικές με τον φλοιό . +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Ένας περισσότερο εις βάθος οδηγός της γραμμής εντολών του OS X. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. +- [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. + + From 3ba89b88c2fe1226e304bf487b4214ab27d5248f Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:11:01 +0200 Subject: [PATCH 065/104] el: Translate the section "Disclaimer" --- README-el.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-el.md b/README-el.md index bb4588d..d881428 100644 --- a/README-el.md +++ b/README-el.md @@ -497,4 +497,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. +## Αποποίηση ευθύνης + +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) From be7c0a24d62efcd5f0ca9e8673eecb9337786a58 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:12:26 +0200 Subject: [PATCH 066/104] el: Translate the section "License" --- README-el.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README-el.md b/README-el.md index d881428..1f3ff95 100644 --- a/README-el.md +++ b/README-el.md @@ -501,3 +501,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +## Άδεια χρήσης + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Η εργασία αυτή έχει αδειοδοτηθεί με [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). + + From b5d0cbda4d3489a5d0eb974281699ad06c3b1597 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 22:07:58 +0200 Subject: [PATCH 067/104] el: Polish the translation --- README-el.md | 62 ++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README-el.md b/README-el.md index 1f3ff95..823eedb 100644 --- a/README-el.md +++ b/README-el.md @@ -42,14 +42,14 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά -- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). +- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό όσο δουλεύετε στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). -- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE, ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). +- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). - Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. @@ -69,7 +69,7 @@ - Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. -- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). ## Καθημερινή χρήση @@ -102,7 +102,7 @@ - Να γνωρίζετε τα διάφορα σήματα που μπορείτε να στείλετε σε διεργασίες. Για παράδειγμα, για να αναστείλετε μία διεργασία χρησιμοποιήστε `kill -STOP [pid]`. Για ολόκληρη τη λίστα, δείτε `man 7 signal` -- Χρησιμοποιήστε `nohup` ή `disown` αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. +- Χρησιμοποιήστε `nohup` ή `disown`, αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. - Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). @@ -120,7 +120,7 @@ - Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. -- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που εμφανίζονται σε σωληνώσεις εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -148,11 +148,11 @@ - Χρησιμοποιήστε `man ascii` για έναν καλό πίνακα ASCII, με δεξαεξαδικές και δεκαδικές τιμές. Για γενικές πληροφορίες που αφορούν την κωδικοποίηση, οι `man unicode`, `man utf-8` και `man latin1`είναι χρήσιμες. -- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία των σημάτων της οθόνης, ιδιαίτερα χρήσιμο σε απομακρυσμένες ssh sessions και για να διακόψετε ή να επαναφέρετε ένα session. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση sessions είναι η `dtach`. +- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία των σημάτων της οθόνης, ιδιαίτερα χρήσιμο σε απομακρυσμένα ssh sessions και για να διακόψετε ή να επαναφέρετε ένα session. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση sessions είναι η `dtach`. - Με ssh, το να γνωρίζετε πως να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. -- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που πέφτουν σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: +- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -165,9 +165,9 @@ - Μερικές άλλες επιλογές σχετικές με την ssh είναι ευαίσθητες όσον αφορά την ασφάλεια και θα πρέπει να ενεργοποιούνται με προσοχή, π.χ. ανά υποδίκτυο ή host ή σε έμπιστα δίκτυα: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- ´Εχετε υπόψη σας την εντολή [`mosh`](https://mosh.mit.edu/) ως μία εναλλακτική της ssh που χρησιμοποιεί UDP, αποφεύγοντας τις συνδέσεις που πέφτουν και διευκολύνοντας τη διαδικασία (απαιτεί ρύθμιση στον server). +- ´Εχετε υπόψη σας την εντολή [`mosh`](https://mosh.mit.edu/) ως μία εναλλακτική της ssh που χρησιμοποιεί UDP, αποφεύγοντας τις συνδέσεις που διακόπτονται και διευκολύνοντας τη διαδικασία (απαιτεί ρύθμιση στον server). -- Για να πάρετε τα δικαιώματα ενός αρχείου σε οκταδική μορφή, πράγμα που είναι χρήσιμο για την παραμετροποίηση του συστήματος αλλά δεν είναι διαθέσιμο με την `ls` και είναι εύκολο να γίνει άτσαλα, χρησιμοποιήστε κάτι όπως +- Για να πάρετε τα δικαιώματα ενός αρχείου σε οκταδική μορφή, πράγμα που είναι χρήσιμο για την παραμετροποίηση του συστήματος, αλλά δεν είναι διαθέσιμο με την `ls` και είναι εύκολο να γίνει άτσαλα, χρησιμοποιήστε κάτι όπως ```sh stat -c '%A %a %n' /etc/timezone ``` @@ -177,7 +177,7 @@ - Για διάδραση με αρχεία με βάση την έξοδο μιας άλλη εντολής (όπως της `git`), χρησιμοποιήστε `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). - Για έναν απλό web server και για όλα τα αρχεία στον τρέχοντα κατάλογο (και υποκαταλόγους) διαθέσιμα σε οποιονδήποτε στο δίκτυο, χρησιμοποιήστε: -`python -m SimpleHTTPServer 7777` (για τη θύρα 7777 και Python 2) και `python -m http.server 7777` (για θύρα 7777 και Python 3). +`python -m SimpleHTTPServer 7777` (για τη θύρα 7777 και Python 2) και `python -m http.server 7777` (για τη θύρα 7777 και Python 3). - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. @@ -186,13 +186,13 @@ - Για να εντοπίσετε ένα αρχείο με βάση το όνομά του στον τρέχοντα κατάλογο, `find . -iname '*something*'` (ή με παρόμοιο τρόπο). Για να βρείτε ένα αρχείο με το όνομά του οπουδήποτε, χρησιμοποιήστε `locate something` (αλλά να έχετε στον νου σας ότι η `updatedb` μπορεί να μην έχει δημιουργήσει ευρετήριο για αρχεία που δημιουργήθηκαν πρόσφατα). -- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`), χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). +- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`) χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). - Για να μετατρέψετε HTML σε κείμενο: `lynx -dump -stdin` - Για Markdown, HTML και άλλου είδους μετατροπές κειμένου, δοκιμάστε [`pandoc`](http://pandoc.org/). -- Αν χρειάζεται να χειριστείτε XML, `xmlstarlet` είναι παλιά αλλά καλή. +- Αν χρειάζεται να χειριστείτε XML, η `xmlstarlet` είναι παλιά αλλά καλή. - Για JSON, χρησιμοποιήστε [`jq`](http://stedolan.github.io/jq/). @@ -200,21 +200,21 @@ - Για αρχεία Excel ή CSV , η [csvkit](https://github.com/onyxfish/csvkit) παρέχει τις `in2csv`, `csvcut`, `csvjoin`, `csvgrep` κλπ. -- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. +- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) είναι βολική και η [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. -- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- δείτε τις εντολές σε μία γραμμή παρακάτω. Δείτε επίσης `comm`. +- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- παρακάτω δείτε το κομμάτι που αφορά τις εντολές σε μία γραμμή. Δείτε επίσης την `comm`. -- Να γνωρίζετε για τις `cut`, `paste`, και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut` αλλά ξεχνούν την `join`. +- Να γνωρίζετε για τις `cut`, `paste` και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut`, αλλά ξεχνούν την `join`. -- Να γνωρίζετε για την `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). +- Να γνωρίζετε για τη `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). - Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. -- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότν η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες entirely και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. +- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες σχετικές με locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότι η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. - Μπορείτε να ορίσετε ένα συγκεκριμένο περιβάλλον για μία εντολή προσθέτοντάς της ως πρόθεμα τις ρυθμίσεις της μεταβλητής περιβάλλοντος, όπως στην `TZ=Pacific/Fiji date`. -- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορα και σύντομα από την αντίστοιχη υλοποίηση σε Python. +- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορο και σύντομο από την αντίστοιχη υλοποίηση σε Python. - Για να αντικαταστήσετε επί τόπου όλες τις εμφανίσεις ενός αλφαριθμητικού σε ένα ή περισσότερα αρχεία: ```sh @@ -257,7 +257,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να σπάσετε αρχεία σε κομμάτια, δείτε τη `split` (για να σπάσετε με βάση το μέγεθος) και τη `csplit` (για να σπάσετε με βάση πρότυπο). -- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). +- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). - Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. @@ -285,7 +285,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. -- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). - Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). -- Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). +- Χρησιμοποιήστε την `dmesg`, όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). ## Εντολές σε μία γραμμή @@ -381,7 +381,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs -- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα, εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές +- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές - `tac`: τυπώστε αρχεία ανεστραμμένα @@ -389,7 +389,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή -- `pv`: παρακολουθήστε την πρόοδο των δεδομένων κατά μήκος μίας σωλήνωσης +- `pv`: παρακολουθήστε την πορεία των δεδομένων κατά μήκος μίας σωλήνωσης - `hd`, `hexdump`, `xxd`, `biew` και `bvi`: δείτε ή επεξεργαστείτε το περιεχόμενο δυαδικών αρχείων @@ -403,7 +403,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sponge`: διαβάστε όλη την είσοδο πριν γράψετε σε αυτή, χρήσιμο όταν πρόκειται να διαβάσετε από ένα αρχείο και μετά να γράψετε σε αυτό, π.χ., `grep -v something some-file | sponge some-file` -- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) +- `units`: μετατροπές μονάδων και υπολογισμοί· κάνει ό,τι μετατροπές μπορείτε να σκεφτείτε (δείτε επίσης `/usr/share/units/definitions.units`) - `apg`: δημιουργεί τυχαίους κωδικούς @@ -433,7 +433,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `dstat`: χρήσιμα στατιστικά συστήματος -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): υψηλού επιπέδου επισκόπηση πολλαπλών υποσυστημάτων - `iostat`: στατιστικά χρήσης δίσκου @@ -465,7 +465,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους -- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, graphics, devices κλπ. +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα @@ -475,19 +475,19 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Τα παρακάτω σημεία σχετίζονται *μόνο* με OS X. -- Διαχείριση πακέτων λογισμικού `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. +- Διαχείριση πακέτων λογισμικού με `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. - Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. - Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". -- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή, χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. +- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε αν βρίσκεται τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. -- Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. +- Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. ## Περισσότερες πηγές From ac24cf9c9e16948a88130ff07c8b379f44ffd075 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 29 Jan 2016 03:40:41 +0100 Subject: [PATCH 068/104] sl: update translation --- README-sl.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README-sl.md b/README-sl.md index 9868289..e9a9fc2 100644 --- a/README-sl.md +++ b/README-sl.md @@ -65,6 +65,8 @@ Opombe: - Osnovno upravljanje omrežja: `ip` or `ifconfig`, `dig`. +- Naučite se in uporabljajte sistem za nadzor različic, kot je `git`. + - Poznajte tudi splošne izraze in različne zastavice za `grep`/`egrep`. Opcije `-i`, `-o`, `-v`, `-A`, `-B` in `-C` so vredne poznavanja. - Naučite se uporabljati `apt-get`, `yum`, `dnf` ali `pacman` (odvisno od distribucije), da najdete in namestite pakete. In zagotovite, da imate `pip`, da lahko nameščate orodja ukazne vrstice na osnovi Python-a (nekaj spodnjih je najenostavneje namestiti preko `pip`). @@ -83,6 +85,8 @@ Opombe: - Da vidite nedavne ukaze, `history`. Na voljo je tudi veliko okrajšav, kot je `!$` (zadnji argument) in `!!` zadnji ukaz, čeprav so te pogostokrat enostavno zamenjani s **ctrl-r** in **alt-.**. +- Pojdite v vaš domači direktorij s `cd`. Dostopajte do datotek relativno glede na vaš domači direktorij s predpono `~` (npr. `~/.bashrc`). V `sh` skriptah se sklicujte na domači direktorij kot `$HOME`. + - Da greste nazaj na prejšnji delovni dirketorij: `cd -` - Če ste na pol poti skozi vpisovanje ukaza, vendar si premislite, vtipkajte **alt-#**, da dodate `#` na začetek in ga vnesete kot komentar (ali uporabite **ctrl-a**, **#**, **enter**). Nato se lahko vrnete k njemu kasneje preko zgodovine ukazov. @@ -110,6 +114,12 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. +- Shranite aliase, nastavitve lupine in funkcije, ki jih pogosto uporabljate v `~/.bashrc` in [uredite prijave lupin za izvorno kodo](http://superuser.com/a/183980/7106). To bo naredilo vašo namestitev na voljo v vseh sejah vaše lupine. + +- Dajte nastavitve spremenljivk okolja kot tudi ukaze, ki bi morali biti izvršeni, ko se prijavite v `~/.bash_profile`. Ločena nastavitev bo potrebna za lupine, ki jih zaženete iz prijave grafičnega okolja in s periodičnimi opravili `cron`. + +- Sinhronizirajte vaše nastavitvene datoteke (npr. `.bashrc` in `.bash_profile`) med različnimi računalniki s pomočjo Git. + - 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: @@ -204,6 +214,8 @@ Opombe: - Vedite, da lokalizacija vpliva na veliko orodij ukazne vrstice na subtilne načine, vključno z vrstnim redom (kolokacijo) in uspešnostjo. Večina namestitev Linux-a bo nastavila `LANG` ali druge spremenljivke lokalizacije na lokalne nastavitve kot je US English. Vendar bodite pozorni, saj se bo vrstni red spremenil, če spremenite lokalizacijo. In vedite, da rutine i18n lahko naredijo sortiranje ali poganjanje drugih ukazov *nekajkrat* počasnejše. V nekaterih situacijah (kot je skupek operacij ali unikatnih operacij spodaj) lahko v celoti varno ignorirate počasne rutine i18n in uporabite tradicionalne vrstne rede na osnovi bajtov z uporabo `export LC_ALL=C`. +- Nastavite lahko določeno okolje ukaza s predpono njegovega sklicevanja na nastavitve spremenljivk okolja, kot pri `TZ=Pacific/Fiji date`. + - Spoznajte osnove `awk` in `sed` za enostavno manipuliranje podatkov. Na primer, povzetek vseh številk v tretjem stolpcu tekstovne datoteke: `awk '{ x += $3 } END { print x }'`. To je verjetno 3X hitrejše in 3X krajše kot ekvivalent v Python-u. - Da zamenjate vsa pojavljanja niza na mestu v eni ali večih datotekah: From 247ccfb06e9f8cb34554f522e60eae29587be522 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Fri, 29 Jan 2016 14:00:59 +0200 Subject: [PATCH 069/104] Diverse small changes following agreed review --- README-el.md | 103 ++++++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/README-el.md b/README-el.md index 823eedb..26be839 100644 --- a/README-el.md +++ b/README-el.md @@ -20,7 +20,8 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους, αλλά βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. +Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους. +Όμως η ευχέρια αυτή βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. Αυτή η εργασία είναι αποτέλεσμα [πολλών συγγραφέων και μεταφραστών](AUTHORS.md). @@ -35,7 +36,7 @@ Αντικείμενο: -- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. +- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. - Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. @@ -51,39 +52,39 @@ - Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). -- Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. +- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. - Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. -- Μάθετε για την επέκταση αρχείων glob με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) +- Μάθετε για την επέκταση αρχείων μπαλαντέρ (glob) με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) - Εξοικειωθείτε με τη διαχείριση εργασιών στον Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` κλπ. - Να γνωρίζετε την εντολή `ssh` και τα βασικά της αυθεντικοποίησης χωρίς κωδικό με χρήση των `ssh-agent`, `ssh-add` κλπ. -- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη της `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). +- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη που εμφανίζει η `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). - Βασική διαχείριση δικτύου: `ip` ή `ifconfig`, `dig`. - Μάθετε και χρησιμοποιήστε ένα σύστημα διαχείρισης και ελέγχου εκδόσεων, όπως το `git`. -- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. +- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`και `-C` αξίζει να τις γνωρίζετε. -- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +- Μάθετε να χρησιμοποιείτε τις εντολές `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή του λειτουργικού σας συστήματος) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). ## Καθημερινή χρήση - Στον Bash, χρησιμοποιήστε **Tab** για να ολοκληρώσετε ορίσματα ή να εμφανίσετε σε λίστα όλες τις διαθέσιμες εντολές, **ctrl-r** για να αναζητήσετε στο ιστορικό των εντολών (αφού πατήσετε, πληκτρολογήστε για να αναζητήσετε, πατήστε **ctrl-r** επαναλαμβανόμενα για να περιηγηθείτε σε περισσότερα αποτελέσματα αναζήτησης, πατήστε **Enter** για να εκτελέσετε την εντολή που βρήκατε ή πατήστε το δεξί βέλος για να μεταφέρετε το αποτέλεσμα στην τρέχουσα γραμμή ώστε να μπορείτε να το επεξεργαστείτε). -- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα glob. +- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα μπαλαντέρ (glob). - Εναλλακτικά, αν σας αρέσουν οι συντομεύσεις τύπου vi, χρησιμοποιήστε `set -o vi` (και `set -o emacs` για να επαναφέρετε). -- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή όπως γίνεται με vi, **escape-v**. +- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή αν έχετε ορίσει συντομεύσεις τύπου vi, **escape-v**. - Για να δείτε πρόσφατες εντολές, `history`. Επίσης, υπάρχουν πολλές συντομεύσεις όπως `!$` (τελευταίο όρισμα) και `!!` (τελευταία εντολή), αν και συχνά αντικαθίστανται από **ctrl-r** και **alt-.**. -- Πηγαίνετε στον κατάλογο home με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον home κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον κατάλογο home ως `$HOME`. +- Πηγαίνετε στον προσωπικό σας κατάλογο (home) με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον προσωπικό κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον προσωπικό σας κατάλογο ως `$HOME`. - Για να πάτε στον προηγούμενο κατάλογο όπου εργαζόσαστε: `cd -`. @@ -106,21 +107,21 @@ - Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). -- Δείτε επίσης `lsof` για ανοιχτά sockets και αρχεία. +- Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. -- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`, και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. +- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. - Βάλτε τις ρυθμίσεις των μεταβλητών περιβάλλοντος καθώς και τις εντολές που χρειάζεται να εκτελεστούν με την είσοδό σας στο `~/.bash_profile`. Ξεχωριστές ρυθμίσεις θα χρειαστούν για τους φλοιούς που εκτελούνται από είσοδο από γραφικό περιβάλλον και εργασίες `cron`. - Συγχρονίστε τα αρχεία με τις ρυθμίσεις σας (π.χ. `.bashrc` και `.bash_profile`) μεταξύ διαφορετικών υπολογιστών χρησιμοποιώντας Git. -- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. +- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόχο επανάληψης `for`, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. -- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, που γράφει τα πρωτογενή στοιχεία, όπως σχόλια και μεταβλητές πριν αντικατασταθούν) για να τα αποσφαλματώσετε. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -144,13 +145,13 @@ - Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει έναν χειριστή αρχείου ανοιχτό στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει μια σύνδεση αρχείου ανοιχτή στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `; ::Any-NFC; ' < input.txt > output.txt ``` @@ -259,13 +260,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). -- Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. +- Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). -- Για να γνωρίζετε την τρέχουσα κατάσταση της CPU και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`, και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τη CPU ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. +- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. - Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. @@ -279,23 +280,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. -- Για να βρείτε ποιο socket ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. +- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. - Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. -- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή μέτρησης (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). - Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. -- Να γνωρίζετε πως να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. +- Να γνωρίζετε πώς να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. -- Χρησιμοποιήστε την `/proc`. Είναι εκπληκτικά χρήσιμη ορισμένες φορές, όταν αποσφαλματώνετε live προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). +- Χρησιμοποιήστε τον κατάλογο `/proc`. Είναι εκπληκτικά χρήσιμος ορισμένες φορές, όταν αποσφαλματώνετε ζωντανά προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). -- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για CPU, μνήμη, δίκτυο κλπ. +- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για επεξεργαστή, μνήμη, δίκτυο κλπ. -- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), και [`sysdig`](https://github.com/draios/sysdig). +- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))και [`sysdig`](https://github.com/draios/sysdig). - Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). @@ -305,11 +306,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Μερικά παραδείγματα σωλήνωσης εντολών: -- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Έστωσαν `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H Sort δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρό root διαμέρισμα. Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). +- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Ας πούμε ότι έχετε `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H `sort` δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρή κατάτμηση (partition). Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). ```sh - cat a b | sort | uniq > c # c is a union b - cat a b | sort | uniq -d > c # c is a intersect b - cat a b b | sort | uniq -u > c # c is set difference a - b + cat a b | sort | uniq > c # το c είναι a ένωση b + cat a b | sort | uniq -d > c # c είναι a τομή b + cat a b b | sort | uniq -u > c # το c είναι a διαφορά b ``` - Χρησιμοποιήστε `grep . *` για να εξετάσετε γρήγορα το περιεχόμενο όλων των αρχείων ενός καταλόγου (έτσι κάθε γραμμή αρχείου εμφανίζεται σε ζεύγος με το όνομα του αρχείου), ή `head -100 *` (έτσι κάθε αρχείο έχει μια κεφαλίδα). Αυτό μπορεί να είναι χρήσιμο για καταλόγους γεμάτους με αρχεία ρυθμίσεων όπως αυτά στους καταλόγους `/sys`, `/proc`, `/etc`. @@ -325,7 +326,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir find . -type f -ls ``` -- Έστω ότι έχετε ένα αρχείο κειμένου, όπως log ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` @@ -345,9 +346,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Ασυνήθιστες αλλά χρήσιμες -- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή υπολογίστε κανονικές εκφράσεις +- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή εφαρμόζετε κανονικές εκφράσεις -- `m4`: απλός macro επεξεργαστής +- `m4`: απλός μακροεπεξεργαστής - `yes`: τυπώστε ένα αλφαριθμητικό πολλές φορές @@ -379,7 +380,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lockfile`: δημιουργήστε αρχεία σημαφόρους που μπορούν να διαγραφούν μόνο με `rm -f` -- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs +- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με ηλ-ταχ αρχεία καταγραφής (logs). - `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές @@ -429,7 +430,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `host` και `dig`: αναζητήσεις DNS -- `lsof`: επεξεργαστείτε περιγραφέα αρχείου και πληροφορίες socket +- `lsof`: εμφανίστε περιγραφείς αρχείου και πληροφορίες δικτυακών συνδέσεων - `dstat`: χρήσιμα στατιστικά συστήματος @@ -437,7 +438,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `iostat`: στατιστικά χρήσης δίσκου -- `mpstat`: στατιστικά χρήσης CPU +- `mpstat`: στατιστικά χρήσης επεξεργαστή - `vmstat`: στατιστικά χρήσης μνήμης @@ -451,9 +452,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή `nethogs`: χρήση δικτύου ανά socket ή διεργασία +- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία -- `ss`: στατιστικά socket +- `ss`: στατιστικά ανά δικτυακή σύνδεση - `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος @@ -465,11 +466,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους -- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, γραφικών, συσκευών κλπ. +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" ## Μόνο για OS X @@ -485,7 +486,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. @@ -495,11 +496,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Ένας περισσότερο εις βάθος οδηγός της γραμμής εντολών του OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. -- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πώς να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. ## Αποποίηση ευθύνης -Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφετε ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) ## Άδεια χρήσης From 593b5ca5ead4d5e9fc9a7966ac9eed673ec6c0f8 Mon Sep 17 00:00:00 2001 From: _anna Date: Sat, 30 Jan 2016 13:07:37 +0200 Subject: [PATCH 070/104] el: Fix minor typo --- README-el.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 26be839..2784804 100644 --- a/README-el.md +++ b/README-el.md @@ -500,7 +500,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Αποποίηση ευθύνης -Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφετε ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφεται ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) ## Άδεια χρήσης From 1380920e1b8e957352950fbd1361e57f598b6dd1 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 1 Feb 2016 03:30:07 +0200 Subject: [PATCH 071/104] sync Ukraine translate with English version --- README-uk.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index 782b4f2..1971332 100644 --- a/README-uk.md +++ b/README-uk.md @@ -23,7 +23,8 @@ Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують Вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в Linux. Деякі з них - прості та очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md). -Багато з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), почавши там, схоже, що варто розмістити і на Github, де знаходяться дуже талановиті люди і можуть допомогти. Якщо Ви замітили помилки (чи у будь-якому із перекладів), будь ласка залиште опис [issue](https://github.com/jlevy/the-art-of-command-line/issues) або зробіть Pull requests (звичайно перевіривши уже існуючі). +Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де знаходяться дуже талановиті люди які зробили багато удосконалень. +[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви замітили помилку або можете щось покращити! ## Опис @@ -52,6 +53,7 @@ - Знайте `ssh` та основи беспарольної аутентифікації через `ssh-agent`, `ssh-add`, і т.д. - Основи роботи з файлами: `ls` і `ls -l` (зокрема, дізнайтеся, що значить кожен стовпець в `ls -l`), `less`, `head`,` tail` і `tail -f` (або навіть краще - `less + F`), `ln` і `ln -s` (дізнайтеся різницю між символьними посиланнями і жорсткими посиланнями, і чому жорсткі посилання краще), `chown`, `chmod`, `du` (для отримання швидкої інформації по використанню диска: `du -hk *`). Для менеджменту файлової системи, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Основи роботи з мережею: `ip` або `ifconfig`, `dig`. +- Вивчіть і використовуйте систему управління версіями, наприклад таку як `git`. - Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. - Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). @@ -63,6 +65,7 @@ - Якщо Вам подобаються шорткати vim, виконайте `set -o vi` (`set -o emacs` що б повернути налаштування). - Для редагування довгих команд після налаштування вашого консольного редактора (наприклад `export EDITOR=vim`), **ctrl-x** **ctrl-e** відкриє поточну команду в редакторі для багаторядкового редагування команди. Або у vi стилі, **escape-v**. - Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються шорткати **ctrl-r** та **alt-.**. +- Перейти в домашню директорию можна за допомогою `cd`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` - Якщо Ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. - Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: @@ -78,6 +81,10 @@ - Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. - Команда `uptime` or `w` показує як довго працює система. - Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. +- Збережіть свої синоніми (aliases), налаштування і фунції які Ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх Ваших сесіях shell. +- Синхронізуйте Ваші конфігураційні файли (наприклад `.bashrc` та `.bash_profile`) між різними комп'ютерами за допомогою Git. +- Вставте настройки змінних середовища і команди, які повинні бути виконані при вході у систему в файл `~/.bash_profile`. Окремі налаштування будуть потрібні для оболонок, які запускаються із під графічного інтерфейсу та з під `cron` задач. +- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть Ваші Bash змінні в подвійні кавички: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть Ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. - У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. Корисною буде звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилках і вивести повідомлення: ```bash @@ -140,6 +147,7 @@ - Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`). - Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`. - Не забувайте, що Ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для Вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. +- Вb можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`. - Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. - Щоб замінити всі знаходження підрядка в одному або декількох файлах: ```sh From 296caf610a3f06fcf7d3fc9f34e9588fe67381e5 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 1 Feb 2016 03:40:39 +0200 Subject: [PATCH 072/104] fix links --- README-uk.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README-uk.md b/README-uk.md index 1971332..27e4ebd 100644 --- a/README-uk.md +++ b/README-uk.md @@ -13,7 +13,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [Тільки для OS X](#os-x-only) +- [Тільки для OS X](#Тільки-для-os-x) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) @@ -32,7 +32,7 @@ Основне: - Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). -- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#os-x-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#Тільки-для-os-x)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). - Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. @@ -42,7 +42,7 @@ - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. -##Основи +## Основи - Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на Вашому лептопі і ні в чому Вас не обмежують, наприклад Ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). - Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо Ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор). @@ -58,7 +58,7 @@ - Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). -##Щоденне-використання +## Щоденне використання - Використовуйте клавішу таб в Bash для автодоповнення аргументів до команд та **ctrl-r** для пошуку по історії командного рядка. - Використовуйте **ctrl-w** в Bash для того, щоб видалити останнє слово в команді; **ctrl-u** для того, щоб видалити команду повністю. Використовуйте **alt-b** і **alt-f** для того, щоб переміщатись між словами у команді, **ctrl-k** для того, щоб перейти в кінець рядка, **ctrl-l** для того, щоб очистити екран. Гляньте на `man readline` щоб дізнатися про всі шорткати Bash. Їх багато! Наприклад, **alt-.** переміщається між попередніми аргументам команди, а **alt-*** максимально розширює аргументи. @@ -131,7 +131,7 @@ - Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або gsl іншим користувачем. -##Обробка-файлів-та-інформації +## Обробка файлів та інформації - Для того, щоб знайти файл в поточній директорії, виконайте `find. -iname '*something*'`. Для того, щоб шукати файл по всій системі, використовуйте `locate something` (але не забувайте, що `updatedb` міг ще не проіндексувати нещодавно створені файли). - Для пошуку по вмісту або фалах (більш детально зробити пошук допоможе `grep -r`) використовуйте [`ag`](https://github.com/ggreer/the_silver_searcher). @@ -180,7 +180,7 @@ - Використовуйте `zless`, `zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. -##Дебаггінг +## Дебаггінг - Для веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). - Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`, `netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. @@ -202,7 +202,7 @@ - Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами). -##Одним-рядком +## Одним рядком Кілька прикладів склеювання команд: - Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше: @@ -241,7 +241,7 @@ ``` -##Складно-але-корисно +## Складно але корисно - `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів - `m4`: простий макро-процесор @@ -320,7 +320,7 @@ - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -##os-x-only +## Тільки для OS X Деякі речі, які підходять *тільки* для Мака. @@ -331,7 +331,7 @@ - Не забувайте, що MacOS створений на основі BSD Unix і багато команд (наприклад `ps`, `ls`, `tail`, `awk`, `sed`) мають невеликі відмінності від лінуксових. Це обумовлено впливом `UNIX System V` і `GNU Tools`. Різницю можна помітити, побачивши заголовок "BSD General Commands Manual." Інколи на MacOS можна поставити GNU-версії програм, наприклад `gawk` і `gsed`. Коли пишете кросплатформені Bash-скрипти, намагайтеся уникати використовувати команди, які можуть відрізнятися (наприклад, краще використовуйте Python або `perl`), або ретельно все перевіряйте. -##Інші-джерела +## Інші джерела - [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the Mac OS command line. @@ -340,7 +340,7 @@ - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): The sadly complex minutiae on how to handle filenames correctly in shell scripts. -##Декламація +## Декламація За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) From 8f94e44f8fbd5e7949c33db438a8e24ff817a30a Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 31 Jan 2016 18:06:48 -0800 Subject: [PATCH 073/104] Greek translation links. Follow-up to #366. --- README-cs.md | 2 +- README-el.md | 41 +++++++++++++++++++---------------------- README-es.md | 2 +- README-fr.md | 4 ++-- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 4 ++-- README-sl.md | 3 +-- README-uk.md | 2 +- README-zh-Hant.md | 3 +-- README-zh.md | 2 +- README.md | 2 +- 14 files changed, 34 insertions(+), 39 deletions(-) diff --git a/README-cs.md b/README-cs.md index c7a78a2..fd7460a 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-el.md b/README-el.md index 2784804..da277db 100644 --- a/README-el.md +++ b/README-el.md @@ -1,6 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Η Τέχνη της Γραμμής Εντολών @@ -153,7 +152,7 @@ - Με ssh, το να γνωρίζετε πώς να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. -- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: +- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -261,12 +260,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). - Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. - + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). -- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. +- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. - Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. @@ -326,7 +325,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir find . -type f -ls ``` -- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` @@ -386,9 +385,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `tac`: τυπώστε αρχεία ανεστραμμένα -- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο +- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο -- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή +- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή - `pv`: παρακολουθήστε την πορεία των δεδομένων κατά μήκος μίας σωλήνωσης @@ -396,7 +395,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strings`: εξάγετε κείμενο από δυαδικά αρχεία -- `tr`: μετάφραση χαρακτήρων ή επεξεργασία +- `tr`: μετάφραση χαρακτήρων ή επεξεργασία - `iconv` ή `uconv`: μετατροπή κωδικοποίησης κειμένου @@ -412,7 +411,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ldd`: πληροφορίες για δυναμικές βιβλιοθήκες -- `nm`: σύμβολα από αντικειμενικά αρχεία +- `nm`: σύμβολα από αντικειμενικά αρχεία - `ab`: συγκριτική αξιολόγηση web servers @@ -428,7 +427,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ngrep`: grep για το επίπεδο δικτύου -- `host` και `dig`: αναζητήσεις DNS +- `host` και `dig`: αναζητήσεις DNS - `lsof`: εμφανίστε περιγραφείς αρχείου και πληροφορίες δικτυακών συνδέσεων @@ -438,39 +437,39 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `iostat`: στατιστικά χρήσης δίσκου -- `mpstat`: στατιστικά χρήσης επεξεργαστή +- `mpstat`: στατιστικά χρήσης επεξεργαστή - `vmstat`: στατιστικά χρήσης μνήμης - `htop`: βελτιωμένη έκδοση της top -- `last`: ιστορικό σύνδεσης (login) +- `last`: ιστορικό σύνδεσης (login) - `w`: ποιος συνδέθηκε -- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας +- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία +- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία -- `ss`: στατιστικά ανά δικτυακή σύνδεση +- `ss`: στατιστικά ανά δικτυακή σύνδεση - `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος -- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται +- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται -- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA +- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA - `lsb_release`: πληροφορίες διανομής Linux -- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους +- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" ## Μόνο για OS X @@ -507,5 +506,3 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) Η εργασία αυτή έχει αδειοδοτηθεί με [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). - - diff --git a/README-es.md b/README-es.md index ebb390b..466f891 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-fr.md b/README-fr.md index 7914430..e6eaff0 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # L'art de la ligne de commande @@ -138,7 +138,7 @@ Pour la liste complète, consultez `man 7 signal`. 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"`. +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'`. diff --git a/README-it.md b/README-it.md index 074ae95..9662262 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 181fdc2..f3cb4d6 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.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 c282a64..c9fa8da 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index e6c9245..d436a0a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index f1373f2..5b26524 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки @@ -79,7 +79,7 @@ - Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. - + - Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. - Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В `sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME` diff --git a/README-sl.md b/README-sl.md index e9a9fc2..82079b6 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) ∙ [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) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 2240a57..4d4166e 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d28abab..d6f6f50 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -1,6 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # 命令列的藝術 diff --git a/README-zh.md b/README-zh.md index 2c6b768..d1ce094 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 diff --git a/README.md b/README.md index 1491ff5..3283210 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Č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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From 19b032ba4a409fafbf9a267e14919877e77f87b5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 31 Jan 2016 18:11:28 -0800 Subject: [PATCH 074/104] Update author roles and stats. --- AUTHORS.md | 15 +++++++++------ admin/authors-info.yml | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4b8fc70..39b34d7 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,18 +4,20 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +* [0xCD](https://github.com/0xCD) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=0xCD)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3A0xCD) * [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) * [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [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) +* [anna-d (anna-d)](https://github.com/anna-d) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translator and maintainer (el)_ * [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) +* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [0+](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) — [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) @@ -30,8 +32,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [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)_ +* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [8+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) * [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) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[4+](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) — _translator and maintainer (it)_ @@ -45,7 +48,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) — [128+](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_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [130+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[24+](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) @@ -70,7 +73,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) — [35+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[26+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](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) @@ -85,7 +88,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [31+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [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) @@ -96,7 +99,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) * [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ * [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) * [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang) — _translator (zh)_ * [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) * [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 4bbdf76..dafe76e 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -46,3 +46,4 @@ roles: ericguirbal: translator and maintainer (fr) rverchere: translator (fr) kevingo: translator and maintainer (zh-Hant) + anna-d: translator and maintainer (el) From 05bb84eec032d20da17d572c961a2655b1dcb6c8 Mon Sep 17 00:00:00 2001 From: mudongliang Date: Thu, 4 Feb 2016 12:33:12 +0800 Subject: [PATCH 075/104] =?UTF-8?q?modify=20"=E4=B8=AD=E6=96=87"=20to=20"?= =?UTF-8?q?=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit modify "中文" to "简体中文" to show the differences with "繁体中文"。 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3283210..7e4fd64 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From b5d4416af3c3686da61afbfbe68f56d3a6160011 Mon Sep 17 00:00:00 2001 From: Timur Date: Sun, 7 Feb 2016 04:19:14 +0300 Subject: [PATCH 076/104] Break list of package managers into separate words Otherwise, they are seen by Markdown as a very long word. Indirectly, that might lead to the line break in the word "apt-get". Resolves: #337 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3283210..29dc42a 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Scope: Notes: -- To keep this to one page, content is implicitly included by reference. You're smart enough to look up more detail elsewhere once you know the idea or command to Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (as appropriate) to install new programs. +- To keep this to one page, content is implicitly included by reference. You're smart enough to look up more detail elsewhere once you know the idea or command to Google. Use `apt-get`, `yum`, `dnf`, `pacman`, `pip` or `brew` (as appropriate) to install new programs. - Use [Explainshell](http://explainshell.com/) to get a helpful breakdown of what commands, options, pipes etc. do. From d6dd7ce5d8dcb9caccb51d898c340267503937ab Mon Sep 17 00:00:00 2001 From: Timur M Date: Tue, 9 Feb 2016 01:59:52 +0300 Subject: [PATCH 077/104] =?UTF-8?q?Break=20the=20list=20of=20package=20man?= =?UTF-8?q?agers=20=E2=80=93=20finishing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The change in the list of package managers has been reproduced in those translations which used the original delimeter (forward slash, "/"). --- README-cs.md | 2 +- README-el.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 2 +- README-zh.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README-cs.md b/README-cs.md index fd7460a..48d9079 100644 --- a/README-cs.md +++ b/README-cs.md @@ -40,7 +40,7 @@ Rozsah: Poznámky: -- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` podle distribuce k instalaci nových progamů. +- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`, `yum`, `dnf`, `pacman`, `pip` nebo `brew` podle distribuce k instalaci nových progamů. - Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. diff --git a/README-el.md b/README-el.md index da277db..14e3d4a 100644 --- a/README-el.md +++ b/README-el.md @@ -42,7 +42,7 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`, `yum`, `dnf`, `pacman`, `pip` ή `brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά diff --git a/README-es.md b/README-es.md index 466f891..f2e6cbd 100644 --- a/README-es.md +++ b/README-es.md @@ -41,7 +41,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. +- 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` o `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. diff --git a/README-it.md b/README-it.md index 9662262..c8ba329 100644 --- a/README-it.md +++ b/README-it.md @@ -39,7 +39,7 @@ Obiettivi: Note: -- Per tenere tutto su una sola pagina, il contenuto è stato incluso tramite reference. Crediamo che tu sia abbastanza intelligente da cercare i dettagli su qualcosa di specifico, o su un comando, usando Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (in base alla situazione) per installare i nuovi programmi. +- Per tenere tutto su una sola pagina, il contenuto è stato incluso tramite reference. Crediamo che tu sia abbastanza intelligente da cercare i dettagli su qualcosa di specifico, o su un comando, usando Google. Usa `apt-get`, `yum`, `dnf`, `pacman`, `pip` o `brew` (in base alla situazione) per installare i nuovi programmi. - Se vuoi, usa [Explainshell](http://explainshell.com/) per avere uno spaccato più completo su cosa fanno comandi, pipe, opzioni e così via. diff --git a/README-ja.md b/README-ja.md index f3cb4d6..8d7820f 100644 --- a/README-ja.md +++ b/README-ja.md @@ -34,7 +34,7 @@ 注意 : -- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使おう。 +- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`、`yum`、`dnf`、`pacman`、`pip`、`brew`(どれか適したもの)を使おう。 - コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。 ## 基本 diff --git a/README-pt.md b/README-pt.md index d436a0a..b0cb8a2 100644 --- a/README-pt.md +++ b/README-pt.md @@ -34,7 +34,7 @@ Escopo: Notas: -- Para manter este guia em uma única página, o conteúdo implícito será incluído por referência. Você é competente o suficiente para verificar mais detalhes em outros lugares, desde que você já tenha entendido a ideia ou saiba o que procurar no Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (quando adequado) para instalar novos programas. +- Para manter este guia em uma única página, o conteúdo implícito será incluído por referência. Você é competente o suficiente para verificar mais detalhes em outros lugares, desde que você já tenha entendido a ideia ou saiba o que procurar no Google. Use `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (quando adequado) para instalar novos programas. - Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre o que fazem os comandos, as opções, pipes e etc. diff --git a/README-ru.md b/README-ru.md index 5b26524..6e298e8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -38,7 +38,7 @@ Заметки: -- Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. +- Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` или `brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. - На [Explainshell](http://explainshell.com/) можно найти простое и подробное объяснение того, что такое команды, флаги, пайпы и т.д. diff --git a/README-sl.md b/README-sl.md index 82079b6..a1be039 100644 --- a/README-sl.md +++ b/README-sl.md @@ -40,7 +40,7 @@ Obseg: Opombe: -- Da se obdrži to na eni strani, je vsebina implicitno vključena z referencami. Ste dovolj pametni, da poiščete več podrobnosti drugje, ko enkrat poznate idejo ali ukaz za iskanje na Google-u. Uporabite `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (kot je ustrezno), da namestite nove programe. +- Da se obdrži to na eni strani, je vsebina implicitno vključena z referencami. Ste dovolj pametni, da poiščete več podrobnosti drugje, ko enkrat poznate idejo ali ukaz za iskanje na Google-u. Uporabite `apt-get`, `yum`, `dnf`, `pacman`, `pip` ali `brew` (kot je ustrezno), da namestite nove programe. - Uporabite [Explainshell](http://explainshell.com/), da dobite uporabne razčlenitve, kaj ukazi, opcije, cevi itd. naredijo. diff --git a/README-uk.md b/README-uk.md index 4d4166e..2304b28 100644 --- a/README-uk.md +++ b/README-uk.md @@ -38,7 +38,7 @@ Нотатки: -- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d6f6f50..b596421 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -39,7 +39,7 @@ 注意事項: -- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合適的包管理器)來安裝新程式。 +- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`,`yum`,`dnf`,`pacman`,`pip` 或`brew`(以及其它合適的包管理器)來安裝新程式。 - 使用 [Explainshell](http://explainshell.com/) 去獲取相關命令、參數、管道等解釋。 diff --git a/README-zh.md b/README-zh.md index d1ce094..8d8fe15 100644 --- a/README-zh.md +++ b/README-zh.md @@ -39,7 +39,7 @@ 注意事项: -- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合适的包管理器)来安装新程序。 +- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`,`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 - 使用 [Explainshell](http://explainshell.com/) 去获取相关命令、参数、管道等内容的解释。 From a1e446ff197165b5c843834d21a390fdcad39695 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 12 Feb 2016 11:02:37 +0200 Subject: [PATCH 078/104] el: Update translation --- README-el.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index da277db..f81a2a7 100644 --- a/README-el.md +++ b/README-el.md @@ -42,7 +42,7 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`, `yum`, `dnf`, `pacman`, `pip` ή `brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά @@ -109,7 +109,7 @@ - Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. - +AP - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. - Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. From 76ccdfd8d8b101d5bacbe91b9057c636e337e917 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 12 Feb 2016 11:04:39 +0200 Subject: [PATCH 079/104] el: Fix typo --- README-el.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index f81a2a7..14e3d4a 100644 --- a/README-el.md +++ b/README-el.md @@ -109,7 +109,7 @@ - Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. -AP + - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. - Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. From f8f812f8ad001a58afa9dbb46816ee71de8b3ae6 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:33:59 +0530 Subject: [PATCH 080/104] nano editor for beginners --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3283210..e4029af 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). +- If you are a newcomer use `Nano` text editor, its the easiest to learn compared to `Vim` and `Emcas`. + ## Everyday use From 4e1abd4391ed786a35f80cbaa704b7bd0a19768c Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:40:37 +0530 Subject: [PATCH 081/104] basic calculator --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e4029af..f62cca9 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,11 @@ Notes: - For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `su` or `sudo bash` to actually run a shell as that user. Use `su -` to simulate a fresh login as root or another user. +- For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, +``` +>>> 2+3 +5 +``` ## Processing files and data From f4544843b279ab60522628fced4b2f17ed5e34ee Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:48:01 +0530 Subject: [PATCH 082/104] prefer rsync over scp --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f62cca9..359f5f5 100644 --- a/README.md +++ b/README.md @@ -244,6 +244,7 @@ Notes: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` +Also use `rsync` instead of `scp`, so that after network interruption you resume the file transfer rather than restarting from scratch. - Use `shuf` to shuffle or select random lines from a file. From a38a24a1ed4bcfdeb1c2b1a8c07687b030fefde6 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:00:50 +0530 Subject: [PATCH 083/104] fix typo: Emacs not Emcas --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 359f5f5..8958ee1 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). -- If you are a newcomer use `Nano` text editor, its the easiest to learn compared to `Vim` and `Emcas`. +- If you are a newcomer use `Nano` text editor, it's the easiest to learn compared to `Vim` and `Emacs`. ## Everyday use From e64c2f3c09dc8f5810e3c4f2e8e7117038f2eda9 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:07:52 +0530 Subject: [PATCH 084/104] Verify disk space with lsof --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8958ee1..69a91ea 100644 --- a/README.md +++ b/README.md @@ -312,6 +312,8 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). +- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: +`lsof | grep deleted | grep "filename-of-my-big-file"` ## One-liners From f8fc819af23bfb6469926a07f7f4dde17a41053f Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:11:02 +0530 Subject: [PATCH 085/104] 128K limit on commandline --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 69a91ea..b7bef5b 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,8 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` +- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) + ## One-liners A few examples of piecing together commands: From b1ad68b2151c9b1da6277a20da8402dcdb01d0dd Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:15:51 +0530 Subject: [PATCH 086/104] chattr to protect accidental file delete --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index b7bef5b..8910a5c 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,9 @@ Notes: 5 ``` +- File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` + + ## Processing files and data - To locate a file by name in the current directory, `find . -iname '*something*'` (or similar). To find a file anywhere by name, use `locate something` (but bear in mind `updatedb` may not have indexed recently created files). From fb7d95ea97f52403de20b5ce17a29b401a989389 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:18:34 +0530 Subject: [PATCH 087/104] save and restore file permissions --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8910a5c..769f767 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,12 @@ Notes: - File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` +- Use `getfacl` and `setfcle` to save and restore file permissions. For example: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` + ## Processing files and data From 0ee468155b4ad10447c6d72ad1f68cbf97f0cdc1 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:22:42 +0530 Subject: [PATCH 088/104] Fix for review comments --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 769f767..3dc5d5c 100644 --- a/README.md +++ b/README.md @@ -191,9 +191,9 @@ Notes: 5 ``` -- File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` +- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` -- Use `getfacl` and `setfcle` to save and restore file permissions. For example: +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt From 7a3e0333462362d94ed3c4908d0f5d29e45feff9 Mon Sep 17 00:00:00 2001 From: mudongliang Date: Mon, 15 Feb 2016 15:09:14 +0800 Subject: [PATCH 089/104] =?UTF-8?q?modify=20=E4=B8=AD=E6=96=87=20to=20?= =?UTF-8?q?=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87=20in=20all=20the=20languag?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-cs.md | 2 +- README-el.md | 2 +- README-es.md | 2 +- README-fr.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 2 +- README-zh.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README-cs.md b/README-cs.md index fd7460a..b7d466c 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-el.md b/README-el.md index da277db..f2edfb7 100644 --- a/README-el.md +++ b/README-el.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Η Τέχνη της Γραμμής Εντολών diff --git a/README-es.md b/README-es.md index 466f891..4255fc2 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-fr.md b/README-fr.md index c2cd9c5..8794b35 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # L'art de la ligne de commande diff --git a/README-it.md b/README-it.md index 9662262..5aa59cd 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index f3cb4d6..066c686 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.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 c9fa8da..67162f6 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index d436a0a..5583551 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 5b26524..f85d3e4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 82079b6..294f8cf 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 4d4166e..0f9dbaa 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d6f6f50..648ab58 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # 命令列的藝術 diff --git a/README-zh.md b/README-zh.md index d1ce094..6e48cd3 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 From 6b13ea552da86236e3b54ac3524e0e9fdf531dd1 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Tue, 16 Feb 2016 16:55:50 +0530 Subject: [PATCH 090/104] Remove nano tip --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3dc5d5c..b1c2685 100644 --- a/README.md +++ b/README.md @@ -71,8 +71,6 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). -- If you are a newcomer use `Nano` text editor, it's the easiest to learn compared to `Vim` and `Emacs`. - ## Everyday use From 5440364e800f4b46ec21d7afb6f3a129e7c79ce3 Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Tue, 16 Feb 2016 18:10:29 +0300 Subject: [PATCH 091/104] Synced russian version to original line-by-line to merge changes easly. Corrected a couple of words, removed a duplicate, joined few strings --- README-ru.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README-ru.md b/README-ru.md index 426fb4d..63677d0 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,7 @@ 🌍 *[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.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) ∙ [繁體中文](README-zh-Hant.md)* + # Искусство командной строки [![Вступайте в англоязычный чат проекта 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) @@ -22,10 +23,12 @@ Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) -Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +Многое из того, что тут написано, +[изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). +начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста +[**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание @@ -39,9 +42,9 @@ Заметки: - Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` или `brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. - - На [Explainshell](http://explainshell.com/) можно найти простое и подробное объяснение того, что такое команды, флаги, пайпы и т.д. + ## Основы - Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноутбуке во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). @@ -68,15 +71,15 @@ - Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). + ## Ежедневное использование - Используйте таб в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки (после нажатия введите запрос, нажмите **ctrl-r** снова чтобы натйи следующее сопадение, нажмите **Enter** для выполнения текущей найденной команды или стрелку вправо чтобы отредактировать команду). - Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing). -- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). -- Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. +- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. @@ -94,6 +97,7 @@ cat hosts | xargs -I{} ssh root@{} hostname ``` + - `pstree -p` – полезный тип вывода дерева процессов. - Используйте `pgrep` или `pkill` для того, чтобы находить/слать сигналы к процессам по имени (`-f` помогает). @@ -124,7 +128,6 @@ trap "echo 'error: Script failed: see failed command above'" ERR ``` - - В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так: ```bash # do something in current dir @@ -197,7 +200,6 @@ - Для работы с YAML используйте [`shyaml`](https://github.com/0k/shyaml). - - Для работы с Excel и CSV-файлами используйте [csvkit](https://github.com/onyxfish/csvkit) (программа предоставляет команды `in2csv`, `csvcut`, `csvjoin`, `csvgrep` и т.д.) - Для работы с Amazon S3 удобно работать с [`s3cmd`](https://github.com/s3tools/s3cmd) и [`s4cmd`](https://github.com/bloomreach/s4cmd) (последний работает быстрее). Для остальных сервисов Амазона используйте стандартный [`aws`](https://github.com/aws/aws-cli) или улучшенный [`saws`](https://github.com/donnemartin/saws). @@ -231,7 +233,7 @@ rename 's/\.bak$//' *.bak ``` -- Как говорит man, `rsync` действительно быстрая и очень универсальная утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -251,7 +253,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы посмотреть разницу в бинарниках (дельта-кодирование) используйте `xdelta3`. - Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (которые бывают, например, в испанском языке) - ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` @@ -262,11 +263,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. + ## Отладка системы -- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). - - +- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). - Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. @@ -304,6 +304,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). + ## В одну строчку Давайте соберем все вместе и напишем несколько команд: @@ -323,17 +324,16 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir awk '{ x += $3 } END { print x }' myfile ``` -- Если вам нужно посмотреть размеры и даты создания дерева файлов используйте: +- Чтобы посмотреть размеры и даты в дереве файлов, есть почти как рекурсивная `ls -l`, но легче читаемая, чем `ls -lR`: ```sh find . -type f -ls ``` -Это почти как рекурсивная `ls -l`, но выглядит более читабельно чем `ls -lR`: - -- Давайте представим, что у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: +- Скажем, у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` + - Для непрерывного мониторинга измененний используйте `watch`, например, проверка измений файлов в директории: `watch -d -n 2 'ls -rtlh | tail'` или сетевых настроек во время устранения проблем с вашей wifi сетью: `watch -d -n 2 ifconfig`. - Запустите этот скрипт, чтобы получить случайный совет из этой инструкции: @@ -412,7 +412,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `watch`: повторный запуск команды с выводом результата или подсветкой изменений -- `tac`: вывести файл посимвольно наоборот ("ласипан") +- `tac`: вывести файл построчно в обратном порядке - `shuf`: случайная выборка строк из файла @@ -498,7 +498,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsmod` и `modinfo`: информация о модулях ядра. -- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезные" веселые цитатки и поезда, пересекающие ваш терминал :) +- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) + ## OS X only @@ -518,6 +519,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы получить информацию о версии OS X используйте `sw_vers`. + ## Больше информации по теме - [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки. @@ -529,9 +531,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Дисклеймер -За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. - -Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) +За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) ## Лицензия From 99e681db865086c761d3af65f3f3a4b6433b3cdd Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Tue, 16 Feb 2016 18:22:32 +0300 Subject: [PATCH 092/104] typo --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 63677d0..8b18db5 100644 --- a/README-ru.md +++ b/README-ru.md @@ -266,7 +266,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Отладка системы -- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). +- Для веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). - Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. From c7d9d1478a62cdd675bf1cf618e695253fae4132 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 16 Feb 2016 22:37:38 -0800 Subject: [PATCH 093/104] Rework ordering on #375 additions. --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 85bb455..ebe622e 100644 --- a/README.md +++ b/README.md @@ -184,20 +184,14 @@ Notes: - For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `su` or `sudo bash` to actually run a shell as that user. Use `su -` to simulate a fresh login as root or another user. +- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) + - For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, ``` >>> 2+3 5 ``` -- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` - -- Use `getfacl` and `setfacl` to save and restore file permissions. For example: -```sh - getfacl -R /some/path > permissions.txt - setfacl --restore=permissions.txt -``` - ## Processing files and data @@ -279,6 +273,13 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. +- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` + +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## System debugging @@ -323,7 +324,6 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` -- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) ## One-liners From 7124a1d070761ac6720791306f24a6b093325726 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 16 Feb 2016 22:41:01 -0800 Subject: [PATCH 094/104] Two more small adjustments to #375. --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ebe622e..12536c5 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Notes: - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) -- For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, +- For a basic calculator (and of course access to Python in general), use the `python` interpreter. For example, ``` >>> 2+3 5 @@ -242,11 +242,10 @@ Notes: rename 's/\.bak$//' *.bak ``` -- As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: +- As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. When security restrictions allow, using `rsync` instead of `scp` allows recovery of a transfer without restarting from scratch. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` -Also use `rsync` instead of `scp`, so that after network interruption you resume the file transfer rather than restarting from scratch. - Use `shuf` to shuffle or select random lines from a file. From 9244963cacfc7d138bf914d9b9f54f9e6507fb63 Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Thu, 18 Feb 2016 22:18:37 +0300 Subject: [PATCH 095/104] merged and translated latest changes --- README-ru.md | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/README-ru.md b/README-ru.md index 8b18db5..799fd5f 100644 --- a/README-ru.md +++ b/README-ru.md @@ -13,6 +13,7 @@ - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) +- [Windows only](#windows-only) - [OS X only](#os-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -35,7 +36,7 @@ Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[OS X only](#os-x-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). +- Этот документ написан для пользователей Linux, за исключеним секций "[OS X only](#os-x-only)" и "[Windows only](#windows-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу. - Эта инструкция включает в себя стандартные Unix команды и те, для которых нужно устанавливать сторонние пакеты. Они настолько полезны, что стоят того, чтобы их установили. @@ -183,6 +184,14 @@ - Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы эмулировать свежий логин от рута или другого пользователя. +- Знайте про [ограничение 128Кб](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) в командной строке. Ошибка "Argument list too long" часто бывает, когда маска по имени включает большое количество файлов. (В таких случаях помогают варианты с `find` или `xargs`.) + +- В качестве простого калькулятора (и, конечно, вообще для работы с Python) используйте интерпретатор `python`. Например, +``` +>>> 2+3 +5 +``` + ## Обработка файлов и информации @@ -233,7 +242,7 @@ rename 's/\.bak$//' *.bak ``` -- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Если есть доступ, `rsync` в отличие от `scp` позволяет возобновить процесс копирования, не начиная заново. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -263,6 +272,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. +- `chattr` устанавливает атрибуты файлов, которые также являются низкоуровневой альтернативой правам доступа. Например, от случайного удаления файла защитит атрибут неизменяемости: `sudo chattr +i /critical/directory/or/file` + +- Используйте `getfacl` и `setfacl` для сохранения и восстановления файловых прав доступа. Например: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## Отладка системы @@ -304,6 +320,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). +- Если вы удалили файл и это вопреки ожиданиям не освободило место на диске, как показывает `du`, проверьте, использует ли файл какой-нибудь процесс: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## В одну строчку @@ -519,6 +538,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы получить информацию о версии OS X используйте `sw_vers`. +## Windows only + +- Используйте силу Unix shell в Microsoft Windows, установив [Cygwin](https://cygwin.com/). Большая часть описанных в этом документе возможностей заработает сразу. + +- Установите еще Unix программ с помощью встроенного в Cygwin менеджера пакетов. + +- Используйте `mintty` в качестве терминала. + +- Работайте с буфером обмена Windows с помощью `/dev/clipboard`. + +- Запустите `cygstart`, чтобы открыть файл в приложении по умолчанию. + +- Работайте с реестром Windows с помощью `regtool`. + +- Имейте в виду, что виндовый диск `C:\` доступен в Cygwin по пути `/cygdrive/c`, и cygwin''ский `/` является папкой `C:\cygwin` в Windows. Конвертируйте файловые пути в виндовые и обратно с помощью `cygpath`. Это самый полезный скрипт, который запускает программы Windows. + +- Вы можете запускать и автоматизировать большинство задач по администрированию Windows из командной строк, освоив `wmic`. ## Больше информации по теме @@ -531,7 +567,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Дисклеймер -За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) +За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. С большой силой приходит большая ответственность. Из того, что вы *способны* что-то сделать в Баше, вовсе не следует, что это нужно делать! ;) ## Лицензия From 4c2fc0211e9d561f724518bd859fbff7ccee67fa Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 29 Jan 2016 20:15:52 +0100 Subject: [PATCH 096/104] fr: Translate the section "Windows only" --- README-fr.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 8794b35..f19c271 100644 --- a/README-fr.md +++ b/README-fr.md @@ -13,6 +13,7 @@ - [Unilignes](#unilignes) - [Obscures mais utiles](#obscures-mais-utiles) - [Uniquement OS X](#uniquement-os-x) +- [Uniquement Windows](#uniquement-windows) - [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) @@ -36,7 +37,7 @@ Contexte : - 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 beaucoup de temps par rapport aux solutions alternatives. -- Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». +- Il est écrit pour Linux, à l'exception des sections « [Uniquement OS X](#uniquement-os-X) » et « [Uniquement Windows](#uniquement-windows) ». 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. @@ -612,6 +613,28 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com - Pour obtenir des informations sur la version de Mac OS, utilisez `sw_vers`. +## Uniquement Windows + +- Installez [Cygwin](http://cygwin.com) pour bénéficier de la puissance du shell Unix sous Microsoft Windows. +La majorité de ce qui est décrit dans ce document fonctionnera *out of the box*. + +- Installez des programmes Unix supplémentaires à l'aide du gestionnaire de paquets de Cygwin. + +- Utilisez `mintty` comme fenêtre de ligne de commande. + +- Accédez au presse-papier de Windows par `/dev/clipboard`. + +- Exécutez `cygstart` pour ouvrir un fichier quelconque à l'aide de son application enregistrée. + +- Accédez à la base de registres de Windows avec `regtool`. + +- Sachez qu'on accède au lecteur `C:\` depuis Cygwin via `/cygdrive/c` et que le chemin Cygwin `\` devient `C:\cygwin` sous Windows. +Effectuez des conversions entre les deux types de chemin avec l'utilitaire `cygpath`. +C'est particulièrement utile pour invoquer des programmes Windows dans les scripts. + +- Vous pouvez accomplir et scripter la plupart des tâches d'administration système de Windows depuis la ligne de commande en apprenant et en utilisant `wmic`. + + ## Autres ressources - [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et de ressources pour le shell. From 2deada1c73f5f192f633a6a04fb6271a686d4b95 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Thu, 18 Feb 2016 23:41:57 +0100 Subject: [PATCH 097/104] fr: Synchronize the translation --- README-fr.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-fr.md b/README-fr.md index f19c271..55a919e 100644 --- a/README-fr.md +++ b/README-fr.md @@ -235,6 +235,14 @@ Une alternative plus légère pour la persistance des sessions seulement est `dt Utilisez `su` ou `sudo bash` pour exécuter un shell sous cette utilisateur. Utilisez `su -` pour simuler une nouvelle connexion en tant que root ou un autre utilisateur. +- Sachez que l'argument de la ligne de commande a une [taille limite de 128 Kio](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong). L'erreur « Argument list too long » est fréquente avec les jokers qui reconnaissent un grand nombre de fichiers (quand cela se produit des alternatives comme `find` et `xargs` peuvent aider). + +- Pour une calculatrice basique (et bien sûr accéder à Python en général), utilisez l'interpréteur `python`. +Par exemple, +``` +>>> 2+3 +5 +``` ## Traitement des fichiers et des données @@ -298,6 +306,7 @@ 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. +Lorsque les mesures de sécurité l'autorisent, utiliser `rsync` au lieu de `scp` permet de reprendre un transfert interrompu sans devoir le recommencer zéro. 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 @@ -338,6 +347,14 @@ Par exemple, cette commande met en minuscules et retire tous les accents (en les - Utilisez `zless`, `zmore`, `zcat` et `zgrep` pour opérer sur des fichiers compressés. +- Les attributs d'un fichier peuvent être modifiés avec `chattr` et proposent une alternative de plus bas niveau aux permissions d'accès aux fichiers. +Par exemple, l'attribut *immutable* protège un fichier contre toute suppression accidentelle: `sudo chattr +i /critical/directory/or/file`. + +- Utilisez `getfacl` et `setfacl` pour sauvegarder et restorer les permissions. Par exemple: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## Débogage du système @@ -389,6 +406,9 @@ 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). +- Si vous effacez un fichier et que `du` indique que l'espace occupé n'a pas été libéré, alors vérifiez si le fichier n'est pas utilisé par un processus: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## Unilignes From cce22b284014f5c80d4ee38cbe1497bddee79996 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 19 Feb 2016 02:27:59 +0200 Subject: [PATCH 098/104] el: Update translation Translate the section "Windows only" and other smaller additions --- README-el.md | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index 685627f..f5c1b41 100644 --- a/README-el.md +++ b/README-el.md @@ -13,6 +13,7 @@ - [Εντολές σε μία γραμμή](#one-liners) - [Ασυνήθιστες αλλά χρήσιμες](#ασυνήθιστες-αλλά-χρήσιμες) - [Μόνο για OS X](#os-x-only) +- [Μόνο για Windows](#windows-only) - [Περισσότερες πηγές](#more-resources) - [Αποποίηση ευθύνης](#disclaimer) @@ -36,7 +37,7 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων "[Μόνο για OS X](#os-x-only)" και "[Μόνο για Windows](#windows-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. @@ -181,6 +182,12 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα άλλων, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. +- Έχετε υπόψη σας τον [περιορισμό των 128K](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) για τις γραμμές εντολών. Το σφάλμα "Η λίστα των ορισμάτων είναι πολύ μεγάλη" είναι κοινό, όταν γίνεται ταίριασμα με χαρακτήρα wildcard ενάντι μεγάλου αριθμού αρχείων. (Όταν συμβαίνει αυτό, εναλλακτικές όπως οι `find` και `xargs` μπορεί να βοηθήσουν.) + +- Για έναν βασικό υπολογιστή (και βέβαια γενικά για πρόσβαση σε Python), χρησιμοποιήστε τον διερμηνευτή `python`. Για παράδειγμα, +``` +>>> 2+3 +5 ## Επεξεργασία αρχείων και δεδομένων @@ -231,7 +238,7 @@ rename 's/\.bak$//' *.bak ``` -- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: +- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Όταν οι περιορισμοί ασφάλειας το επιτρέπουν, η χρήση της `rsync` αντί της `scp` επιτρέπει τη συνέχιση μιας μεταφοράς χωρίς να ξεκινήσει από την αρχή. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -261,6 +268,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. +- Ιδιότητες αρχείων μπορούν να οριστούν με την `chattr` και προσφέρει μία εναλλακτική για τα δικαιώματα των αρχείων σε χαμηλό επίπεδο. Για παράδειγμα, για να προστατευτείτε από κατά λάθος διαγραφή αρχείου χρησιμοποιήστε την επιλογή immutable: `sudo chattr +i /critical/directory/or/file` + +- Χρησιμοποιήστε τις `getfacl` και `setfacl` για να αποθηκεύσετε και να επαναφέρετε δικαιώματα αρχείων. Για παράδειγμα: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). @@ -301,6 +316,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε την `dmesg`, όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). +- Αν διαγράψετε ένα αρχείο και δεν απελευθερωθεί ο σύμφωνα με την `du` αναμενομένος χώρος στον δίσκο, ελέξτε αν το αρχείο χρησιμοποιείται από κάποια διεργασία: +`lsof | grep deleted | grep "filename-of-my-big-file"` + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: @@ -489,6 +508,24 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. +## Μόνο για Windows + +- Αποκτήστε πρόσβαση στη δύναμη του φλοιού του Unix σε περιβάλλον Microsoft Windows εγκαθιστώντας το [Cygwin](https://cygwin.com/). Τα περισσότερα από αυτά που περιγράφονται σε αυτό το έγγραφο θα λειτουργήσουν μεμιάς. + +- Εγκαταστήστε πρόσθετα προγράμματα Unix με τον διαχειριστή πακέτων του Cygwin. + +- Χρησιμοποιήστε το `mintty` ως το παράθυρο γραμμής εντολών σας. + +- Αποκτήστε πρόσβαση στο πρόχειρο (clipboard) των Windows μέσω του `/dev/clipboard`. + +- Εκτελέστε τη `cygstart` για να ανοίξετε ένα οποιοδήποτε αρχείο με την εφαρμογή που είναι ορισμένη να χρησιμοποιείται για το άνοιγμά του. + +- Αποκτήστε πρόσβαση στο μητρώο των Windows με `regtool`. + +- Σημειώστε ότι η διαδρομή `C:\` των Windows γίνεται `/cygdrive/c` στο Cygwin και ότι το `/` του Cygwin εμφανίζεται ως `C:\cygwin` στα Windows. Μετατρέψετε διαδρομές αρχείων από τη μορφή που χρησιμοποιεί το Cygwin σε αυτή που χρησιμοποιούν τα Windows και αντίστροφα με `cygpath`. Αυτό είναι πολύ χρήσιμο σε scripts που καλούν προγράμματα Windows. + +- Μπορείτε να εκτελέσετε και να γράψετε scripts για τις περισσότερες εργασίες διαχείρισης συστήματος των Windows από τη γραμμή εντολών μαθαίνοντας και χρησιμοποιώντας την `wmic`. + ## Περισσότερες πηγές - [awesome-shell](https://github.com/alebcay/awesome-shell): Μία προσεγμένη λίστα με εργαλεία και πηγές σχετικές με τον φλοιό . From df965362a3303a55c34f0922653aeec34224ee65 Mon Sep 17 00:00:00 2001 From: Michael Kwardakov Date: Fri, 19 Feb 2016 13:23:01 +0300 Subject: [PATCH 099/104] Update README-ru.md --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 799fd5f..3c3eba2 100644 --- a/README-ru.md +++ b/README-ru.md @@ -284,7 +284,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). -- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. +- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения базовой информации о процессоре и детализированной о каждом разделе жесткого диска. - Для получения информации о сетевых соедиениях используйте `netstat` и `ss`. From fcdaa321e72746ca025d99d15894f8674768f19f Mon Sep 17 00:00:00 2001 From: Timur M Date: Fri, 19 Feb 2016 16:24:24 +0300 Subject: [PATCH 100/104] Remove a redundant mention of `lsb_release' Made in all translations as well. Resolves: #382 --- README-cs.md | 2 -- README-el.md | 2 -- README-es.md | 2 -- README-fr.md | 2 -- README-it.md | 2 -- README-ja.md | 2 -- README-ko.md | 2 -- README-pt.md | 2 -- README-ru.md | 2 -- README-sl.md | 2 -- README-uk.md | 3 +-- README-zh-Hant.md | 2 -- README-zh.md | 2 -- README.md | 2 -- 14 files changed, 1 insertion(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 1b5062d..e677f6e 100644 --- a/README-cs.md +++ b/README-cs.md @@ -472,8 +472,6 @@ Pár příkladů na spojování příkazů: - `hdparm`: SATA/ATA disková manipulace/výkon -- `lsb_release`: informace o Linuxové distribuci - - `lsblk`: seznam blokových zařízení: stromové zobrazení disků a diskových oddílů - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informace o hardwaru zahrnující CPU, BIOS, RAID, grafiku, zařízení, atd. diff --git a/README-el.md b/README-el.md index 685627f..de6ba5d 100644 --- a/README-el.md +++ b/README-el.md @@ -461,8 +461,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA -- `lsb_release`: πληροφορίες διανομής Linux - - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. diff --git a/README-es.md b/README-es.md index 5845eca..5851894 100644 --- a/README-es.md +++ b/README-es.md @@ -474,8 +474,6 @@ Algunos ejemplos de comandos reunidos: - `hdparm`: manipulación/rendimiento de discos SATA/ATA -- `lsb_release`: información de la distribución de Linux - - `lsblk`: lista de dispositivos de bloque: una vista tipo arbol de sus discos y particiones de disco - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: información de hardware, incluyendo CPU, BIOS, RAID, gráficos, dispositivos, etc diff --git a/README-fr.md b/README-fr.md index 8794b35..008e1e2 100644 --- a/README-fr.md +++ b/README-fr.md @@ -578,8 +578,6 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `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 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. diff --git a/README-it.md b/README-it.md index 3e5ea28..221f4dd 100644 --- a/README-it.md +++ b/README-it.md @@ -487,8 +487,6 @@ Qualche esempio di combinazione di più comandi comandi: - `hdparm`: tool di gestione dischi SATA/ATA. -- `lsb_release`: informazioni sulla distribuzione Linux. - - `lsblk`: visualizzazione ad albero dei dischi e relative partizioni. - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informazioni sull'hardware, tra cui CPU, BIOS, RAID, scheda grafica e dispositivi di ogni tipo. diff --git a/README-ja.md b/README-ja.md index 1adca76..9dee638 100644 --- a/README-ja.md +++ b/README-ja.md @@ -478,8 +478,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 -- `lsb_release`: Linuxディストリビューション情報 - - `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー - `lshw`、`lscpu`、`lspci`、`lsusb`、`dmidecode`: CPUやBIOS、RAID、グラフィック、その他デバイスなどのハードウェア情報 diff --git a/README-ko.md b/README-ko.md index 67162f6..c9af783 100644 --- a/README-ko.md +++ b/README-ko.md @@ -436,8 +436,6 @@ - `hdparm`: SATA/ATA disk들의 정보를 수정하거나 그것들이 작동하도록 합니다. -- `lsb_release`: Linux 배포판의 정보를 보여줍니다 - - `lsblk`: 블록 디바이스들의 목록을 보여줍니다 : 여러분의 디스크들이나 디스크파티션들을 트리의 형태로 보여줍니다 - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: CPU, BIOS, RAID, graphics, devices 등의 하드웨어 정보를 보여줍니다 diff --git a/README-pt.md b/README-pt.md index d7612dc..4659937 100644 --- a/README-pt.md +++ b/README-pt.md @@ -424,8 +424,6 @@ Alguns exemplos de como reunir os comandos. - `hdparm`: Manipulação/performance de discos SATA/ATA. -- `lsb_release`: Informações sobre a distribuição do Linux. - - `lsblk`: Lista os blocos dos dispositivos: uma visualização em forma de árvore dos seus discos e partições do disco. - `lshw` e `lspci`: informações do hardware, incluindo RAID, gráficos, etc. diff --git a/README-ru.md b/README-ru.md index 8b18db5..1f42d38 100644 --- a/README-ru.md +++ b/README-ru.md @@ -490,8 +490,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: манипуляции с SATA/ATA -- `lsb_release`: информация о дистрибутиве Linux - - `lsblk`: cписок блочных устройств компьютера: дерево ваших дисков и логических дисков - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: информация о железе, включая CPU, BIOS, RAID, графику, девайсы, и т.д. diff --git a/README-sl.md b/README-sl.md index 6955cc6..aaf2034 100644 --- a/README-sl.md +++ b/README-sl.md @@ -489,8 +489,6 @@ Nekaj primerov sestavljanja ukazov skupaj: - `hdparm`: manipulacija/uspešnost SATA/ATA disk-a -- `lsb_release`: informacije distribucije Linux - - `lsblk`: izpiše blokovne naprave: drevesni pogled vaših diskov in particij diska - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informacije strojne opreme, vključno s procesorjem, BIOS-om, RAID-om, grafiko, napravami itd. diff --git a/README-uk.md b/README-uk.md index 93b0349..0523945 100644 --- a/README-uk.md +++ b/README-uk.md @@ -198,7 +198,7 @@ - Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). - Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. - Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)) і [`sysdig`](https://github.com/draios/sysdig). -- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` або `lsb_release -a`. +- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` (інформація про ядро) або `lsb_release -a` (інформація про дистрибутив Linux). - Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами). @@ -313,7 +313,6 @@ - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене - `hdparm`: маніпуляція/налаштування SATA/ATA диску -- `lsb_release`: інформація про дистрибутив Linux - `lsblk`: cписок блокових пристроїв комп'ютера: дерево ваших дисків і логічних дисків - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: інформація про апаратне забезпечення, включає CPU, BIOS, RAID, графічну карту і т.д. - `lsmod` і `modinfo`: показує список і детальну інформацію модулів ядра. diff --git a/README-zh-Hant.md b/README-zh-Hant.md index af996ba..4e9e69d 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -465,8 +465,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`:SATA/ATA 磁碟更改及效能分析 -- `lsb_release`:Linux 發行版資訊 - - `lsblk`:列出塊裝置資訊:以樹形展示你的磁碟以及磁碟分區資訊 - `lshw`,`lscpu`,`lspci`,`lsusb` 和`dmidecode`:檢視硬體資訊,包括CPU、BIOS、RAID、顯示卡、USB裝置等 diff --git a/README-zh.md b/README-zh.md index 8eaedd5..c1bd688 100644 --- a/README-zh.md +++ b/README-zh.md @@ -467,8 +467,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`:SATA/ATA 磁盘更改及性能分析 -- `lsb_release`:Linux 发行版信息 - - `lsblk`:列出块设备信息:以树形展示你的磁盘以及磁盘分区信息 - `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB设备等 diff --git a/README.md b/README.md index 12536c5..a4324ab 100644 --- a/README.md +++ b/README.md @@ -509,8 +509,6 @@ A few examples of piecing together commands: - `hdparm`: SATA/ATA disk manipulation/performance -- `lsb_release`: Linux distribution info - - `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 7a9da6b09e4343560dc7063e12da089cd1ea8207 Mon Sep 17 00:00:00 2001 From: Timur M Date: Fri, 19 Feb 2016 16:26:51 +0300 Subject: [PATCH 101/104] Translate the "or" word in the Russian version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit or → или --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 1f42d38..cbd64b4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -300,7 +300,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для анализа более сложных систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig). -- Узнайте, какая у вас ОС, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). +- Узнайте, какая у вас ОС, через `uname` или `uname -a` (основная Unix-информация/информация о ядре), или `lsb_release -a` (информация о дистрибутиве). - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). From e536b4efb87d66de2bf0c676fcf882b4cdebe5a4 Mon Sep 17 00:00:00 2001 From: _anna Date: Sat, 20 Feb 2016 13:12:31 +0200 Subject: [PATCH 102/104] el: Improve translation Use greek quotes and make small improvements Reviewed-by: Diomidis Spinellis --- README-el.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README-el.md b/README-el.md index f5c1b41..7982122 100644 --- a/README-el.md +++ b/README-el.md @@ -37,9 +37,9 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων "[Μόνο για OS X](#os-x-only)" και "[Μόνο για Windows](#windows-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων «[Μόνο για OS X](#os-x-only)» και «[Μόνο για Windows](#windows-only)». Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. -- Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. +- Περιλαμβάνει τόσο τις «τυπικές» εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. Σημειώσεις: @@ -143,7 +143,7 @@ diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει μια σύνδεση αρχείου ανοιχτή στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `>> 2+3 5 @@ -286,7 +286,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για μια γρήγορη επισκόπηση του τι συμβαίνει σε ένα σύστημα, η `dstat` είναι ιδιαίτερα χρήσιμη. Για καλύτερη επισκόπηση με λεπτομέρειες, χρησιμοποιήστε [`glances`](https://github.com/nicolargo/glances). -- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η "cached" τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως "free" τιμή. +- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η «cached» τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως «free» τιμή. - Η αποσφαλμάτωση συστημάτων Java είναι άλλη ιστορία, αλλά ένα απλό κόλπο για το JVM της Oracle και άλλων είναι να τρέξετε την εντολή `kill -3 ` και ένα πλήρες ίχνος στοίβας και περίληψη σωρού (συμπεριλαμβανομένων και λεπτομερειών που αφορούν τη συλλογή απορριμάτων σε γενιές, που μπορεί να είναι πολύ κατατοπιστικές) θα εμφανιστούν στο stderr/logs. Οι εντολές του JDK `jps`, `jstat`, `jstack`, `jmap` είναι χρήσιμες. [Τα εργαλεία SJK](https://github.com/aragozin/jvm-tools) είναι για πιο προχωρημένους. @@ -488,7 +488,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy «χρήσιμα» ## Μόνο για OS X @@ -498,13 +498,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. -- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". +- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε «Χρήση Option ως μετα-πλήκτρου». - Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα «Εγχειρίδιο γενικών εντολών BSD». Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. From a6760444927f1016486131f8d5472924fbffd458 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 20 Feb 2016 10:57:31 -0800 Subject: [PATCH 103/104] Update rolses and credits. Also clarify that maintainers can be for a translation or a section (now in the case of Windows). --- AUTHORS.md | 53 ++++++++++++++++++++++++------------------ admin/authors-info.yml | 32 ++++++++++++++----------- 2 files changed, 48 insertions(+), 37 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 39b34d7..36530b3 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -3,6 +3,9 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +Some contributors are also assigned roles as maintainers. +They have kindly agreed to review and help update future contributions for the translation or section they own. + * [0xCD](https://github.com/0xCD) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=0xCD)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3A0xCD) * [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) @@ -11,17 +14,17 @@ 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) -* [anna-d (anna-d)](https://github.com/anna-d) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translator and maintainer (el)_ +* [anna-d (anna-d)](https://github.com/anna-d) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translation maintainer (el)_ * [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) — [0+](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) — [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)_ +* [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) — _translation 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) +* [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [0+](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) — [0+](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) * [Chris Rhodes (crr0004)](https://github.com/crr0004) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004) * [Chelsea Voss (csvoss)](https://github.com/csvoss) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss) * [Daniel t. (danasmera)](https://github.com/danasmera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera) @@ -31,36 +34,37 @@ Contributors are listed in alphabetical order by GitHub login. * [Jamie Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [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)_ -* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [8+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) +* [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) — _translation maintainer (ja)_ +* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) — _section maintainer (Windows)_ * [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) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translation 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) — _translator and maintainer (it)_ +* [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) — _translation 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) -* [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) +* [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ -* [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) +* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[4+](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) * [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) — [130+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[24+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [133+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _orignal author and project 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) +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [0+](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) * [Colin Chan (kalgynirae)](https://github.com/kalgynirae) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae) * [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) * [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ * [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) -* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translator and maintainer (zh-Hant)_ +* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translation maintainer (zh-Hant)_ * [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13) * [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) +* [Lakshmipathi (Lakshmipathi)](https://github.com/Lakshmipathi) — [10+](https://github.com/jlevy/the-art-of-command-line/commits?author=Lakshmipathi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ALakshmipathi) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) -* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translator and maintainer (cs)_ +* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translation maintainer (cs)_ * [Luke Yeager (lukeyeager)](https://github.com/lukeyeager) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lukeyeager)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alukeyeager) * [TAKAGI Masahiro (m-takagi)](https://github.com/m-takagi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=m-takagi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Am-takagi) * [Matjaž Lipuš (matjaz)](https://github.com/matjaz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz) @@ -68,14 +72,16 @@ Contributors are listed in alphabetical order by GitHub login. * [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)_ +* [Michael Kwardakov (mkwardakov)](https://github.com/mkwardakov) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mkwardakov)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amkwardakov) +* [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [0+](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) +* [慕冬亮 (mudongliang)](https://github.com/mudongliang) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mudongliang)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amudongliang) +* [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) — _translation 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) — _translation 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) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translation 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)_ +* [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) — _translation 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) @@ -88,18 +94,19 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translation maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [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) — [5+](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) +* [Timur (tim-teufel)](https://github.com/tim-teufel) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=tim-teufel)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Atim-teufel) +* [René Ribaud (uggla)](https://github.com/uggla) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[10+](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)_ +* [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) — _translation 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) * [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ * [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) * [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang) — _translator (zh)_ * [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) * [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index dafe76e..d75223c 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -4,6 +4,9 @@ header: | This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. + Some contributors are also assigned roles as maintainers. + They have kindly agreed to review and help update future contributions for the translation or section they own. + footer: | Numbers link to commits/issues. For simplicity, this file is maintained only in English. @@ -18,32 +21,33 @@ exclude: ReadmeCritic roles: - jlevy: original author and maintainer - ceoaliongroo: translator and maintainer (es) + jlevy: orignal author and project maintainer + ceoaliongroo: translation maintainer (es) aaossa: translator (es) BishopWolf: translator (es) - doublemarket: translator and maintainer (ja) - Ungsik-Yun: translator and maintainer (ko) + doublemarket: translation maintainer (ja) + Ungsik-Yun: translation maintainer (ko) Snowcat8436: translator (ko) ujuc: translator (ko) hunkim: translator (ko) - niltonvasques : translator and maintainer (pt) + niltonvasques : translation maintainer (pt) vcvpaiva: translator (pt) - olegberman: translator and maintainer (ru) + olegberman: translation maintainer (ru) spmbt: translator (ru) osmero: translator (ru) grigory-rechistov: translator (ru) kastian: translator (ru) githubashto: translator (ru) - peterkokot: translator and maintainer (sl) - Psycho7: translator and maintainer (zh) + peterkokot: translation maintainer (sl) + Psycho7: translation maintainer (zh) xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translator and maintainer (uk) - francescomalatesta: translator and maintainer (it) - lsrom: translator and maintainer (cs) - ericguirbal: translator and maintainer (fr) + stepan0904: translation maintainer (uk) + francescomalatesta: translation maintainer (it) + lsrom: translation maintainer (cs) + ericguirbal: translation maintainer (fr) rverchere: translator (fr) - kevingo: translator and maintainer (zh-Hant) - anna-d: translator and maintainer (el) + kevingo: translation maintainer (zh-Hant) + anna-d: translation maintainer (el) + dspinellis: section maintainer (Windows) From 93cf69d67d79a1b076423fe830e18bc4f57632ab Mon Sep 17 00:00:00 2001 From: "L. Mountrakis" Date: Thu, 25 Feb 2016 01:17:25 +0100 Subject: [PATCH 104/104] FIX: Closed code quotes for "el" translation --- README-el.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index ffbe974..dd7600c 100644 --- a/README-el.md +++ b/README-el.md @@ -185,9 +185,10 @@ - Έχετε υπόψη σας τον [περιορισμό των 128K](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) για τις γραμμές εντολών. Το σφάλμα «Η λίστα των ορισμάτων είναι πολύ μεγάλη» είναι κοινό, όταν γίνεται ταίριασμα με χαρακτήρα wildcard ενάντι μεγάλου αριθμού αρχείων. (Όταν συμβαίνει αυτό, εναλλακτικές όπως οι `find` και `xargs` μπορεί να βοηθήσουν.) - Για να κάνετε μια απλή πράξη αριθμητικής (και βέβαια γενικά για πρόσβαση σε Python), χρησιμοποιήστε τον διερμηνευτή `python`. Για παράδειγμα, -``` +```python >>> 2+3 5 +``` ## Επεξεργασία αρχείων και δεδομένων