From 809940da7fbb14dda7eb6d8a6782995276d3135c Mon Sep 17 00:00:00 2001 From: grossws Date: Thu, 9 Jul 2015 12:27:45 +0300 Subject: [PATCH 01/26] Add more binary viewers/editors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 327bdf6..7e7b306 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ Notes: - The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. -- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. +- For binary files, use `hd`, `hexdump` or `xxd` for simple hex dumps and `bvi` or `biew` for binary editing. - Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. @@ -372,7 +372,7 @@ A few examples of piecing together commands: - `pv`: monitor the progress of data through a pipe -- `hd` and `bvi`: dump or edit binary files +- `hd`, `hexdump`, `xxd`, `biew` and `bvi`: dump or edit binary files - `strings`: extract text from binary files From 8e29e5fc0c7802a76c253e273317213ef228301b Mon Sep 17 00:00:00 2001 From: Dmytro Danylevskyi Date: Fri, 10 Jul 2015 07:33:43 +0300 Subject: [PATCH 02/26] Add shyaml --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7d06371..549b87e 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,8 @@ Notes: - For JSON, use `jq`. +- For Yaml, use `shyaml`. + - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. - For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) is essential for other AWS-related tasks. From 3a26b207565c0452f2d953555f2dd600d529a240 Mon Sep 17 00:00:00 2001 From: Ivgeni Segal Date: Tue, 14 Jul 2015 11:35:46 -0700 Subject: [PATCH 03/26] Update README.md Added Mosh. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index af21393..79337b4 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,8 @@ Notes: - Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. A more minimal alternative for session persistence only is `dtach`. +- Use [`mosh`](https://mosh.mit.edu/) Mobile Shell to wrap your ssh sessions over a stateless UDP so that you never have to manually reconnect when on the road, or when your internet connection gets temporarilly dropped. + - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. - It can be useful to make a few optimizations to your ssh configuration; for example, this `~/.ssh/config` contains settings to avoid dropped connections in certain network environments, uses compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: From 96cbb88ffa4dc00a6b0a9567e84d0cf802296d21 Mon Sep 17 00:00:00 2001 From: Uggla Date: Wed, 12 Aug 2015 10:33:52 +0200 Subject: [PATCH 04/26] Add byobu command. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b854a4..e1c5285 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ Notes: - Use `man ascii` for a good ASCII table, with hex and decimal values. For general encoding info, `man unicode`, `man utf-8`, and `man latin1` are helpful. -- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. A more minimal alternative for session persistence only is `dtach`. +- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is `dtach`. - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. From cf2b1815a63420a76818846e627909989ee9e99e Mon Sep 17 00:00:00 2001 From: Hunter-Github Date: Wed, 12 Aug 2015 13:10:16 +0300 Subject: [PATCH 05/26] A reference to dateutils Adding date-processing utilites according to [#258](https://github.com/jlevy/the-art-of-command-line/issues/258) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9b854a4..3e2baa0 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,8 @@ Notes: - To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). +- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils). + - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. From 579cc225291754d40d085326fcede4e945007170 Mon Sep 17 00:00:00 2001 From: aneasystone Date: Thu, 13 Aug 2015 15:15:23 +0800 Subject: [PATCH 06/26] Cover inode --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a41294..84afca5 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Notes: - Know `ssh`, and the basics of passwordless authentication, via `ssh-agent`, `ssh-add`, etc. -- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. In addition, learn what an inode is, use `ls -i` or `df -i` to perform a deep exploration. - Basic network management: `ip` or `ifconfig`, `dig`. From 878379f868f49ce50daaa08855d40ac51da47b2d Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 14 Aug 2015 02:59:47 +0200 Subject: [PATCH 07/26] sl: update translation --- README-sl.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/README-sl.md b/README-sl.md index c7e8b87..c056705 100644 --- a/README-sl.md +++ b/README-sl.md @@ -53,7 +53,7 @@ Opombe: - Naučite se o preusmeritvi izpisa in vnosa z uporabo `>` in `<` ter uporabo cevi `|`. Vedite, da `>` prepiše izpis datoteke in `>>` ga pripne. Naučite se o stdout in stderr. -- Naučite se o razširitvi datotek glob z `*` (in mogoče `?` ter `{`...`}`) in citiranje ter razliko med dvojnim `"` in enojnim `'` citatom. (Poglejte več o razširitvi spremenljivk spodaj.) +- Naučite se o razširitvi datotek glob z `*` (in mogoče `?` ter `[`...`]`) in citiranje ter razliko med dvojnim `"` in enojnim `'` citatom. (Poglejte več o razširitvi spremenljivk spodaj.) - Seznanite se z upravljanjem nalog Bash-a: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` itd. @@ -70,11 +70,14 @@ Opombe: ## Vsakodnevna uporaba -- V Bash-u uporabite **Tab** za dokončanje argumentov in **ctrl-r**, da iščete skozi zgodovino ukazov (po pritiski, vtipkajte za iskanje, pritisnite **ctrl-r** s ponavljanjem za kroženje skozi več ujemanj, pritisnite **Enter**, da izvršite najdeni ukaz, ali pritisnite desno puščico, da date trenutni rezultat v trenutno vrstico in omogočite urejanje). +- V Bash-u uporabite **Tab** za dokončanje argumentov ali izpis vseh ukazov, ki so na voljo, in **ctrl-r**, da iščete skozi zgodovino ukazov (po pritiski, vtipkajte za iskanje, pritisnite **ctrl-r** s ponavljanjem za kroženje skozi več ujemanj, pritisnite **Enter**, da izvršite najdeni ukaz, ali pritisnite desno puščico, da date trenutni rezultat v trenutno vrstico in omogočite urejanje). - V Bash-u uporabite **ctrl-w**, da izbrišete zadnjo besedo in **ctrl-u**, da izbrišete vse do začetka vrstice. Uporabite **alt-b** in **alt-f**, da se premikate po besedah, **ctrl-a**, da premaknete kurzor na začetek vrstice, **ctrl-e**, da premaknete kurzor na konec vrstice, **ctrl-k**, da ubijete do začetka vrstice, **ctrl-l**, da počistite zaslon. Glejte `man readline` za vse privzete vezave tipk v Bash-u. Na voljo jih je veliko. Na primer **alt-.** kroži skozi prejšnje argumente in **alt-*** razširi glob. -- Alternativno, če imate radi vi-stilske vezave tipk, uporabite `set -o vi`. + +- Alternativno, če imate radi vi-stilske vezave tipk, uporabite `set -o vi` (in `set -o emacs` za povrnitev nazaj). + +- Za urejanje dolgih ukazov, po nastavitvi vašega urejevalnika (na primer `export EDITOR=vim`), **ctrl-x** **ctrl-e** bo odprlo trenutni ukaz v urejevalniku za več vrstično urejanje. Ali v stilu vi, **escape-v**. - 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-.**. @@ -115,6 +118,9 @@ Opombe: - V Bash-u bodite pozorni, saj je veliko vrst razširjenih spremenljivk. Preverjanje, če spremenljivka obstaja: `${name:?error message}`. Na primer, če skripta Bash zahteva en argument, samo napišite `input_file=${1:?usage: $0 input_file}`. Aritmetična raširitev: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Obrezovanje nizov: `${var%suffix}` in `${var#prefix}`. Na primer, če je `var=foo.pdf`, potem `echo ${var%.pdf}.txt` izpiše `foo.txt`. +- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v +`cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). + - Izpis ukaza se lahko tretira kot datoteko preko `<(some command)`. Na primer, primerjajte lokalno `/etc/hosts` z oddaljeno: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) @@ -207,7 +213,7 @@ Opombe: - Če kadarkoli potrebujete zapisati tabulator dobesedno v ukazni vrstici v Bash-u (npr. za sortiranje argumenta -t), pritisnite **ctrl-v** **[Tab]** ali zapišite `$'\t'` (slednji je boljši, saj ga lahko kopirate in prilepite). -- Standardna orodja za popravljanje izvorne kode so `diff` in `patch`. Glejte tudi `diffstat` za povzetek statistike diff-a. Bodite pozorni, saj `diff -r` deluje za celotne direktorije. Uporabite `diff -r tree1 tree2 | diffstat` za povzetek sprememb. +- Standardna orodja za popravljanje izvorne kode so `diff` in `patch`. Glejte tudi `diffstat` za povzetek statistike diff-a in `sdiff` za diff drug ob drugem. Bodite pozorni, saj `diff -r` deluje za celotne direktorije. Uporabite `diff -r tree1 tree2 | diffstat` za povzetek sprememb. Uporabite `vimdiff` za primerjanje in urejanje datotek. - Pri binarnih datotekah uporabite `hd` za enostavne heksadecimalne izpise in `bvi` za binarno urejanje. @@ -222,6 +228,8 @@ Opombe: - Da razcepite datoteke na dele, glejte `split` (da razcepite po velikosti) in `csplit` (da razcepite po vzorcu). +- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils). + - Uporabite `zless`, `zmore`, `zcat` in `zgrep` za operiranje na kompresiranih datotekah. @@ -389,6 +397,8 @@ Nekaj primerov sestavljanja ukazov skupaj: - `units`: pretvorba enot in kalkulacije; pretvori furlonge (osmino milje) na štirinajst dni v dvajsetine točke na blink (glejte tudi `/usr/share/units/definitions.units`) +- `apg`: generira naključna gesla + - `7z`: kompresija datoteke visokega razmerja - `ldd`: informacije dinamične knjižnice @@ -475,7 +485,8 @@ To so elementi pomembni *samo* za MacOS. - [awesome-shell](https://github.com/alebcay/awesome-shell): urejan seznam orodij lupine in virov. - [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. +- [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. ## Pogoji uporabe From 385b9b39ce10409045ad8f9b808d2ece180293c9 Mon Sep 17 00:00:00 2001 From: aneasystone Date: Sat, 15 Aug 2015 18:34:04 +0800 Subject: [PATCH 08/26] The easy way to redirect both standard output and standard error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a41294..519b8f0 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ Notes: - Know about "here documents" in Bash, as in `cat <logfile 2>&1`. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add `logfile 2>&1` or `some-command &>logfile`. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add ` Date: Mon, 17 Aug 2015 00:20:16 -0700 Subject: [PATCH 09/26] Cover set -v, set -u, and more on trap. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d7df0ca..bc5e9f8 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,11 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- In Bash scripts, use `set -x` for debugging output. Use strict modes whenever possible. Use `set -e` to abort on errors. Use `set -o pipefail` as well, to be strict about errors (though this topic is a bit subtle). For more involved scripts, also use `trap`. +- 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 whenever possible: Use `set -e` to abort on errors and `set -o pipefail` as to abort within pipes, too (though this topic is a bit subtle). Use `set -u` to detect unset variable usages. For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like so, which will make it detect and abort on common errors and print a message: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see last command above'" ERR +``` - In Bash scripts, subshells (written with parentheses) are convenient ways to group commands. A common example is to temporarily move to a different working directory, e.g. ```bash @@ -118,7 +122,7 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `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 +- 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). - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: From eb7972cfa97f7ef54e5b7c557c0deb686482fea4 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 17 Aug 2015 00:23:22 -0700 Subject: [PATCH 10/26] Improve last commit. --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bc5e9f8..2705c24 100644 --- a/README.md +++ b/README.md @@ -107,10 +107,10 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- 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 whenever possible: Use `set -e` to abort on errors and `set -o pipefail` as to abort within pipes, too (though this topic is a bit subtle). Use `set -u` to detect unset variable usages. For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like so, which will make it detect and abort on common errors and print a message: +- 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 - trap "echo 'error: Script failed: see last command above'" ERR + trap "echo 'error: Script failed: see failed command above'" ERR ``` - In Bash scripts, subshells (written with parentheses) are convenient ways to group commands. A common example is to temporarily move to a different working directory, e.g. @@ -122,8 +122,7 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `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). +- 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). - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: ```sh From 8c86fcfef9f396408d3538500ec4e6ddf48b8df3 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Tue, 18 Aug 2015 00:53:18 +0200 Subject: [PATCH 11/26] sl: Update translation --- README-sl.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README-sl.md b/README-sl.md index c056705..87bf63d 100644 --- a/README-sl.md +++ b/README-sl.md @@ -107,7 +107,11 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. -- V skriptah Bash uporabite `set -x` za razhroščevanje izpisa. Uporabite striktni način, kadarkoli je možno. Uporabite `set -e`, da prekinete na napakah. Uporabite tudi `set -o pipefail`, da ste striktni glede napak (čeprav je ta tema nekoliko subtilna). Za bolj vključene skripte uporabite tudi `trap`. +- 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 + trap "echo 'error: Script failed: see failed command above'" ERR +``` - V skriptah Bash so podlupine (napisane z oklepaji) priročen način za grupiranje ukazov. Skupen primer je začasno premakniti na različen delovni direktorij, npr. ```bash @@ -118,8 +122,7 @@ Opombe: - V Bash-u bodite pozorni, saj je veliko vrst razširjenih spremenljivk. Preverjanje, če spremenljivka obstaja: `${name:?error message}`. Na primer, če skripta Bash zahteva en argument, samo napišite `input_file=${1:?usage: $0 input_file}`. Aritmetična raširitev: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Obrezovanje nizov: `${var%suffix}` in `${var#prefix}`. Na primer, če je `var=foo.pdf`, potem `echo ${var%.pdf}.txt` izpiše `foo.txt`. -- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v -`cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). +- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v `cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). - Izpis ukaza se lahko tretira kot datoteko preko `<(some command)`. Na primer, primerjajte lokalno `/etc/hosts` z oddaljeno: ```sh @@ -128,7 +131,7 @@ Opombe: - Spoznajte t.i. "here" dokumente v Bash-u, kot pri `cat <logfile 2>&1`. Pogosto zagotavlja, da ukaz ne pusti ročaja odprte datoteke za standardni vnos, kar ga veže na terminal v katerem se nahajate, je tudi dobra praksa, da dodate `logfile 2>&1` ali `some-command &>logfile`. Pogosto zagotavlja, da ukaz ne pusti ročaja odprte datoteke za standardni vnos, kar ga veže na terminal v katerem se nahajate, je tudi dobra praksa, da dodate ` Date: Sat, 29 Aug 2015 14:22:12 +0900 Subject: [PATCH 12/26] add Japanese translation --- README-ja.md | 452 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 452 insertions(+) create mode 100644 README-ja.md diff --git a/README-ja.md b/README-ja.md new file mode 100644 index 0000000..bdc35bd --- /dev/null +++ b/README-ja.md @@ -0,0 +1,452 @@ +原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) + +# The Art of Command Line + +[![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) +- [基本](#basics) +- [日常的に使うもの](#everyday-use) +- [ファイルとデータの処理](#processing-files-and-data) +- [システムのデバッグ](#system-debugging) +- [ワンライナー](#one-liners) +- [目立たないが便利なもの](#obscure-but-useful) +- [さらなるリソース](#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](https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/cowsay.png) + +コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるでしょう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものです。ここでは、Linuxでコマンドラインを使う上で便利だと思ったメモやTipsの数々を挙げてみます。あるものは基礎的ですが、非常に詳しいもの、洗練されたもの、曖昧なものもあります。このページはそんなに長いものではないですが、ここに書いてあることの全てを使ったり思い出すことができれば、かなり詳しくなれるでしょう。 + +ここに書いてあることの多くは、[元々](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)[Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know)に[書かれて](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)いたものが多いですが、私よりももっと優れた人たちがすぐに改善案を出すことができるGithubに置くのがよいのではと思ったのです(訳注 : 原文はGithub上にあります)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストをください!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認してください) + +## メタ情報 + +対象 : + +- このガイドは、初心者向けでも経験者向きでもあります。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしています。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるでしょう。 +- Linux向けに書いています。多くはMacOS(あるいはCygwin)でも使えますが、全部ではありません。 +- インタラクティブなBashを使うことを想定していますが、多くの項目は他のシェルやBashのスクリプトでも使えるでしょう。 + +注意 : + +- 1ページ内に収めるために、内容には暗黙的に書かれていることがあります。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるでしょう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使いましょう。 +- コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。 + +## 基本 + +- 基本的なBashを学ぼう。実際のところ、`man bash`は結構簡単に理解できるしそんなに長くないので、これで一通りのことは分かる。それ以外のシェルもよいが、Bashは強力だし、常に使用可能であるという利点もある(自分のPCに入れてしまったと言ってzshやfishなど*だけ*を学んでしまうと、既存のサーバを触らなくてはならない時などに制約が出てしまう)。 + +- テキストエディタのどれか最低1つに習熟しよう。ターミナル内で適当にものを書くにあたって他に全く代替品がないという点で、理想的にはVim(`vi`)がよいだろう(通常はEmacsや高機能なIDEや最新のかっこいいエディタをメインに使っていたとしても)。 + +- `man`でのドキュメントの読み方を知ろう(知りたがりのために書くと、`man man`でセクション番号が分かる。例えば1は「一般的な」コマンド、5はファイルやそのお作法、8は管理についてといった具合)。`apropos`でmanページを探そう。コマンドによっては実行可能ファイルではなくBashのビルトインコマンドであることを理解し、`help`や`help -d`でヘルプが見られることを知ろう。 + +- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。stdout(標準出力)とstderr(標準エラー出力)を学ぼう。 + +- `*`(または`?`や`{`...`}`)を使ったファイルグロブ展開、クォーテーション、ダブルクォート`"`とシングルクォート`'`の違いを学ぼう(詳しくはこの後の変数展開の項を参照)。 + +- `&`、**ctrl-z**、**ctrl-c**、`jobs`、`fg`、`bg`、`kill`など、Bashのジョブ管理について詳しくなろう。 + +- `ssh`について知るとともに、`ssh-agent`や`ssh-add`を使ったパスワードなしの認証の基本について理解しよう。 + +- ファイル管理について。`ls`や`ls -l`(特に、`ls -l`の各列が何を意味するか理解)、`less`、`head`、`tail`、`tail -f`(または`less +F`)、`ln`と`ln -s`(ハードリンクとソフトリンクの違いとそれぞれの利点の理解)、`chown`と`chmod`、`du`(ディスク使用量まとめを簡単に見るなら`du -sk *`)。ファイルシステム管理については、`df`、`mount`、`fdisk`、`mkfs`、`lsblk`。 + +- 基本的なネットワーク管理について。`ip`あるいは`ifconfig`、`dig`。 + +- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-A`、`-B`といったオプションは知っておいて損はない。 + +- `apt-get`、`yum`、`dnf`、`pacman`(ディストリビューションによって違う)といったコマンドでパッケージを探したりインストールする方法を学ぼう。Pythonベースのコマンドラインツールをインストールするのに、`pip`も必要だ(後に出てくるいくつかのコマンドは`pip`でインストールするのが一番簡単)。 + + +## 日常的に使うもの + +- Bashでは、引数を補完するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。 + +- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**。Bashにおけるデフォルトのキー割り当てを全て見るには``man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 + +- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。 + +- 最近実行したコマンドを確認するなら`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`で、どんなプロセスがリッスンしているか確認しよう(UDPなら`-u`を付ける)。 + +- 開かれているソケットやファイルを見るには`lsof`も参照。 + +- Bashスクリプトでは、`set -x`でデバッグ出力を出せる。可能なら厳格モードを使い、エラーが起きたら強制終了するよう`set -e`する。パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、`trap`も使おう。 + +- Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するというよくある例。 + +```bash + # カレントディレクトリで何か実行 + (cd /some/other/dir && other-command) + # 元のディレクトリで作業続行 +``` + +- Bashでは、たくさんの変数展開の種類があることを覚えておこう。変数が存在するかチェックするなら、`${name:?error message}`。例えば、Bashスクリプトが1つの引数を取る必要があるなら、`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`を比較するなら以下のようになる。 + +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- `cat <logfile 2>&1`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、`; ::Any-NFC; ' < input.txt > output.txt +``` + +- ファイルを分割するなら`split`(サイズで分割)と`csplit`(パターンで分割)。 + +- 圧縮ファイルの操作は`zless`、`zmore`、`zcat`、`zgrep`。 + +## システムのデバッグ + +- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jakubroztocil/httpie)。 + +- ディスクやCPU、ネットワークのステータスを知るには`iostat`、`netstat`、`top`(あるいは`htop`の方がよい)、(一番は)`dstat`。システムで何が起きているのか素早く知るにはよい。 + +- 更に詳しいシステムの全体像を見るには、[`glances`](https://github.com/nicolargo/glances)を使おう。ひとつのターミナル内で、いくつかのシステムレベルの統計情報を表示してくれる。複数のサブシステムを素早くチェックするのに非常に便利。 + +- メモリのステータスを知るには、`free`あるいは`vmstat`を実行し、その出力の意味を理解しよう。特に、"cached"の値はLinuxカーネルにファイルキャッシュとして保持されているメモリ量であり、"free"の値を見る際に考慮すべきであることに注意しよう。 + +- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。 + +- 改良版tracerouteとして`mtr`を使ってネットワークの問題を調査しよう。 + +- ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 + +- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、`iftop`あるいは`nethogs`を試そう。 + +- `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 + +- より確実なネットワークのデバッグは`wireshark`、`tshark`、`ngrep`。 + +- `strace`と`ltrace`について知っておこう。プログラムの実行に失敗したりハングしたりクラッシュしたりして、その理由が分からない、あるいはパフォーマンスに関する一般的情報を知りたいなら、このツールが役立つはずだ。プロファイリングのオプション(`-c`)や起動中のプロセスにアタッチする機能(`-p`)も覚えておこう。 + +- 共有ライブラリをチェックするなら`ldd`を覚えておこう。 + +- 起動中のプロセスに`gdb`で接続し、そのスタックトレースを取る方法を知ろう。 + +- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps`。 + +- 過去に何か問題が起きたことの原因を探るなら、`sar`がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 + +- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux))、 +[`sysdig`](https://github.com/draios/sysdig)。 + +- どのディストリビューションを使っているか確認しよう。多くのディストリビューションでは`lsb_release -a` + +- 何かいつもと違うおかしなこと(大抵ハードウェアかドライバ関連の問題だ)が起きていたら、`dmesg`を実行しよう。 + +## ワンライナー + +コマンドをまとめて使う例をいくつか。 + +- `sort`や`uniq`を使ってテキストファイルの共通部分、結合、差異を求める時に特に便利なのが以下のやり方。`a`と`b`はそれぞれ内容に重複のないテキストファイルとする。この方法は高速で、数GB程度までの任意のファイルサイズで動作する(`/tmp`が小さなルートパーティションにある場合は`-T`オプションをつける必要があるが、ソートはメモリ内で行われるとは限らない)。上述の`LC_ALL`と`sort`の`-u`オプションも参照のこと。 + +```sh + 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の差異 +``` + +- コンフィグが含まれている`/sys`や`/proc`や`/etc/`のようなディレクトリ内の全てのファイルの中身全部を確認するには`grep . *`を使おう。 + +- テキストファイルの3列目を全て足し合わせるには以下で(Pythonで同じことをやるに比べて3倍速く3分の1の長さで書ける)。 + +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- ファイルツリーのサイズやデータを確認したいなら、以下は再帰的な`ls -l`と同じだが`ls -lR`より見やすい。 + +```sh + find . -type f -ls +``` + +- 事情が許すなら`xargs`や`parallel`を使おう。行あたりいくつのアイテムを実行するか(`-L`)や並列度(`-P`)は制御できるのにも注意。正しく使えているか心配な時には、xargs echoをまずやってみよう。また、`-I{}`も便利だ。以下の例をみてみよう。 + +```sh + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- Webサーバのログのようなテキストファイルがあり、各行には例えばURLの中に出てくる`acct_id`のような特定の値が現れるとしよう。`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`: タブとスペースの相互変換 + +- `nl`: 行数を表示 + +- `seq`: 数字を表示 + +- `bc`: 計算機 + +- `factor`: 整数を因数分解 + +- `gpg`: 暗号化とファイルのサイニング + +- `toe`: terminfoのエントリのテーブルを表示 + +- `nc`: ネットワークのデバッグとデータ転送 + +- `socat`: ソケットリレーとTCPポートのフォワーダ(`netcat`と同等) + +- `slurm`: ネットワークトラフィックの可視化 + +- `dd`: データをファイルあるいはデバイス間で移動 + +- `file`: ファイルの種類を特定 + +- `tree`: ディレクトリとサブディレクトリをツリーで表示。`ls`に似ているが再帰的に動く + +- `stat`: ファイルの情報 + +- `tac`: ファイルを逆から表示 + +- `shuf`: ファイルからランダムに選んだ行を表示 + +- `comm`: ソート済みファイルの行を比較 + +- `pv`: パイプ経由でデータの進行状況をモニタリング + +- `hd` および `bvi`: バイナリファイルのダンプと編集 + +- `strings`: バイナリファイルからテキストを抽出 + +- `tr`: 文字の置き換えと操作 + +- `iconv` あるいは `uconv`: 文字エンコーディングの変換 + +- `split ` と `csplit`: ファイルを分割 + +- `units`: 単位の変換と計算。2週間あたりのハロン(訳注 : 長さの単位)からまばたきごとのトゥウィップまで( `/usr/share/units/definitions.units`も参照のこと) + +- `7z`: 圧縮率の高いファイル圧縮 + +- `ldd`: 動的ライブラリの情報 + +- `nm`: オブジェクトファイルからシンボルを表示 + +- `ab`: Webサーバのベンチーマーク + +- `strace`: システムコールのデバッグ + +- `mtr`: ネットワークデバッグのためのより高機能なtraceroute + +- `cssh`: ビジュアルな並列シェル + +- `rsync`: ファイルやフォルダをSSH経由で同期 + +- `wireshark` と `tshark`: パケットキャプチャとネットワークデバッギング + +- `ngrep`: ネットワーク層のgrep + +- `host` と `dig`: DNS名前解決 + +- `lsof`:プロセスのファイルディスクリプタとソケット情報 + +- `dstat`: 便利なシステム情報 + +- [`glances`](https://github.com/nicolargo/glances): 高レベルに複数のサブシステムの概要を把握 + +- `iostat`: CPUとディスクの使用状況 + +- `htop`: topの改良版 + +- `last`: ログイン履歴 + +- `w`: 誰がログインしているか + +- `id`: ユーザやグループの情報 + +- `sar`: システム統計情報の履歴 + +- `iftop` または `nethogs`: ソケットあるいはプロセスごとのネットワーク使用量 + +- `ss`: ソケットの統計情報 + +- `dmesg`: 起動時とシステムのエラーメッセージ + +- `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 + +- `lsb_release`: Linuxディストリビューション情報 + +- `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー + +- `lshw` と `lspci`: RAIDやグラフィックなどを含めたハードウェア情報 + +- `fortune`、 `ddate`、`sl`: んー、あー、これは蒸気機関車やZippyの引用句が「便利」だと思うかどうかによる + +## さらなるリソース + +- [awesome-shell](https://github.com/alebcay/awesome-shell): シェルのツールやリソースのまとめ +- よりよいシェルスクリプトを書くには[Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) + +## 免責事項 + +ごく一部の例外はありますが、コードは誰でも読めるように書かれています。力には責任が伴います。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 Licene](http://creativecommons.org/licenses/by-sa/4.0/)でライセンスされます。 From 57f3609cc3234bf5b7c969b7b97626417e3d3901 Mon Sep 17 00:00:00 2001 From: doublemarket Date: Sat, 29 Aug 2015 14:31:39 +0900 Subject: [PATCH 13/26] add links to other languages --- README-ja.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index bdc35bd..ce539c9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,4 +1,6 @@ -原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) +[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] + +原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) # The Art of Command Line From 901c4e23bc3c97cca758ce3f8830a7ddf966c708 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Sun, 20 Sep 2015 22:54:58 -0700 Subject: [PATCH 14/26] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2705c24..ca0edd5 100644 --- a/README.md +++ b/README.md @@ -376,6 +376,10 @@ A few examples of piecing together commands: - `time`: execute and time a command +- `lockfile`: create semaphore file that can only be removed by `rm -f` + +- `logrotate`: rotate, compress and mail logs. + - `watch`: run a command repeatedly, showing results and/or highlighting changes - `tac`: print files in reverse From baa0b9c731f7138c1fcdb9fe8eec368e4f48f895 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:43:04 -0700 Subject: [PATCH 15/26] Tweak language for #273. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f795f0c..9c9af7c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Notes: - Know `ssh`, and the basics of passwordless authentication, via `ssh-agent`, `ssh-add`, etc. -- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. In addition, learn what an inode is, use `ls -i` or `df -i` to perform a deep exploration. +- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Learn what an inode is (`ls -i` or `df -i`). - Basic network management: `ip` or `ifconfig`, `dig`. From 1d44566903252c2cf1da7b9c66d83e74061bdeb3 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:46:38 -0700 Subject: [PATCH 16/26] Updates for #181. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 284c62b..7c67397 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ Notes: - For JSON, use [`jq`](http://stedolan.github.io/jq/). -- For Yaml, use `shyaml`. +- For YAML, use [`shyaml`](https://github.com/0k/shyaml). - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. From 9cb359aa94c74cfcd1ca77c772136ff36de01780 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:51:59 -0700 Subject: [PATCH 17/26] ru: Heading typo. Fixes #168. --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 46b6401..61a28bb 100644 --- a/README-ru.md +++ b/README-ru.md @@ -12,7 +12,7 @@ - [Системный дебаггинг](#Системный-дебаггинг) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [MacOS X only](#Macos-x-only) +- [MacOS X only](#macos-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) From bcb9b06a0c0cfaf02b110bd8bbc620c21f9e374d Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:57:04 -0700 Subject: [PATCH 18/26] Updates to #205. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c67397..64f4bc6 100644 --- a/README.md +++ b/README.md @@ -137,8 +137,6 @@ Notes: - Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is `dtach`. -- Use [`mosh`](https://mosh.mit.edu/) Mobile Shell to wrap your ssh sessions over a stateless UDP so that you never have to manually reconnect when on the road, or when your internet connection gets temporarilly dropped. - - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. - It can be useful to make a few optimizations to your ssh configuration; for example, this `~/.ssh/config` contains settings to avoid dropped connections in certain network environments, uses compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: @@ -154,6 +152,8 @@ Notes: - A few other options relevant to ssh are security sensitive and should be enabled with care, e.g. per subnet or host or in trusted networks: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Consider [`mosh`](https://mosh.mit.edu/) an an alternative to ssh that uses UDP, avoiding dropped connections and adding convenience on the road (requires server-side setup). + - To get the permissions on a file in octal form, which is useful for system configuration but not available in `ls` and easy to bungle, use something like ```sh stat -c '%A %a %n' /etc/timezone From ac86b5e586f71ff2ff3750f56112743be31bb700 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 23 Sep 2015 12:40:35 +0200 Subject: [PATCH 19/26] sl: update Slovenian translation --- README-sl.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README-sl.md b/README-sl.md index 87bf63d..6decdb8 100644 --- a/README-sl.md +++ b/README-sl.md @@ -59,7 +59,7 @@ Opombe: - Spoznajte `ssh` in osnove avtentikacije brez gesla, preko `ssh-agent`, `ssh-add` itd. -- Osnovno upravljanje datotek: `ls` in `ls -l` (še posebej se naučite, kaj vsak stolpec v `ls -l` pomeni), `less`, `head`, `tail` in `tail -f` (ali celo boljše, `less +F`), `ln` in `ln -s` (naučite se razlike in prednosti trdih in mehkih povezav), `chown`, `chmod`, `du` (za hiter povzetek uporabe diska: `du -hs *`). Za upravljanje datotečnega sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Osnovno upravljanje datotek: `ls` in `ls -l` (še posebej se naučite, kaj vsak stolpec v `ls -l` pomeni), `less`, `head`, `tail` in `tail -f` (ali celo boljše, `less +F`), `ln` in `ln -s` (naučite se razlike in prednosti trdih in mehkih povezav), `chown`, `chmod`, `du` (za hiter povzetek uporabe diska: `du -hs *`). Za upravljanje datotečnega sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Naučite se, kaj je inode (`ls -i` or `df -i`). - Osnovno upravljanje omrežja: `ip` or `ifconfig`, `dig`. @@ -135,7 +135,7 @@ Opombe: - Uporabite `man ascii` za dobro tabelo ASCII s heksadecimalnimi in decimalnimi vrednostmi. Za splošne informacije enkodiranja so priročni `man unicode`, `man utf-8` in `man latin1`. -- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. Bolj minimalna alternativa za samo obstojnost sej je `dtach`. +- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. `byobu` lahko poveča t.i. screen ali tmux s ponujanjem več informacij in enostavnejšim upravljanjem. Bolj minimalna alternativa za samo obstojnost sej je `dtach`. - V ssh je poznavanje, kako usmeriti tunel z `-L` ali `-D` (in občasno `-R`) je uporaben, npr. za dostopanje do spletnih strani iz oddaljenega strežnika. @@ -152,6 +152,8 @@ Opombe: - Nekaj ostalih opcij relevantnih za ssh je varnostno občutljivih in bi morale biti omogočene s pazljivostjo, npr. na podomrežju ali gostitelju ali v zaupljivih omrežjih: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Premislite o [`mosh`](https://mosh.mit.edu/) kot alternativi za ssh, ki uporablja UDP, da se izognete padlim povezavam in dodate priročnost, ko ste na poti (zahteva nastavitev strežniške strani). + - Da dobite pravice na datoteki v osmiškem zapisu, ki je uporaben za nastavitve sistema vendar ni na voljo pri `ls` in enostaven za mešanje, uporabite nekaj takega kot je ```sh stat -c '%A %a %n' /etc/timezone @@ -181,6 +183,8 @@ Opombe: - Za JSON, use [`jq`](http://stedolan.github.io/jq/). +- Za YAML, uporabite [`shyaml`]((https://github.com/0k/shyaml). + - Za Excel ali CSV datoteke, [csvkit](https://github.com/onyxfish/csvkit) ponuja `in2csv`, `csvcut`, `csvjoin`, `csvgrep` itd. - Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) je bistven za druga AWS-povezana opravila. @@ -376,6 +380,10 @@ Nekaj primerov sestavljanja ukazov skupaj: - `time`: izvrši in da ukaz v čas +- `lockfile`: ustvari semaforno datoteko, ki je lahko odstranjena samo z `rm -f` + +- `logrotate`: rotiranje, kompresiranje in pošiljanje dnevnikov po e-pošti. + - `watch`: večkrat požene ukaz in prikazuje rezultate in/ali poudari spremembe - `tac`: izpiše datoteke v obratnem redu From 4b5e02023b1d4c119cf0d106658e582fe7834314 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 24 Sep 2015 14:22:12 -0700 Subject: [PATCH 20/26] Add saws. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 64f4bc6..945748b 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,7 @@ Notes: - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. -- For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) is essential for other AWS-related tasks. +- For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) and the improved [`saws`](https://github.com/donnemartin/saws) are essential for other AWS-related tasks. - Know about `sort` and `uniq`, including uniq's `-u` and `-d` options -- see one-liners below. See also `comm`. From 8493487551acbbcd69ad698b2a974fc184fa3048 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 25 Sep 2015 01:50:13 +0200 Subject: [PATCH 21/26] sl: update translation --- README-sl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-sl.md b/README-sl.md index 6decdb8..6520b89 100644 --- a/README-sl.md +++ b/README-sl.md @@ -187,7 +187,7 @@ Opombe: - Za Excel ali CSV datoteke, [csvkit](https://github.com/onyxfish/csvkit) ponuja `in2csv`, `csvcut`, `csvjoin`, `csvgrep` itd. -- Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) je bistven za druga AWS-povezana opravila. +- Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) in izboljšan [`saws`](https://github.com/donnemartin/saws) sta bistvena za druga AWS-povezana opravila. - Naučite se o `sort` in `uniq` vključno z uniq-ovima opcijama `-u` in `-d` -- glejte spodaj sekcijo v eni vrstici. Glejte tudi `comm`. From f5b99f85f7ae3391ceff751be56153c5e5b2f1f0 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Wed, 30 Sep 2015 01:29:11 -0700 Subject: [PATCH 22/26] Track and ackowledge authors. This is my best effort at tracking roles from GitHub history, and assembling them with a new script, "ghizmo assemble-authors". Please let me know if you've been missed! --- AUTHORS.md | 87 ++++++++++++++++++++++++++++++++++++++++++ README.md | 5 ++- admin/authors-info.yml | 32 ++++++++++++++++ 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 AUTHORS.md create mode 100644 admin/authors-info.yml diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..9e8450f --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,87 @@ +# Authors + +This work is the result of the effort of many people around the world. +Contributors are listed in alphabetical order by GitHub id. +This file is maintained only in English. + + +* [Guo Chong (Armour)](https://github.com/Armour) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour)] — _translator (zh)_ +* [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf)] — _translator (es)_ +* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux)] +* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges)] +* [Vincent Wong (EaterOA)](https://github.com/EaterOA) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA)] +* [Hunter-Github](https://github.com/Hunter-Github) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github)] +* [曾楚杰 (Psycho7)](https://github.com/Psycho7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7)] — _translator and maintainer (zh)_ +* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL)] +* [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436)] — _translator (ko)_ +* [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty)] +* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra)] +* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun)] — _translator and maintainer (ko)_ +* [Antonio Ossa (aaossa)](https://github.com/aaossa) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa)] — _translator (es)_ +* [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan)] +* [Semir Patel (analogue)](https://github.com/analogue) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue)] +* [Desmond Stonie (aneasystone)](https://github.com/aneasystone) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone)] +* [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth)] +* [Bryce J. (bj1)](https://github.com/bj1) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1)] +* [Arturo Fernandez (bsnux)](https://github.com/bsnux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux)] +* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex)] +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo)] — _translator and maintainer (es)_ +* [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl)] +* [Corey "See More" Richardson (cmr)](https://github.com/cmr) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr)] +* [Chris Rhodes (crr0004)](https://github.com/crr0004) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004)] +* [Chelsea Voss (csvoss)](https://github.com/csvoss) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss)] +* [Daniel t. (danasmera)](https://github.com/danasmera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera)] +* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi)] +* [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] +* [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] +* [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] +* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] +* [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ +* [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] +* [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ +* [grossws (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] +* [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] +* [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ +* [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] +* [Alan Brogan (jalanb)](https://github.com/jalanb) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb)] +* [Joshua Levy (jlevy)](https://github.com/jlevy) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy)] — _original author and maintainer_ +* [Jesse Sightler (jsight)](https://github.com/jsight) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight)] +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub)] +* [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit)] +* [Colin Chan (kalgynirae)](https://github.com/kalgynirae) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae)] +* [Michail Kargakis (kargakis)](https://github.com/kargakis) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis)] +* [kstn (kastian)](https://github.com/kastian) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian)] — _translator (ru)_ +* [Kesu J (kesu)](https://github.com/kesu) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu)] +* [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13)] +* [Pavel Zhukov (landgraf)](https://github.com/landgraf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf)] +* [Matjaž Lipuš (matjaz)](https://github.com/matjaz) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz)] +* [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera)] +* [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7)] +* [Harry Moreno (morenoh149)](https://github.com/morenoh149) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149)] +* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques)] — _translator and maintainer (pt)_ +* [Oleg Berman (olegberman)](https://github.com/olegberman) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman)] — _translator and maintainer (ru)_ +* [osmero](https://github.com/osmero) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero)] — _translator (ru)_ +* [Serg Petrov (p12se)](https://github.com/p12se) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se)] +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot)] — _translator and maintainer (sl)_ +* [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane)] +* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808)] +* [Kit Chan (shukitchan)](https://github.com/shukitchan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan)] +* [Simarpreet Singh (simar7)](https://github.com/simar7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7)] +* [spmbt (spmbt)](https://github.com/spmbt) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt)] — _translator (ru)_ +* [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam)] — _translator (zh)_ +* [taxusyew](https://github.com/taxusyew) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew)] +* [Sungjin Kang (ujuc)](https://github.com/ujuc) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc)] — _translator (ko)_ +* [Joe Block (unixorn)](https://github.com/unixorn) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn)] +* [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva)] — _translator (pt)_ +* [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx)] +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro)] +* [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang)] — _translator (zh)_ +* [Alex F. (youmee)](https://github.com/youmee) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee)] +* [Zack Piper (zackp30)](https://github.com/zackp30) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30)] +* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd)] + +If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. + + + +(This file was auto-generated by [ghizmo assemble-authors](https://github.com/jlevy/ghizmo).) \ No newline at end of file diff --git a/README.md b/README.md index 945748b..9df04bb 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,14 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that I've found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot. +Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that we've found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot. +This work is the result of [many authors and translators](AUTHORS.md). Much of this [originally](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [appeared](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) on [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -but given the interest there, it seems it's worth using Github, where people more talented than I can readily suggest improvements. If you see an error or something that could be better, please submit an issue or PR! (Of course please review the meta section and existing PRs/issues first.) +but given the interest there, it seemed worth using GitHub, where people more talented than the original author could readily suggest improvements. If you see an error or something that could be better, please submit an issue or PR! (Of course please review the meta section and existing PRs/issues first.) ## Meta diff --git a/admin/authors-info.yml b/admin/authors-info.yml new file mode 100644 index 0000000..a7b4a63 --- /dev/null +++ b/admin/authors-info.yml @@ -0,0 +1,32 @@ +# This file is used to configure the "ghizmo assemble-authors" command. + +header: | + This work is the result of the effort of many people around the world. + Contributors are listed in alphabetical order by GitHub id. + This file is maintained only in English. + +footer: | + If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. + +roles: + jlevy: original author and maintainer + ceoaliongroo: translator and maintainer (es) + aaossa: translator (es) + BishopWolf: translator (es) + Ungsik-Yun: translator and maintainer (ko) + Snowcat8436: translator (ko) + ujuc: translator (ko) + hunkim: translator (ko) + niltonvasques : translator and maintainer (pt) + vcvpaiva: translator (pt) + olegberman: translator and 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) + xuchunyang: translator (zh) + stevenlordiam: translator (zh) + Armour: translator (zh) From 3c35319413c2e45b8f4af6b2a94b98f569964172 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 1 Oct 2015 09:37:03 -0700 Subject: [PATCH 23/26] ja: Add links and new translator/maintainer. Following #283. --- AUTHORS.md | 3 ++- README-es.md | 4 +++- README-ja.md | 4 +++- README-ko.md | 4 +++- README-pt.md | 4 +++- README-ru.md | 4 +++- README-sl.md | 4 +++- README-zh.md | 4 +++- README.md | 4 +++- admin/authors-info.yml | 1 + 10 files changed, 27 insertions(+), 9 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 9e8450f..b3cdfe9 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -35,11 +35,12 @@ This file is maintained only in English. * [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] * [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] +* [doublemarket (doublemarket)](https://github.com/doublemarket) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket)] — _translator and maintainer (ja)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] * [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ * [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ -* [grossws (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] +* [Konstantin Gribov (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] * [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] * [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ * [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] diff --git a/README-es.md b/README-es.md index e212b80..ac0e7ba 100644 --- a/README-es.md +++ b/README-es.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # El Arte del Terminal diff --git a/README-ja.md b/README-ja.md index ce539c9..2e5a31f 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index aec2dd1..d576ce3 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 70e79b4..fc066e0 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 61a28bb..644896a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 6520b89..be6d3c6 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # Umetnost ukazne vrstice diff --git a/README-zh.md b/README-zh.md index e125835..b595d98 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # 命令行的艺术 diff --git a/README.md b/README.md index 9df04bb..29271c3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # The Art of Command Line diff --git a/admin/authors-info.yml b/admin/authors-info.yml index a7b4a63..8ef5bef 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -13,6 +13,7 @@ roles: ceoaliongroo: translator and maintainer (es) aaossa: translator (es) BishopWolf: translator (es) + doublemarket: translator and maintainer (ja) Ungsik-Yun: translator and maintainer (ko) Snowcat8436: translator (ko) ujuc: translator (ko) From efd60f49e775a4debb675e93212d5ba9d79258e5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 3 Oct 2015 14:16:06 -0700 Subject: [PATCH 24/26] A few fixups to author tracking. Sort case-insensitively. Track commits/issues. Drop gitter-badger robot. Improves #289. --- AUTHORS.md | 155 +++++++++++++++++++++-------------------- admin/authors-info.yml | 9 ++- 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index b3cdfe9..17819c4 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,85 +1,86 @@ # Authors This work is the result of the effort of many people around the world. -Contributors are listed in alphabetical order by GitHub id. -This file is maintained only in English. +Contributors are listed in alphabetical order by GitHub login. -* [Guo Chong (Armour)](https://github.com/Armour) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour)] — _translator (zh)_ -* [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf)] — _translator (es)_ -* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux)] -* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges)] -* [Vincent Wong (EaterOA)](https://github.com/EaterOA) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA)] -* [Hunter-Github](https://github.com/Hunter-Github) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github)] -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7)] — _translator and maintainer (zh)_ -* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL)] -* [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436)] — _translator (ko)_ -* [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty)] -* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra)] -* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun)] — _translator and maintainer (ko)_ -* [Antonio Ossa (aaossa)](https://github.com/aaossa) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa)] — _translator (es)_ -* [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan)] -* [Semir Patel (analogue)](https://github.com/analogue) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue)] -* [Desmond Stonie (aneasystone)](https://github.com/aneasystone) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone)] -* [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth)] -* [Bryce J. (bj1)](https://github.com/bj1) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1)] -* [Arturo Fernandez (bsnux)](https://github.com/bsnux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux)] -* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex)] -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo)] — _translator and maintainer (es)_ -* [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl)] -* [Corey "See More" Richardson (cmr)](https://github.com/cmr) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr)] -* [Chris Rhodes (crr0004)](https://github.com/crr0004) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004)] -* [Chelsea Voss (csvoss)](https://github.com/csvoss) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss)] -* [Daniel t. (danasmera)](https://github.com/danasmera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera)] -* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi)] -* [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] -* [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] -* [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] -* [doublemarket (doublemarket)](https://github.com/doublemarket) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket)] — _translator and maintainer (ja)_ -* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] -* [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ -* [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] -* [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ -* [Konstantin Gribov (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] -* [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] -* [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ -* [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] -* [Alan Brogan (jalanb)](https://github.com/jalanb) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb)] -* [Joshua Levy (jlevy)](https://github.com/jlevy) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy)] — _original author and maintainer_ -* [Jesse Sightler (jsight)](https://github.com/jsight) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight)] -* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub)] -* [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit)] -* [Colin Chan (kalgynirae)](https://github.com/kalgynirae) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae)] -* [Michail Kargakis (kargakis)](https://github.com/kargakis) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis)] -* [kstn (kastian)](https://github.com/kastian) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian)] — _translator (ru)_ -* [Kesu J (kesu)](https://github.com/kesu) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu)] -* [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13)] -* [Pavel Zhukov (landgraf)](https://github.com/landgraf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf)] -* [Matjaž Lipuš (matjaz)](https://github.com/matjaz) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz)] -* [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera)] -* [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7)] -* [Harry Moreno (morenoh149)](https://github.com/morenoh149) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149)] -* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques)] — _translator and maintainer (pt)_ -* [Oleg Berman (olegberman)](https://github.com/olegberman) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman)] — _translator and maintainer (ru)_ -* [osmero](https://github.com/osmero) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero)] — _translator (ru)_ -* [Serg Petrov (p12se)](https://github.com/p12se) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se)] -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot)] — _translator and maintainer (sl)_ -* [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane)] -* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808)] -* [Kit Chan (shukitchan)](https://github.com/shukitchan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan)] -* [Simarpreet Singh (simar7)](https://github.com/simar7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7)] -* [spmbt (spmbt)](https://github.com/spmbt) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt)] — _translator (ru)_ -* [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam)] — _translator (zh)_ -* [taxusyew](https://github.com/taxusyew) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew)] -* [Sungjin Kang (ujuc)](https://github.com/ujuc) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc)] — _translator (ko)_ -* [Joe Block (unixorn)](https://github.com/unixorn) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn)] -* [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva)] — _translator (pt)_ -* [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx)] -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro)] -* [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang)] — _translator (zh)_ -* [Alex F. (youmee)](https://github.com/youmee) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee)] -* [Zack Piper (zackp30)](https://github.com/zackp30) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30)] -* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd)] +* [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) +* [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)_ +* [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) +* [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)_ +* [Bryce J. (bj1)](https://github.com/bj1) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1) +* [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) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[11+](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) +* [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) +* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi) +* [Dave Loyall (daveloyall)](https://github.com/daveloyall) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall) +* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges) +* [James 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) +* [doublemarket (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) +* [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) +* [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) +* [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) +* [Ivgeni 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) +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [102+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](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) +* [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) +* [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) +* [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) +* [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) +* [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) +* [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) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[18+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [16+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [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) +* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808) +* [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) +* [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)_ +* [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) +* [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) +* [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) +* [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)_ +* [Alex F. (youmee)](https://github.com/youmee) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee) +* [Zack Piper (zackp30)](https://github.com/zackp30) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30) +* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd) + +Numbers link to commits/issues. +For simplicity, this file is maintained only in English. If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 8ef5bef..77c54cd 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -2,12 +2,17 @@ header: | This work is the result of the effort of many people around the world. - Contributors are listed in alphabetical order by GitHub id. - This file is maintained only in English. + Contributors are listed in alphabetical order by GitHub login. footer: | + Numbers link to commits/issues. + For simplicity, this file is maintained only in English. + If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. +exclude: + gitter-badger + roles: jlevy: original author and maintainer ceoaliongroo: translator and maintainer (es) From d9c87962399f90aa85363ca3496d0b2affd4af51 Mon Sep 17 00:00:00 2001 From: Michael Diamond Date: Mon, 5 Oct 2015 18:43:26 -0400 Subject: [PATCH 25/26] Tweak the language for the grep . * tip. The previous text didn't highlight why this is more useful than, say `cat *` or `vi *`. Personally, I still don't think it's that useful, but this seems a little clearer, at least. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cebd78..242c604 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,7 @@ A few examples of piecing together commands: cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Use `grep . *` to visually examine all contents of all files in a directory, e.g. for directories filled with config settings, like `/sys`, `/proc`, `/etc`. +- Use `grep . * | less` to quickly examine the contents of all files in a directory - each line is paired with the filename. This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. - Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python): From b564befde5655c81f0a0cc3d3bfb740f52e3f2ae Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 5 Oct 2015 21:16:37 -0700 Subject: [PATCH 26/26] Add another example of head And tweak language of #292. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 242c604..80ea240 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,7 @@ A few examples of piecing together commands: cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Use `grep . * | less` to quickly examine the contents of all files in a directory - each line is paired with the filename. This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. +- Use `grep . *` to quickly examine the contents of all files in a directory (so each line is paired with the filename), or `head -100 *` (so each file has a heading). This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. - Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python):