From 250a3def95ee3af43369c363b83304d40b38523a Mon Sep 17 00:00:00 2001 From: Haoxuan Li Date: Sun, 20 Dec 2015 13:41:20 +0800 Subject: [PATCH 01/60] fix a typo --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 2e33acb..f127515 100644 --- a/README-zh.md +++ b/README-zh.md @@ -53,7 +53,7 @@ - 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。 -- 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件未添加。了解标准输出 stdout 和标准错误 stderr。 +- 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件末添加。了解标准输出 stdout 和标准错误 stderr。 - 学会使用通配符 `*` (或许再算上 `?` 和 `[`...`]`) 和引用以及引用中 `'` 和 `"` 的区别。 From c214b558741364dfd8e885713dd6cea2ccf74a6f Mon Sep 17 00:00:00 2001 From: Yessou Sami Date: Wed, 30 Dec 2015 18:28:22 +0100 Subject: [PATCH 02/60] Update README-it.md riga 209 --- README-it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-it.md b/README-it.md index 803a5f8..0f3a775 100644 --- a/README-it.md +++ b/README-it.md @@ -206,7 +206,7 @@ Note: - Ricorda che le impostazioni riguardo la localizzazione influiscono un sacco su alcuni tool da linea di comando, in molti modi. Ad esempio sugli ordinamenti (collation) e performance. Molte installazioni Linux impostano `LANG` ed altre variabili correlate automaticamente su US English (inglese americano). Se decidi di cambiare lingua, non è detto quindi che le cose rimangano così come sono. Alcuni comandi, addirittura, potrebbero diventare immediatamente molto più lenti. -- Impara le basi di `awk` e `sed` per manipolare dati. Ad esempio, per sommare tutti i numeri nella terza colonna di un file di testo, usa `awk '{ x += $3 } END { print x }'`. Probabilmente tre volte più veloce e tre volt epiù corto del suo equivalente in Python. +- Impara le basi di `awk` e `sed` per manipolare dati. Ad esempio, per sommare tutti i numeri nella terza colonna di un file di testo, usa `awk '{ x += $3 } END { print x }'`. Probabilmente tre volte più veloce e tre volte più corto del suo equivalente in Python. - Per rimpiazzare tutte le occorrenze di una stringa, in uno o più file: From a22f5b3811616a83fb6131ac081a9da10a01c84c Mon Sep 17 00:00:00 2001 From: kumon Date: Mon, 4 Jan 2016 01:09:41 +0900 Subject: [PATCH 03/60] Updated ja version --- README-ja.md | 162 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 116 insertions(+), 46 deletions(-) diff --git a/README-ja.md b/README-ja.md index 8fecfd9..b38d909 100644 --- a/README-ja.md +++ b/README-ja.md @@ -2,7 +2,7 @@ [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] -原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) +原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) # The Art of Command Line @@ -15,6 +15,7 @@ - [システムのデバッグ](#system-debugging) - [ワンライナー](#one-liners) - [目立たないが便利なもの](#obscure-but-useful) +- [OS X用のもの](#os-x-only) - [さらなるリソース](#more-resources) - [免責事項](#disclaimer) @@ -22,14 +23,14 @@ コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるだろう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものだ。ここでは、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上にある)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストを送ってほしい!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認しよう) +このドキュメントは[多くの執筆者と翻訳者](AUTHORS.md)による成果である。ここに書いてあることの多くは、[元々](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に置くのがよいのではと思った。間違いやもっとこうした方がよいという点があれば、issueを登録するかpull requestを送ってほしい!(もちろん、メタ情報の項や既存のpull requestsやissuesをまず確認しよう) ## メタ情報 対象 : - このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。 -- Linux向けに書いている。多くはMacOS(あるいはCygwin)でも使えるが、全部ではない。 +- [OS X用のもの](#os-x-only)を除き、Linux向けの内容となっており、その多くは各種LinuxおよびMacOS(あるいはCygwin)でも使えるだろう。 - インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。 注意 : @@ -45,30 +46,32 @@ - `man`でのドキュメントの読み方を知ろう(知りたがりのために書くと、`man man`でセクション番号が分かる。例えば1は「一般的な」コマンド、5はファイルやそのお作法、8は管理についてといった具合)。`apropos`でmanページを探そう。コマンドによっては実行可能ファイルではなくBashのビルトインコマンドであることを理解し、`help`や`help -d`でヘルプが見られることを知ろう。 -- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。stdout(標準出力)とstderr(標準エラー出力)を学ぼう。 +- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。`>`は出力ファイルを上書き、`>>`は追記となる。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`。 +- ファイル管理について。`ls`や`ls -l`(特に、`ls -l`の各列が何を意味するか理解)、`less`、`head`、`tail`、`tail -f`(または`less +F`)、`ln`と`ln -s`(ハードリンクとソフトリンクの違いとそれぞれの利点の理解)、`chown`と`chmod`、`du`(ディスク使用量まとめを簡単に見るなら`du -hs *`)。ファイルシステム管理については、`df`、`mount`、`fdisk`、`mkfs`、`lsblk`。inodeについては、`ls -i`(または `df -i`)。 - 基本的なネットワーク管理について。`ip`あるいは`ifconfig`、`dig`。 -- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-A`、`-B`といったオプションは知っておいて損はない。 +- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-v`、`-A`、`-B`、`-C`といったオプションは知っておいて損はない。 - `apt-get`、`yum`、`dnf`、`pacman`(ディストリビューションによって違う)といったコマンドでパッケージを探したりインストールする方法を学ぼう。Pythonベースのコマンドラインツールをインストールするのに、`pip`も必要だ(後に出てくるいくつかのコマンドは`pip`でインストールするのが一番簡単)。 ## 日常的に使うもの -- Bashでは、引数を補完するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。 +- Bashでは、引数を補完、または利用可能なコマンドを列挙するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。(検索キーを入力した後、**ctrl-r**を繰り返し入力することで次から次へと検索結果を送ることができる。**Enter**で見つかったコマンドの実行となり、**Enter**ではなく右カーソルキーを押した場合は見つかったコマンドが入力された状態になる。) -- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**。Bashにおけるデフォルトのキー割り当てを全て見るには``man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 +- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行頭に移動するには**ctrl-a**、行末に移動するには**ctrl-e**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**である。Bashにおけるデフォルトのキー割り当てを全て見るには`man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 -- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。 +- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。(元に戻したいときは`set -o emacs`) + +- 長いコマンドを編集するときに、エディタを設定した後で(例えば`export EDITOR=vim`)、**ctrl-x** **ctrl-e**によって編集中のコマンドが複数行の編集のために指定したエディタで開かれる。vi風の場合は、**escape-v**。 - 最近実行したコマンドを確認するなら`history`。**ctrl-r**や**alt-.**で用は足りるだろうが、`!$`(直前の引数)や`!!`(直前のコマンド)といった省略形もたくさんある。 @@ -95,7 +98,16 @@ - 開かれているソケットやファイルを見るには`lsof`も参照。 -- Bashスクリプトでは、`set -x`でデバッグ出力を出せる。可能なら厳格モードを使い、エラーが起きたら強制終了するよう`set -e`する。パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、`trap`も使おう。 +- `uptime`や`w`によってシステムの稼働時間を調べられる。 + +- `alias`によってよく利用するコマンドのエイリアス(ショートカット)を作成できる。例えば、`alias ll='ls -latr'`では新しいエイリアスである`ll`が作成される. + +- Bashスクリプトでは、`set -x`でデバッグ出力を出せる(`set -v`は、実行されるコマンドや変数名やコメントなどをそのまま出力する)。特別な理由がない限り厳格モード(strict mode)を使い、`set -e`でエラー時(0以外の終了コード時)に強制終了するように。`set -u`によって未定義の変数の利用を検知、パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、EXITまたはERRシグナルに対して`trap`も使おう。使う場面としては以下の場合のようにエラーを検知してメッセージを出力するとき: + +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` - Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するというよくある例。 @@ -107,6 +119,8 @@ - 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`が出力に。 +- `{`...`}`を使った中括弧展開によって、似たようなコマンドを複数回入力しなくて済む。例えば、 `mv foo.{txt,pdf} some-dir` (両方のファイルを移動させる), `cp somefile{,.bak}` (`cp somefile somefile.bak` と展開される)、`mkdir -p test-{a,b,c}/subtest-{1,2,3}` (すべての可能な組み合わせでディレクトリが作られる). + - コマンドの出力を`<(some command)`のようにしてファイルのように扱える。例えば、ローカルとリモートのの`/etc/hosts`を比較するなら以下のようになる。 ```sh @@ -115,11 +129,11 @@ - `cat <logfile 2>&1`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、`logfile 2>&1`または`some-command &>logfile`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、` barへとファイル名、ディレクトリ名、ファイルの中身を変更する: repren --full --preserve-case --from foo --to bar . + # バックアップファイルを元に戻す whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # 上記と同じものをrenameを使って: + rename 's/\.bak$//' *.bak +``` + +- マニュアルページにあるように `rsync` は非常に高速で万能なファイルコピーの道具である。マシーン間のファイルを同期させることでよく知られているが、ローカルの場合でも同様に有用である。また、大量のファイルを削除する[高速な方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)としても利用できる: + +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - ファイルからランダムな行を抜き出すには`shuf` -- `sort`のオプションを理解しよう。キーがどのように処理されるのか(`-t`や`-k`)を知ろう。特に、最初の列だけでソートするには`-k1,1`とかく必要があり、`-k1`だと全行を見てソートされるという点に注意。 +- `sort`のオプションを理解しよう。数値に対しては`-n`を使い、人間にとって読みやすい形式の数値の場合(例えば、`du -h`の出力)は`-h`を使おう。キーがどのように処理されるのか(`-t`や`-k`)を知ろう。特に、最初の列だけでソートするには`-k1,1`と書く必要があり、`-k1`だと全行を見てソートされるという点に注意。 - stableな(安定した)ソート(`sort -s`)は便利。例えば、始めに1列目でソートし、それから2列目でソートするなら、`sort -k1,1 | sort -s -k2,2`とすればよい。 - Bashのコマンドライン上でタブを表現する必要がある場合、**ctrl-v** **[Tab]**を入力するか`$'\t'` (コピペするなら後者の方がいいかも)。 -- ソースコードにパッチを当てる基本のツールは`diff`と`patch`。diffの統計情報を見るなら`diffstat`も参照しよう。`diff -r`だと、ディレクトリ全体に対して実行される。変更点の概要を見るなら`diff -r tree1 tree2 | diffstat`。 +- ソースコードにパッチを当てる基本のツールは`diff`と`patch`。`diff`や横並びの`sdiff`の統計情報を見るなら`diffstat`も参照しよう。`diff -r`だと、ディレクトリ全体に対して実行される。変更点の概要を見るなら`diff -r tree1 tree2 | diffstat`。`vimdiff`ではファイルの比較と編集が可能。 - バイナリファイルなら、単純な16進ダンプを見るのに`hd`、バイナリエディタには`bvi`。 @@ -218,19 +246,23 @@ - ファイルを分割するなら`split`(サイズで分割)と`csplit`(パターンで分割)。 +- 日付や時間の表現を扱うには、[`dateutils`](http://www.fresse.org/dateutils/)にあるように、`dateadd`、 `datediff`、 `strptime` などを使いましょう。 + - 圧縮ファイルの操作は`zless`、`zmore`、`zcat`、`zgrep`。 ## システムのデバッグ -- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jakubroztocil/httpie)。 +- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jkbrzt/httpie)。 -- ディスクやCPU、ネットワークのステータスを知るには`iostat`、`netstat`、`top`(あるいは`htop`の方がよい)、(一番は)`dstat`。システムで何が起きているのか素早く知るにはよい。 +- CPUやディスクのステータスを知るには、標準的なツールは`top` (または、より良い`htop`)、 `iostat`、 `iotop`。`iostat -mxz 15`を使って、基本的なCPUの情報やパーティッション単位でのディスクの詳細情報やパフォーマンスについて調べましょう。 -- 更に詳しいシステムの全体像を見るには、[`glances`](https://github.com/nicolargo/glances)を使おう。ひとつのターミナル内で、いくつかのシステムレベルの統計情報を表示してくれる。複数のサブシステムを素早くチェックするのに非常に便利。 +- ネットワークの状態の監視には、`netstat`や`ss`。 + +- 手早くシステムで何が起きているのかを調べるには、`dstat`が便利。より詳しく見るには、[`glances`](https://github.com/nicolargo/glances)。 - メモリのステータスを知るには、`free`あるいは`vmstat`を実行し、その出力の意味を理解しよう。特に、"cached"の値はLinuxカーネルにファイルキャッシュとして保持されているメモリ量であり、"free"の値を見る際に考慮すべきであることに注意しよう。 -- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。 +- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。JDKの `jps`、 `jstat`、 `jstack`、 `jmap` も便利で、[SJK tools](https://github.com/aragozin/jvm-tools)はより高度なツールである。 - 改良版tracerouteとして`mtr`を使ってネットワークの問題を調査しよう。 @@ -248,14 +280,14 @@ - 起動中のプロセスに`gdb`で接続し、そのスタックトレースを取る方法を知ろう。 -- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps`。 +- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/meminfo`、`/proc/cmdline`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps` (ここで、`xxx`はプロセスIDまたはPIDを意味する)。 - 過去に何か問題が起きたことの原因を探るなら、`sar`がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 -- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux))、 +- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))、 [`sysdig`](https://github.com/draios/sysdig)。 -- どのディストリビューションを使っているか確認しよう。多くのディストリビューションでは`lsb_release -a` +- どのOSを利用しているかを`uname`や`uname -a` (Unixカーネル情報)で確認しよう。どのディストリビューションを使っているかは`lsb_release -a` (ディストリビューション情報)。 - 何かいつもと違うおかしなこと(大抵ハードウェアかドライバ関連の問題だ)が起きていたら、`dmesg`を実行しよう。 @@ -271,7 +303,7 @@ cat a b b | sort | uniq -u > c # cはaとbの差異 ``` -- コンフィグが含まれている`/sys`や`/proc`や`/etc/`のようなディレクトリ内の全てのファイルの中身全部を確認するには`grep . *`を使おう。 +- `grep . *`(各行にファイル名が付く)や、`head -100 *` (ファイル毎にヘッダーが付く)を使って手軽にディレクトリ内の全てのファイルの中身を確認できる。設定ファイルが含まれるような`/sys`や`/proc`や`/etc/`に対して非常に便利である。 - テキストファイルの3列目を全て足し合わせるには以下で(Pythonで同じことをやるに比べて3倍速く3分の1の長さで書ける)。 @@ -285,19 +317,14 @@ 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 ``` +- 継続的に変更を監視する場合 `watch`を使う。例えば、ディレクトリのファイルの変更を確認するには `watch -d -n 2 'ls -rtlh | tail'` となり、wifi設定などのネットワーク設定関係のトラブルシューティングでは `watch -d -n 2 ifconfig`。 + - このドキュメントからランダムに項目を抜き出すには以下の関数を実行しよう(Markdownをパースし、アイテムを抽出する)。 ```sh @@ -326,7 +353,7 @@ - `look`: 文字列で始まる英単語(またはファイル内の行)を見つける -- `cut `、 `paste`、 `join`: データの操作 +- `cut `、 `paste`、`join`: データの操作 - `fmt`: テキストの段落をフォーマットする @@ -346,7 +373,7 @@ - `factor`: 整数を因数分解 -- `gpg`: 暗号化とファイルのサイニング +- [`gpg`](https://gnupg.org/): ファイルの暗号化と署名 - `toe`: terminfoのエントリのテーブルを表示 @@ -354,7 +381,7 @@ - `socat`: ソケットリレーとTCPポートのフォワーダ(`netcat`と同等) -- `slurm`: ネットワークトラフィックの可視化 +- [`slurm`](https://github.com/mattthias/slurm): ネットワークトラフィックの可視化 - `dd`: データをファイルあるいはデバイス間で移動 @@ -364,6 +391,16 @@ - `stat`: ファイルの情報 +- `time`: コマンドを実行して処理時間を計測 + +- `timeout`: コマンドを実行し、指定時間経過後にプロセスを停止する + +- `lockfile`: セマフォファイルを生成する。これは`rm -f`のみで削除可能。 + +- `logrotate`: ログをローテート、圧縮、メール送信 + +- `watch`: コマンドを繰り返し実行する。変更部分の強調表示もできる。 + - `tac`: ファイルを逆から表示 - `shuf`: ファイルからランダムに選んだ行を表示 @@ -372,7 +409,9 @@ - `pv`: パイプ経由でデータの進行状況をモニタリング -- `hd` および `bvi`: バイナリファイルのダンプと編集 +- `sponge`: 書き込み前に全ての入力を読み込む。例えば、`grep -v something some-file | sponge some-file` のように、入力と同じファイルに書き込む際に便利。 + +- `hd`、`hexdump`、`xxd`、`biew`、`bvi`: バイナリファイルのダンプと編集 - `strings`: バイナリファイルからテキストを抽出 @@ -380,10 +419,12 @@ - `iconv` あるいは `uconv`: 文字エンコーディングの変換 -- `split ` と `csplit`: ファイルを分割 +- `split` と `csplit`: ファイルを分割 - `units`: 単位の変換と計算。2週間あたりのハロン(訳注 : 長さの単位)からまばたきごとのトゥウィップまで( `/usr/share/units/definitions.units`も参照のこと) +- `apg`: ランダムなパスワードを生成 + - `7z`: 圧縮率の高いファイル圧縮 - `ldd`: 動的ライブラリの情報 @@ -398,7 +439,7 @@ - `cssh`: ビジュアルな並列シェル -- `rsync`: ファイルやフォルダをSSH経由で同期 +- `rsync`: ファイルやフォルダをSSH経由またはローカルファイルシステム内で同期 - `wireshark` と `tshark`: パケットキャプチャとネットワークデバッギング @@ -412,7 +453,11 @@ - [`glances`](https://github.com/nicolargo/glances): 高レベルに複数のサブシステムの概要を把握 -- `iostat`: CPUとディスクの使用状況 +- `iostat`: ディスクの使用状況 + +- `mpstat`: CPUの使用状況 + +- `vmstat`: メモリの使用状況 - `htop`: topの改良版 @@ -430,20 +475,45 @@ - `dmesg`: 起動時とシステムのエラーメッセージ +- `sysctl`: Linuxカーネルパラメータの確認および設定 + - `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 - `lsb_release`: Linuxディストリビューション情報 - `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー -- `lshw` と `lspci`: RAIDやグラフィックなどを含めたハードウェア情報 +- `lshw`、`lscpu`、`lspci`、`lsusb`、`dmidecode`: CPUやBIOS、RAID、グラフィック、その他デバイスなどのハードウェア情報 + +- `lsmod`、`modinfo`: カーネルのモジュールリストとモジュール情報 - `fortune`、 `ddate`、`sl`: んー、あー、これは蒸気機関車やZippyの引用句が「便利」だと思うかどうかによる +## OS X用のもの + +これらは*MacOS用*の項目です。 + +- パッケージ管理は`brew` (Homebrew)や`port` (MacPorts)を使う。上記の多くのコマンドをMacOSにインストールできる。 + +- コマンドの出力をクリップボードにコピーする`pbcopy`とクリップボードから出力する`pbpaste`。 + +- OptionキーをaltキーとしてMac OSのターミナルで使う(上述の**alt-b**、**alt-f**などを使う場合)には、環境設定 -> 設定 -> キーボード で、"メタキーとしてoptionキーを使用"を選択。 + +- デスクトップアプリケーションでファイルを開くには、`open`、`open -a /Applications/Whatever.app`。 + +- Spotlight: `mdfind`でファイルを検索し、メタデータ(画像ファイルのEXIFの情報など)を`mdls`で表示。 + +- Mac OSはBSD Unixベースであるため、多くのコマンド(例えば、`ps`、`ls`、`tail`、`awk`、`sed`)では、Unix System VとGNUツールの違いに影響されて、Linuxのものと比べて微妙な違いが多く含まれている。違いがあるかについては、マニュアルページのタイトルに"BSD General Commands Manual"と書かれているかどうかで判断できる。場合によっては、GNUバージョンをインストール可能である(例えば、`gawk`や`gsed`で、GNUのawkとsedに対応)。クロスプラットフォームのbashスクリプトを書く場合には、そのようなコマンドは避ける(Pythonや`perl`の利用を検討)か十分なテストが必要である。 + +- Mac OSのリリース情報を取得するには、`sw_vers`。 + ## さらなるリソース - [awesome-shell](https://github.com/alebcay/awesome-shell): シェルのツールやリソースのまとめ -- よりよいシェルスクリプトを書くには[Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): より詳しいMac OSのコマンドラインガイド +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/): よりよいシェルスクリプトを書くために +- [shellcheck](https://github.com/koalaman/shellcheck): シェルスクリプト(本来、bash/sh/zsh用)の静的解析ツール +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): シェルスクリプトでファイル名を正しく扱うために ## 免責事項 From 045ce9a8136f0bf195d195afc389971b6f870198 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:43:26 +0100 Subject: [PATCH 04/60] czech language added added header + toc Changes to be committed: new file: README-cs.md --- README-cs.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 README-cs.md diff --git a/README-cs.md b/README-cs.md new file mode 100644 index 0000000..37210ed --- /dev/null +++ b/README-cs.md @@ -0,0 +1,19 @@ +[ Languages: +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +] + + +# Umění příkazové řádky + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Meta](#meta) +- [Základy](#zaklady) +- [Každodenní použití](#kazdodenni-pouziti) +- [Zpracování souborů a dat](#zpracovani-souboru-a-dat) +- [Ladění systému](#ladeni-systemu) +- [Jednořádkové příkazy](#jednoradkove-prikazy) +- [Neobvyklé ale užitečné](#neobvykle-ale-uzitecne) +- [Pouze pro OS X](#pouze-pro-os-x) +- [Další zdroje](#dalsi-zdroje) +- [Zřeknutí se odpovědnosti](#zreknuti-se-odpovednosti) \ No newline at end of file From 2194c4b600cd5a4a9e0e8a00fb7ddfac0bc105e5 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:44:43 +0100 Subject: [PATCH 05/60] meta section translated Changes to be committed: modified: README-cs.md --- README-cs.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/README-cs.md b/README-cs.md index 37210ed..f9d868d 100644 --- a/README-cs.md +++ b/README-cs.md @@ -16,4 +16,30 @@ - [Neobvyklé ale užitečné](#neobvykle-ale-uzitecne) - [Pouze pro OS X](#pouze-pro-os-x) - [Další zdroje](#dalsi-zdroje) -- [Zřeknutí se odpovědnosti](#zreknuti-se-odpovednosti) \ No newline at end of file +- [Zřeknutí se odpovědnosti](#zreknuti-se-odpovednosti) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) +Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte rozsáhlé dostatečné vědomosti. + +Tato práce je výsledkem [mnoha autorů a překladatelů](AUTHORS.md). +Mnoho se +[původně](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[objevilo](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +na webu [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +ale s ohledem na zájem, který tam panoval, se zdálo vhodné použít GitHub, kde lidé více talentovaní než původní autor mohli okamžitě navrhovat zlepšení. Pokud najdete chybu či něco, co by mohlo být vylepšeno, prosím vytvořte issue nebo pull request! (Samozřejmě nejdříve zkontrolujte meta sekci a existující pull requesty a issues.) + + +## Meta + +Rozsah: + +- Tento průvodce je pro začátečníky i pro pokročilé. Cílem je *široký záběr* (vše důležité), *specifičnost* (poskytnout konkrétní příklady nejčastějšího použití) a *stručnost* (vyhnout se věcem, které nejsou nezbytné nebo podobným tématům, které lze vyhledat jinde). Každý tip je v některých případech nenahraditelný nebo značně šetří čas oproti alternativám. +- Tento dokument je napsán pro Linux s vyjímkou sekcí označených jako "[Pouze pro OS X](#os-x-only)". Mnoho ostatních položek lze použít nebo je lze nainstalovat na jiných Unixových systémech nebo MacOS (dokonce i na Cygwin). +- Zaměření dokumentu je na inteaktivní Bash ačkoli mnoho tipů lze aplikovat na jiné shelly a obecné bashové scriptování. +. Jsou zahrnuty jak "standardní" Unixové příkazy tak příkazy vyžadující instalaci extra balíčků -- pokud jsou dost důležité aby zasloužily zmínku. + +Poznámky: + +- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` podle distribuce k instalaci nových progamů. +- Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. \ No newline at end of file From ad0e6261a3c0c172719c2bab7a87bf51928d1691 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:45:37 +0100 Subject: [PATCH 06/60] basics section translated Changes to be committed: modified: README-cs.md --- README-cs.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/README-cs.md b/README-cs.md index f9d868d..a03dc44 100644 --- a/README-cs.md +++ b/README-cs.md @@ -42,4 +42,30 @@ Rozsah: Poznámky: - Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` podle distribuce k instalaci nových progamů. -- Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. \ No newline at end of file +- Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. + + +## Zaklady + +- Naučte se základy Bashe. Vlastně, napište `man bash` a alespoň si to proleťte; je to celkem jednoduché a ne tak dlouhé. Jiné shelly mohou být dobré, ale Bash je mocný a vždy dostupný (znalost *pouze* zsh, fish a jiných ačkoli lákavá na vlastním notebooku omezuje v mnoha situacích, jako například při použití existujících serverů). + +- Poznejte alespoň jeden textový editor dobře. Nejlépe Vím (`vi`) jelikož opravdu nemá pro občasné úpravy v terminálu nemá konkurenci (ani pokud většinu času používáte Emacs, velké IDE nebo moderní okenní editor). + +- Naučte se číst dokumentaci pomocí `man` (pro zvědavce, `man man` vypíše čísla sekcí, například 1 jsou "obvyklé" příkazy, 5 jsou soubory/konvence a 8 je administrace). Hledejte manuálové stránky pomocí `apropos`. Vězte, že některé příkazy nejsou spustitelné programy, ale funkce zabudované v Bashi a nápovědu k nim můžete zobrazit příkazem `help` a `help-d`. + +- Naučte se přesměrování výstupu a vstupu pomocí `>` a `<` a roury pomocí `|`. Pamatujte, že `>` přepíše obsah výstupního souboru a `>>` přidá na jeho konec. Nezapomeňte na stdout (stndardní výstup) a stderr (standardní chybový výstup). + +- Poznejte souborovou hromadnou expanzi za pomoci `*` (případně `?` a `[`...`]`) a úvozovkách a rozdílu mezi dvojitými uvozovkami `"` a jednoduchými `'`. (Více na expanzi proměných níže.) + +- Seznamte se se správou činností v Bashi: `&`, **ctrl-z**, ctrl-c**, `jobs`, `fg`, `bg`, `kill`, atd. + +- Seznamte se s `ssh` a základy bezheslové autentizace pomocí `ssh-agent`, `ssh-add`, atd. + +- Základní správa souborů: `ls` a `ls -l` (zejména co který sloupec v `ls -l` znamená), `less`, `head`, `tail` a `tail -f` (nebo ještě lépe `less +F`), `ln` a `ln -s` (pochopte rozdíly a výhody pevného odkazu a symoblického odkazu), `chown`, `chmod`, `du` (pro krátký souhrn využití disku: `du -hs *`). Pro správu souborového systému, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Pochopte co je inode (`ls -i` nebo `df -i`). + +- základní správa síťí: `ip` nebo `ifconfig`, `dig`. + +- Dobře se naučte regulárních výrazů a rozličné příznaky pro `grep`/`egrep`. Přepínače `-i`, `-o`, `-v`, `-A`, `-B` a `-C` je také vhodné znát. + +- Naučte se používat `apt-get`, `yum`, `dnf` nebo `pacman` (podle vaší distribuce) k hledání a instalaci balíků. A ujistěte se, že máte `pip` k instalace Pythonových terminálových nástrojů (některé je nejjednodušší nainstalovat pomocí `pip`). + From 3b3bd40bddc310fa3af4a5179e5f565742e0c0ff Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:46:30 +0100 Subject: [PATCH 07/60] everyday use translated Changes to be committed: modified: README-cs.md --- README-cs.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/README-cs.md b/README-cs.md index a03dc44..5e5783d 100644 --- a/README-cs.md +++ b/README-cs.md @@ -69,3 +69,103 @@ Poznámky: - Naučte se používat `apt-get`, `yum`, `dnf` nebo `pacman` (podle vaší distribuce) k hledání a instalaci balíků. A ujistěte se, že máte `pip` k instalace Pythonových terminálových nástrojů (některé je nejjednodušší nainstalovat pomocí `pip`). + +## Kazdodenni pouziti + +- V Bashi používejte **Tab** k dokončení argumentů nebo vylistování všech dostupných příkazů a **ctrl-r** k vyhledávání v historii příkazů (po stisknutí pište pro hledání a poté mačkejte opakovaně **ctrl-r** k procházení více shod, **Enter** k provedení nalezeného příkazu nebo šipku vpravo pro vložení výsledku hledání do terminálu a následnou editaci). + +- V Bashi používejte **ctrl-w** pro smazní posledního slova a **ctrl-u** pro smazání všeho od současné pozice kurzoru až po začátek řádku. POužívejte **alt-b** a **alt-f** k procházení řádku po slovech, **ctrl-a** pro skok na začátek řádku, **ctrl-e** pro skok kurzoru na konec řádku, **ctrl-k** pro smazání všeho od současné pozice až ke konci řádku, **ctrl-l** pro vyčištění obrazovky. Prohlédněte si `man readline` pro všechny defaultní klávesové zkratky v Bashi. Je jich hodně. Například **alt-.** projíždí předchozí argumenty a **alt-*** rozšíří řetězec. + +- Pokud milujete klávesové zkratky ve stylu vi, použijte `set -o vi` (a `set -o emacs` pro návrat ke standardnímu rozložení). + +- Pro úpravu dlouhých příkazů, po nastavení vašeho editoru (například `export EDITOR=vim`), **ctrl-x** **ctrl-e** otevře stávající příkaz v editoru pro víceřádkovou úpravu. Nebo ve vi stylu, **escape-v**. + +- Zobrazení nedávných příkazů se provádí pomocí `history`. Existuje spousta zkratek jako `!$` (poslední argument) a `!!` (poslední příkaz), ale tyto jsou jednoduše nahraditelné pomocí **ctrl-r** a **alt-.**. + +- Pro přechod do předchozího pracovního adresáře: `cd -`. + +- Pokud máte zpola napsaný příkaz, ale rozmyslíte si to, stiskněte **alt-#** pro přidání `#` na začátek řádku a vložte ho jako komentář (nebo použijte **ctrl-a**, **#**, **enter**). Takto se k němu můžete později vrátit v historii příkazů. + +- Používejte `xargs` (nebo `parallel`). Jde o mocný příkaz. Nezapomeňte, že můžete ovládat kolik položek vykonat na řádku (`-L`) stejně jako paralelismus (`-P`). Pokud si nejste jisti zda to udělá co má, zkuste nejdříve `xargs echo`. Hodí se také `-I{}`. +Příklady: +```bash + find . -name '*.py' | xargs grep nejaka_funkce + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` je užitečné zobrazení stromu procesů. + +- Používejte `pgrep` a `pkill` k hledání nebo posílání signálů procesům podle jména. (`-f` je také užitečné). + +- Pamatujte si rozličné signály, které lze posílat procesům. Například, k pozastavení procesu, použijte `kill -STOP [pid]`. Celý seznam signálů v `man 7 signal`. + +- Používejte `nohup` nebo `disown` pokud chcete aby proces na pozadí běžel navždy. + +- Kontrolujte, které procesy naslouchají pomocí `netstat -lntp` nebo `ss -plat` (pro TCP; přidejte `-u` pro UDP). + +- Podívejte se také na `lsof` pro otevřené sockety a soubory. + +- Jak dlouho systém běží poznáte díky `uptime` nebo `w`. + +- Pomocí `alias` si nastavte zkratky pro často používané příkazy. Například `alias ll='ls -latr'` vytvoří novou zkratku `ll`. + +- V Bashových scriptech používejte `set -x` (nebo jeho variantu `set -v`, která zaznamenává nezpracovaný vstup včetně nečekaných proměnných a komentářů) pro ladící výstup. Používejte přísné módy pokud nemáte dobrý důvod proč to tak nedělat: Příkazem `set -e` nastavíte přerušení při chybě (nenulový návratový kód). Použijte `set -u` pro zjištění použití neinicializovaných proměnných. Zvažte také `set -o pipefail` pro chyby v rourách (přečtěte si na tohle téma více pokud tuto možnost využijete, jelikož jde o citlivé téma). Pro více zapojených scriptů použijte `trap` na EXIT nebo ERR. Dobrým zvykem bývá začínat scripty takto, což zachytí a ukončí běh na běžných chybách a vypíše zprávu: +```bash + set -euo pipefail + trap "echo 'error: Script selhal: neuspesny prikaz vyse'" ERR +``` + +- V Bash scriptech jsou subshelly (psané s kulatými závorkami) vhodným způsobem shlukování příkazů. Běžným příkladem budiž dočasný přesun do jiného pracovního adresáře, například: +```bash + # udelej neco v soucasnem pracovnim adresari + (cd /nejaky/jiny/adresar && jiny-prikaz) + # pokracuj v puvodnim adresari +``` + +- Nezapomeňte, že v Bashi je mnoho druhů expanze proměnných. KOntrola, že proměnná existuje `${jmeno:?chybova hlaska}`. například, pokud script vyžaduje jediný argument, napište `vstupni_soubor=${1:?pouziti: $0 vstupni_soubor}`. Aritmetická expanze: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Ořezání (trimming) řetězců: `${var%suffix}` a `${var#prefix}`. Pokud například `var=foo.pdf`, pak `echo ${var%.pdf}.txt` zobrazí `foo.txt`. + +- Expanze složených závorek použitím `{`...`}` může snížit potřebu přepisovat podobné texty a zautomatizovat kombinaci položek. Toto může být užitečné například v `mv foo.{txt,pdf} nejaky-adresar` (což přesune oba soubory), `cp nejakysoubor{,.bak}` (což se rozšíří do `cp nejakysoubor nejakysoubor.bak`) nebo `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (což se rozšíří do všech možných kombinací a vytvoří příslušný adresářový strom). + +- S výstupem některých příkazů lze zacházet jako se souborem pomocí `<(nejaky prikaz)`. Například porovnání lokálního `/etc/hosts` se vzdáleným: +```sh + diff /etc/hosts <(ssh nejakyhost cat /etc/hosts) +``` + +- Poznejte "zdejší dokumenty" v Bashi, míněno `cat < logsoubor 2>&1` nebo `nejaky-prikaz &>logsoubor`. Častokrát, k zajištění, že příkaz nezanechá otevřený souborový držák (handle), navázání ho na terminál ve kterém jste, je dobrá praktika také přidat ` Date: Tue, 5 Jan 2016 23:47:29 +0100 Subject: [PATCH 08/60] processing files and data translated Changes to be committed: modified: README-cs.md --- README-cs.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/README-cs.md b/README-cs.md index 5e5783d..f23e695 100644 --- a/README-cs.md +++ b/README-cs.md @@ -169,3 +169,82 @@ Příklady: `python -m SimpleHTTPServer 7777` (pro port 7777 a Python 2) a `python -m http.server 7777` (pro port 7777 a Python 3). - Pro spuštění příkazu s právy použijte `sudo` (pro roota) nebo `sudo -u` (pro jiného uživatele). Používejte `su` nebo `sudo bash` pokud chcete aby shell běžel skutečně pod daným uživatelem. Použitím `su -` simulujte čerstvé přihlášení jako root nebo jiný uživatel. + + +## Zpracovani souboru a dat + +- K nalezení souboru podle jména v pracovním adresáři: `find . -iname '*something*'` (nebo podobně). K nalezení souboru podle jména kdekoliv na disku, použijte `locate jmeno` (pamatujte, že `updatedb` nemuselo nutně zaindexovat nedávno vytvořené soubory). + +- Pro obecné prohledávání zdrojů nebo datových souborů (více sofistikované než `grep -r`), použijte [`ag`](https://github.com/ggreer/the_silver_searcher). + +- Převeďte HTML na text pomocí `lynx -dump -stdin`. + +- Vyzkoušejte [`pandoc`](http://pandoc.org/) pro Markdown, HTML a všechny druhy převodu dokumentů. + +- Pokud musíte pracovat s XML `xmlstarlet` je starý, ale dobrý. + +- Pro JSON použijte [`jq`](http://stedolan.github.io/jq/). + +- Pro YAML, použijte [`shyaml`](https://github.com/0k/shyaml). + +- Pro Excel nebo CSV suobory, [csvkit](https://github.com/onyxfish/csvkit) poskytuje `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, atd. + +- Pro Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) je pohodlnější a [`s4cmd`](https://github.com/bloomreach/s4cmd) je rychlejší. [`aws`](https://github.com/aws/aws-cli) od Amazonu a vylepšený [`saws`](https://github.com/donnemartin/saws) jsou nezbytné pro ostatní AWS úkoly. + +- Mějte přehled o `sort` a `uniq`, včetně přepínače `-u` pro `uniq` a `-d` -- shlédněte jednořádkové příklady níže. A také `comm`. + +- Mějte přehled také o `cut`, `paste` a `join` pro manipulaci s textovými soubory. Mnoho lidí používá `cut`, ale zapomínají na `join`. + +- Udržujte přehled také o `wc` na počítání nových řádků (`-l`), znaků (`-m`), slov (`-w`) a bytů (`-c`). + +- A přehled je dobré mít také o `tee` pro kopírování ze stdin do souboru a na stdout, podobně jako za použití `ls -la | tee soubor.txt`. + +- Mějte na paměti, že nastavení lokalizace ovlivňuje mnoho příkazů v shellu mnoha způsoby včetně pořadí při třídění a výkonu. Většina Linuxových instalací nastaví `LANG` nebo jinou lokalizační proměnnou na lokální nastavení jako americká angličtina. Nezapomínejte však, že vaše třídění se změní změníte-li lokalizaci. A myslete na to, že i18n rutiny mohou způsobit, že třídění nebo jiné příkazy mohou běžet **mnohokrát** pomaleji. V některých situacích (při nastavování nebo testu unikátnost jako níže) lze bezpečně ignorovat pomalé i18n rutiny úplně a použít tradiční bytový pořádek pří třídění s `export LC_ALL=C`. + +- Měli byste znáz základní `awk` a `sed` pro jednoduché operace s daty. Například sčítání všech čísel ve třetím sloupci textového souboru: `awk '{ x += $3 } END { print x }'`. Tento příkaz je pravděpodobně 3x rychlejší a obsahuje 3x méně kódu než jeho ekvivalent v Pythonu. + +- K nahrazení všech výskytů řetězce v jedno místě nebo ve více souborech: +```sh + perl -pi.bak -e 's/stary-retezec/novy-retezec/g' moje-soubory-*.txt +``` + +- K přejmenování více souborů a/nebo vyhledávání a nahrazení uvnitř těchto souborů zkuste [`repren`](https://github.com/jlevy/repren). (V některých případech příkazech `rename` také dovoluje vícenásobné přejmenování, ale buďte opatrní neboť není stejný na všech Linuxových distribucích). +```sh + # Plne jméno souboru, adresaru a obsahu foo -> bar: + repren --full --preserve-case --from foo --to bar . + # Obnov zalozni soubory cokoliv.bak -> cokoli: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Stejne jako vyse za pouziti jmena pokud mozne: + rename 's/\.bak$//' *.bak +``` + +- Jak říká manuálová stránka, `rsync` je skutečně rychlý a neobyčejně univerzální nástroj na kopírování souborů. Je znám pro synchronizaci mezi stroji, ale je také stejně užitečný lokálně. Jde také o jednu z [nejrychlejších cest](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) k odstranění velkého množství souborů: +```sh + mkdir prazdny && rsync -r --delete prazdny/ nejaky-adr && rmdir nejaky-adr +``` + +- Použijte `shuf` k zamíchání nebo vybrání náhodných řádek ze souboru. + +- Mějte přehled v `sort` možnostech. Pro čísla, použijte `-n` nebo `-h` pro práci s lidsky čitelnými čísly (například z `du -h`). Pochopte jak fungují klíče (`-t` a `-k`). Zejména mějte na paměti, že musíte psát `-k,1` pro třídění za použití pouze prvního pole; `-k1` znamená třídění podle celého řádku. Stabilní třídění (`sort -s`) může být užitečné. Například k setřídění primárně podle druhého pole a sekundárně podle druhého pole můžete použít `sort -k1,1 | sort -s -k2,2`. + +- Pokud někdy potřebujete zapsat znak tabulátor do příkazové řádky v Bashi (například pro -t argument pro třídění), stiskněte press **ctrl-v** **[Tab]** nebo napište $'\t'` (druhá možnost je lepší, protože výsledek můžete zkopírovat/vložit). + +- Standardní nástroje pro porovnávání zdrojového kódu jsou `diff` a `patch`. Za zmínku stojí také `diffstat` zobrazující statistiky z diffu a `sdiff` pro rozdíly bok po boku. Nezapomeňte, že `diff -r` funguje pro celé adresáře. Použijte `diff -r strom1 strom2 | diffstat` pro shrnutí změn. A `vimdiff` pro porovnání a úpravu souborů. + +- Pro binární soubory použijte `hd`, `hexdump` nebo `xxd` pro jednoduché hex dumpy a `bvi` nebo `biew` pro editaci binárek. + +- Pro binární soubory můžete také použít `strings` (například spolu s `grep`, atd), což je nástroj pro hledání částí textu. + +- Pro binární rozdíly (delta komprese) použijte `xdelta3`. + +- Pro konverzi testových kódování zkuste `iconv`. Nebo `uconv` pro pokročilejší použití; podporuje některé pokročilé Unicode věci. Například tento příkaz mění text na malé znaky a odstraňuje akcenty (jejich rozvinutím a zahozením): +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Na rozdělení souborů do částí zkuste `split` (na rozdělení podle velikosti) a `csplit` (na rozdělení podle řetězce). + +- K manipulaci s datem a časem použijte `dateadd`, `datediff`, `strptime` atd. z [`dateutils`](http://www.fresse.org/dateutils/). + +- Použijte `zless`, `zmore`, `zcat`, a `zgrep` k operacím s komprimovanými soubory. + From 9fb89fc29e139ede8c402d9721b865388682e357 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:48:51 +0100 Subject: [PATCH 09/60] system debugging translated Changes to be committed: modified: README-cs.md --- README-cs.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README-cs.md b/README-cs.md index f23e695..4fced88 100644 --- a/README-cs.md +++ b/README-cs.md @@ -248,3 +248,44 @@ Příklady: - Použijte `zless`, `zmore`, `zcat`, a `zgrep` k operacím s komprimovanými soubory. + +## Ladeni systemu + +- Pro webové ladění jsou vhodn0 `curl` a `curl /I` nebo jejich `wget` ekvivalenty nebo více moderní [`httpie`](https://github.com/jkbrzt/httpie). + +- Pro zjištění současného procesorového/diskového stavu, klasické nástroje jako `top` (nebo lépe `htop`). Použijte `iostat -mxz 15` pro základní CPU a detailní diskové stavy pro každý diskový oddíl a výkonostní porozumnění. + +- Pro detaily ohledně síťové konektivity použijte `netstat` a `ss`. + +- Rychlý přehled co se děje v systému získáte pomocí užitečného `dstat`. Pro širší přehled s detaily použijte [`glances`](https://github.com/nicolargo/glances). + +- Na zjištění stavu paměti spusťte `free` a `vmstat` a pokuste se porozumět jejich výstupům. Zejména dbejte na "cached" hodnotu což je paměť držená Linuxovým kernelem jako souborová cache, tudíž se počítá do "volné" paměťi. + +- Java ladění je odlišný šálek čaje, ale jednoduchý trik na Javu od Oraclu a některé jiné JVM je, že stále můžete použít `kill -3 ` a plný detail objektů na zásobníku a souhrn haldy (včetně obecnějších detailů z **garbage collectoru**, které mohou být nesmírně informativní) bude zapsán do stderr/logs. Nástroje JDK jako `jps`, `jstat`, `jstack` a `jmap` jsou také užitečné, avšak [SJK tools](https://github.com/aragozin/jvm-tools) jsou více pokročilé. + +- Použijte `mtr` jako lepší `traceroute` pro identifikování potíží se sítí. + +- Pro zjištění proč jedisk plný, `ncdu` šetří čas oproti obvyklým příkazům jako `du /sh *`. + +- Ke zjištění který socket nebo proces zahlcuje pásmo zkuste `iftop` nebo `nethogs`. + +- Nástroj `ab` (přibalený k Apachi) je užitečný pro rychlé a hrubé zkontrolování výkonosti webového serveru. Komplexnější měření umožňuje `siege`. + +- Pro důslednější síťové ladění, `wireshark`, `tshark` nebo `ngrep` jsou to pravé. + +- Nezapomínejte na `strace` a `ltrace`. Mohou být nápomocné zejména pokud některý program selhává, zasekává se nebo padá a nevíte proč nebo pokud chcete mít obecnou představu o výkonu. Myslete na přepínač profilingu (`-c`) a schopnost připnout se k běžícímu procesu (`-p`). + +- Dynamické knihovny vám umožní zkontrolovat `ldd`. + +- Je důležité umět se připojit k běžícímu procesu za pomoci `gdb` a získat výpis jeho chodu. + +- Používejte `/proc`. Je úžasně nápomocný v okamžicích kdy laděíte živé problémy. Příklady: /proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kde `xxx` je id nebo pid procesu.). + +- Když zjišťujete proč se něco v minulosti pokazilo, `sar` může být nedocenitelný. Ukazuje historické statistiky CPU, paměti, sítě, atd. + +- Pro hlubší systémovou a výkonostní analýzu se podívejte na `stap`([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), a [`sysdig`](https://github.com/draios/sysdig). + +- Zkontrolujte na jakém jste OS za pomoci `uname` nebo `uname -a` (obecné Unix/kernel informace) nebo `lsb_release -a` (v Linuxových distribucích). + +- Použijte `dmesg` kdykoli se něco chová neočekávaně (může jít o hardwarový nebo driverový problém). + From c2f5a0b08087686ea3be58210c1d2f7487a2b9fb Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:49:44 +0100 Subject: [PATCH 10/60] one-liners translated Changes to be committed: modified: README-cs.md --- README-cs.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/README-cs.md b/README-cs.md index 4fced88..98da3fc 100644 --- a/README-cs.md +++ b/README-cs.md @@ -289,3 +289,45 @@ Příklady: - Použijte `dmesg` kdykoli se něco chová neočekávaně (může jít o hardwarový nebo driverový problém). + +## Jednoradkove prikazy + +Pár příkladů na spojování příkazů: + +- Někdy je pozoruhodně užitečné dělat průnik, sjednocení a rozdíl textových souborů pomocí `sort`/`uniq`. Předpokládejte, že `a` a `b` jsou unikátní textové soubory. Toto je rychlé a funguje na souborech libovolné velikosti až do mnoha gigabytů. (Třídění pomocí `sort` není omezeé pamětí, ale je možné že budete muset použít `-T` přepínač pokud se `/tmp` nachází na malém diskovém oddílu). Podívejte se také na poznámku o LC_ALL výše a přepínač `sortu` `-u` (vynechaný pro přehlednost). +```sh + cat a b | sort | uniq > c # c je sjednocení b + cat a b | sort | uniq -d > c # c je průnik b + cat a b b | sort | uniq -u > c # c je rozdíl a - b +``` + +- Použijte `grep .*` pro rychlé prošetření obsahu všech souborů v adresáři (každý soubor je spojen s názvem souboru) nebo `head -100 *` (aby každý soubor měl záhlaví). Může být užitečné pro adresáře s konfiguračními soubory jko jsou například `/sys`, `/proc` a `/etc`. + +- Součet všech čísel ve třetím sloupci textového souboru (pravděpodobně 3x rychlejší a 3x méně kódu než ekvivalentní funkce v Pythonu): +```sh + awk '{ x += $3 } END { print x }' mujsoubor +``` + +- Pokud chcete zobrazit velikosti/datumy na souborovém stromu, následující příkaz je jako rekurzivní `ls -l`, ale jedodušší na čtení než `ls -lR`: +```sh + find . -type f -ls +``` + +- Řekněme, že máte textový soubor, jako log webového serveru, a jisté hodnoty, které se objevují na některých řádcích, jako například `acct_id` parametr, který se vyskytuje v URL. Pokud chcete záznam kolik požadavků pro každý `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- K průběžnému monitorování změn použijte `watch`, například změn souborů v adresáři pomocí `watch -d -n 2 'ls -rth | tail'` nebo síťových nastavení při řešení potíží nastavení wifi: `watch -d -n 2 ifconfig`. + +- Spusťte tuto funkci k získání náhodného tipu z tohoto dokumentu (parsuje Markdown a vyextrahuje jednu položku): +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + From aa1aab1327b41f6a7e499da077ef3bfd3401d939 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:50:36 +0100 Subject: [PATCH 11/60] obscure but useful translated Changes to be committed: modified: README-cs.md --- README-cs.md | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) diff --git a/README-cs.md b/README-cs.md index 98da3fc..0276039 100644 --- a/README-cs.md +++ b/README-cs.md @@ -331,3 +331,155 @@ Pár příkladů na spojování příkazů: } ``` +## Neobvykle ale uzitecne + +- `expr`: provede aritmetické nebo logické operace nebo vyhodnotí regulární výrazy + +- `m4`: jednoduchý procesor maker + +- `yes`: tiskne řetězec hodněkrát + +- `cal`: hezký kalendář + +- `env`: provede příkaz (užitečné ve scriptech) + +- `printenv`: vypíše proměnné prostředí (užitečné při ladění a ve scriptech) + +- `look`: najde anglická slova (nebo řádky v souboru) začínající řetězcem + +- `cut`, `paste` a `join`: manipulace s daty + +- `fmt`: formátuje text do odstavců + +- `pr`: formátuje text do stránek/sloupců + +- `fold`: zalamuje řádky textu + +- `column`: formátuje textová pole do zarovnaných sloupců nebo tabulek s danou šířkou + +- `expand` a `unexpand`: převádí tabulátory a mezery + +- `nl`: přidá čísla řádků + +- `seq`: tiskne čísla + +- `bc`: kalkulačka + +- `factor`: provádí faktorizaci celých čísel (15 = 5 a 3) + +- [`gpg`](https://gnupg.org/): šifruje a podepisuje soubory + +- `toe`: tabulka informací o dostupných terminálech + +- `nc`: síťové ladění a přenos dat + +- `socat`: socketové relé a tcp port přesměrování (podobné `netcat`) + +- [`slurm`](https://github.com/mattthias/slurm): visualizace síťového provozu + +- `dd`: přesun dat mezi soubory nebo zařízeními + +- `file`: identifikuje typ souboru + +- `tree`: zobrazí adresáře a podadresáře jako vnořený strom; podobně jako `ls` ale rekurzivně + +- `stat`: informace o souboru + +- `time`: provede a načasuje příkaz + +- `timeout`: provádí příkaz po specifikovanou dobu a zastaví proces když daná doba uplyne + +- `lockfile`: vytvoří semaforový soubor, který lze odstranit pouze pomocí `rm -f` + +- `logrotate`: rotuje, komprimuje a posílá logy emailem + +- `watch`: spouští opakovaně příkaz a zobrazuje výsledky a/nebo zvýrazňuje změny + +- `tac`: tiskne soubory pozpátku (po řádcích) + +- `shuf`: náhodně vybere řádky ze souboru + +- `comm`: porovná seřazení soubory řádek po řádku + +- `pv`: monitoruje postup dat skrz rouru + +- `hd`, `hexdump`, `xxd`, `biew` a `bvi`: vypíše nebo edituje binární soubory + +- `strings`: vypreparuje textové řetězce z binárních souborů + +- `tr`: překládá znaky nebo s nimi manipuluje + +- `iconv` nebo `uconv`: převod pro kódování textu + +- `split` a `csplit`: dělí soubory + +- `sponge`: čte všechen vstup před tím než ho zapíše, užitečné prro čtení a následný zápis do téhož souboru, např. `grep -v neco nejaky-soubor | sponge nejaky-soubor` + +- `units`: převody jednotek a výpočty; převádí jednotky mezi sebou, (viz. `/usr/share/units/definitions.units`) + +- `apg`: generuje náhodná hesla + +- `7z`: vysoko poměrová datová komprese + +- `ldd`: informace o dynamických knihovnách + +- `nm`: vypíše symboly z objektových souborů + +- `ab`: zátěžové testy webserverů + +- `strace`: ladění systému + +- `mtr`: vylepšení traceroute pro síťové ladění + +- `cssh`: vizuální souběžný shell + +- `rsync`: synchronizuje soubory a adresáře přes SSH nebo v lokálním systému souborů + +- `wireshark` a `tshark`: zachytávání packetů a síťové ladění + +- `ngrep`: grep pro síťovou vrstvu + +- `host` a `dig`: DNS vyhledávání + +- `lsof`: zpracovává souborové popisovače (descriptory) a informace o socketech + +- `dstat`: užitečné systémové informace + +- [`glances`](https://github.com/nicolargo/glances): vysoko úrovňový, multi-systémový přehled + +- `iostat`: statistiky využití disku + +- `mpstat`: statistiky využití CPU + +- `vmstat`: statistiky využití paměti + +- `htop`: vylepšená verze top (správa procesů) + +- `last`: historie přihlášení + +- `w`: kdo je přihlášen + +- `id`: informace o identitě uživatele/skupiny + +- `sar`: historické systémové statistiky + +- `iftop` nebo `nethogs`: využití sítě pro proces nebo socket + +- `ss`: statistika socketů + +- `dmesg`: bootovací a systémové chybové zprávy + +- `sysctl`: zobrazení a konfigurace parametrů Linuxového kernelu za běhu + +- `hdparm`: SATA/ATA disková manipulace/výkon + +- `lsb_release`: informace o Linuxové distribuci + +- `lsblk`: seznam blokových zařízení: stromové zobrazení disků a diskových oddílů + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informace o hardwaru zahrnující CPU, BIOS, RAID, grafiku, zařízení, atd. + +- `lsmod` a `modinfo`: seznam a detaily kernelových modulů + +- `fortune`, `ddate`, a `sl`: hm, no, záleží jestli považujete parní lokomotivy a Zippyho citáty za "užitečné" + From 4742750ae97683601be8e26bb0b0b470d19e944d Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:51:23 +0100 Subject: [PATCH 12/60] mac os x only translated Changes to be committed: modified: README-cs.md --- README-cs.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README-cs.md b/README-cs.md index 0276039..bfa6f9e 100644 --- a/README-cs.md +++ b/README-cs.md @@ -483,3 +483,22 @@ Pár příkladů na spojování příkazů: - `fortune`, `ddate`, a `sl`: hm, no, záleží jestli považujete parní lokomotivy a Zippyho citáty za "užitečné" + +## Pouze pro OS X + +Tyto věci jsou relevantní pouze pro MacOS. + +- Balíčky spravované pomocí `brew` (Homebrew) a/nebo `port` (MacPorts). Mohou být použity k instalaci mnoha předešlých příkazů na MacOS. + +- Kopírujte výstup jakéhokoli příkazu do desktopové aplikace pomocí `pbcopy` a vložte vstup z nějaké pomocí `pbpaste`. + +- K povolení klávesy Option v Terminálu Mac OS jako klávesu Alt (pro použití v příkazech jako **alt-b**, **alt-f**, atd.), otevřete Předvolby -> Profily -> Klávesnice a zvolte "Použít Option jako Meta klávesu". + +- K otevření souboru za pomoci desktopové aplikace použijte `open` nebo `open -a /Aplikace/Cokoli.app`. + +- Spotlight: Prohledávejte soubory s `mdfind` a vypište metadata (například EXIF informace fotografie) pomocí `mdls`. + +- Nezapomínejte, že MacOS je založen na BSD Unixu a mnoho příkazů (například `ps`, `ls`, `tail`, `awk`, `sed`) mají spoustu jemných odlišností od Linuxu, což je z velké části ovlivněno System V (System Five) stylem Unixu a GNU nástroji. Mnohokrát mmůžete rozdíl poznat podle manuálové stránky mající v nadpise "BSD General Commands Manual". V některých případech mohou být GNU veerze instalovány také (třeba `gawk` a `gsed` pro GNU awk a sed). Pokud píšete multi-platformní Bashové scripty, vyhýbejte se takovým příkazům (například, zvažte Python či `perl`) nebo pečlivě testujte. + +- K získání informací o verzi vydání MacOS použijte `sw_vers`. + From a535843afee7e442d23d76c2c9f8872c55f4572c Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:51:55 +0100 Subject: [PATCH 13/60] sources, disclaimer and license translated Changes to be committed: modified: README-cs.md --- README-cs.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-cs.md b/README-cs.md index bfa6f9e..03b62d2 100644 --- a/README-cs.md +++ b/README-cs.md @@ -502,3 +502,23 @@ Tyto věci jsou relevantní pouze pro MacOS. - K získání informací o verzi vydání MacOS použijte `sw_vers`. + +## Dalsi zdroje + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Organizovaný seznam shellových nástrojů a zdrojů. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Průvodce Mac OS příkazovou řádkou více do hloubky. +- [Přísný mód](http://redsymbol.net/articles/unofficial-bash-strict-mode/) pro psaní lepších shellových scriptů. +- [shellcheck](https://github.com/koalaman/shellcheck): Nástroj pro statickou analýzu shellových scriptů. V podstatě lint pro bash/sh/zsh. +- [Souborové názvy a cesty v shellu](http://www.dwheeler.com/essays/filenames-in-shell.html): Bohužel velmi komplexní drobnosti o korektní práci se souborovými jmény v shellových scriptech. + + +## Zřeknutí se odpovědnosti + +S vyjímkou velmi malých úkolů je kód psán tak, aby ho ostatní mohli přečíst. S mocí přichází zodpovědnost. Skutečnost, že něco *můžete* v Bashi udělat nemusí nutně znamenat, že byste měli! ;) + + +## License + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Tato práce je licencována pod [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From 93db3db32cb39dd38b0fba76b89f7e32a4c34930 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:54:40 +0100 Subject: [PATCH 14/60] added links to cs readme Changes to be committed: modified: README-es.md modified: README-it.md modified: README-ja.md modified: README-ko.md modified: README-pt.md modified: README-ru.md modified: README-sl.md modified: README-uk.md modified: README-zh.md modified: README.md --- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh.md | 2 +- README.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README-es.md b/README-es.md index eee53ed..3bc1b33 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-it.md b/README-it.md index 2a85509..05559a9 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-ja.md b/README-ja.md index 8fecfd9..973164c 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.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 28b6450..101842f 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-pt.md b/README-pt.md index 0287157..d9a33f3 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-ru.md b/README-ru.md index 37a32a5..e678801 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-sl.md b/README-sl.md index ee2434f..2ff5a07 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README-uk.md b/README-uk.md index fc082da..7affa37 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index 5d6ea85..b4a692b 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] diff --git a/README.md b/README.md index b5a963e..67fe0fc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) ] From 65cef26ee4c575e36cc8a0aac2b1f0d37727db55 Mon Sep 17 00:00:00 2001 From: lsrom Date: Wed, 6 Jan 2016 00:02:22 +0100 Subject: [PATCH 15/60] spacing fix Changes to be committed: modified: README-cs.md --- README-cs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-cs.md b/README-cs.md index 03b62d2..d0c1ad0 100644 --- a/README-cs.md +++ b/README-cs.md @@ -20,6 +20,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte rozsáhlé dostatečné vědomosti. Tato práce je výsledkem [mnoha autorů a překladatelů](AUTHORS.md). From ef5e7e009e1b6029b500b3617c56a28482201510 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Tue, 5 Jan 2016 15:26:19 -0800 Subject: [PATCH 16/60] Typo in One Liners - "If want to" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b5a963e..c2407c4 100644 --- a/README.md +++ b/README.md @@ -310,7 +310,7 @@ A few examples of piecing together commands: awk '{ x += $3 } END { print x }' myfile ``` -- If want to see sizes/dates on a tree of files, this is like a recursive `ls -l` but is easier to read than `ls -lR`: +- To see sizes/dates on a tree of files, this is like a recursive `ls -l` but is easier to read than `ls -lR`: ```sh find . -type f -ls ``` From f0450442c4279ee9e55d1ce82b653f1f25956c1b Mon Sep 17 00:00:00 2001 From: lsrom Date: Wed, 6 Jan 2016 01:10:05 +0100 Subject: [PATCH 17/60] typo fixes + minor improvements Changes to be committed: modified: README-cs.md --- README-cs.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README-cs.md b/README-cs.md index d0c1ad0..86cd253 100644 --- a/README-cs.md +++ b/README-cs.md @@ -75,11 +75,11 @@ Poznámky: - V Bashi používejte **Tab** k dokončení argumentů nebo vylistování všech dostupných příkazů a **ctrl-r** k vyhledávání v historii příkazů (po stisknutí pište pro hledání a poté mačkejte opakovaně **ctrl-r** k procházení více shod, **Enter** k provedení nalezeného příkazu nebo šipku vpravo pro vložení výsledku hledání do terminálu a následnou editaci). -- V Bashi používejte **ctrl-w** pro smazní posledního slova a **ctrl-u** pro smazání všeho od současné pozice kurzoru až po začátek řádku. POužívejte **alt-b** a **alt-f** k procházení řádku po slovech, **ctrl-a** pro skok na začátek řádku, **ctrl-e** pro skok kurzoru na konec řádku, **ctrl-k** pro smazání všeho od současné pozice až ke konci řádku, **ctrl-l** pro vyčištění obrazovky. Prohlédněte si `man readline` pro všechny defaultní klávesové zkratky v Bashi. Je jich hodně. Například **alt-.** projíždí předchozí argumenty a **alt-*** rozšíří řetězec. +- V Bashi používejte **ctrl-w** pro smazní posledního slova a **ctrl-u** pro smazání všeho od současné pozice kurzoru až po začátek řádku. Používejte **alt-b** a **alt-f** k procházení řádku po slovech, **ctrl-a** pro skok na začátek řádku, **ctrl-e** pro skok kurzoru na konec řádku, **ctrl-k** pro smazání všeho od současné pozice až ke konci řádku, **ctrl-l** pro vyčištění obrazovky. Prohlédněte si `man readline` pro všechny defaultní klávesové zkratky v Bashi. Je jich hodně. Například **alt-.** projíždí předchozí argumenty a **alt-*** rozšíří řetězec. -- Pokud milujete klávesové zkratky ve stylu vi, použijte `set -o vi` (a `set -o emacs` pro návrat ke standardnímu rozložení). +- Pokud milujete klávesové zkratky ve stylu *vi*, použijte `set -o vi` (a `set -o emacs` pro návrat ke standardnímu rozložení). -- Pro úpravu dlouhých příkazů, po nastavení vašeho editoru (například `export EDITOR=vim`), **ctrl-x** **ctrl-e** otevře stávající příkaz v editoru pro víceřádkovou úpravu. Nebo ve vi stylu, **escape-v**. +- Pro úpravu dlouhých příkazů, po nastavení vašeho editoru (například `export EDITOR=vim`), **ctrl-x** **ctrl-e** v něm otevře stávající příkaz pro víceřádkovou úpravu. Nebo ve *vi* stylu, **escape-v**. - Zobrazení nedávných příkazů se provádí pomocí `history`. Existuje spousta zkratek jako `!$` (poslední argument) a `!!` (poslední příkaz), ale tyto jsou jednoduše nahraditelné pomocí **ctrl-r** a **alt-.**. @@ -87,7 +87,7 @@ Poznámky: - Pokud máte zpola napsaný příkaz, ale rozmyslíte si to, stiskněte **alt-#** pro přidání `#` na začátek řádku a vložte ho jako komentář (nebo použijte **ctrl-a**, **#**, **enter**). Takto se k němu můžete později vrátit v historii příkazů. -- Používejte `xargs` (nebo `parallel`). Jde o mocný příkaz. Nezapomeňte, že můžete ovládat kolik položek vykonat na řádku (`-L`) stejně jako paralelismus (`-P`). Pokud si nejste jisti zda to udělá co má, zkuste nejdříve `xargs echo`. Hodí se také `-I{}`. +- Používejte `xargs` (nebo `parallel`). Jde o mocný příkaz. Nezapomeňte, že můžete ovládat kolik položek se má vykonat na řádku (`-L`) stejně jako paralelismus (`-P`). Pokud si nejste jisti zda to udělá co má, zkuste nejdříve `xargs echo`. Hodí se také `-I{}`. Příklady: ```bash find . -name '*.py' | xargs grep nejaka_funkce @@ -100,7 +100,7 @@ Příklady: - Pamatujte si rozličné signály, které lze posílat procesům. Například, k pozastavení procesu, použijte `kill -STOP [pid]`. Celý seznam signálů v `man 7 signal`. -- Používejte `nohup` nebo `disown` pokud chcete aby proces na pozadí běžel navždy. +- Používejte `nohup` nebo `disown` pokud chcete, aby proces na pozadí běžel navždy. - Kontrolujte, které procesy naslouchají pomocí `netstat -lntp` nebo `ss -plat` (pro TCP; přidejte `-u` pro UDP). @@ -110,7 +110,7 @@ Příklady: - Pomocí `alias` si nastavte zkratky pro často používané příkazy. Například `alias ll='ls -latr'` vytvoří novou zkratku `ll`. -- V Bashových scriptech používejte `set -x` (nebo jeho variantu `set -v`, která zaznamenává nezpracovaný vstup včetně nečekaných proměnných a komentářů) pro ladící výstup. Používejte přísné módy pokud nemáte dobrý důvod proč to tak nedělat: Příkazem `set -e` nastavíte přerušení při chybě (nenulový návratový kód). Použijte `set -u` pro zjištění použití neinicializovaných proměnných. Zvažte také `set -o pipefail` pro chyby v rourách (přečtěte si na tohle téma více pokud tuto možnost využijete, jelikož jde o citlivé téma). Pro více zapojených scriptů použijte `trap` na EXIT nebo ERR. Dobrým zvykem bývá začínat scripty takto, což zachytí a ukončí běh na běžných chybách a vypíše zprávu: +- V Bashových scriptech používejte `set -x` (nebo jeho variantu `set -v`, která zaznamenává nezpracovaný vstup včetně nečekaných proměnných a komentářů) pro ladící výstup. Používejte striktní módy pokud nemáte dobrý důvod proč to tak nedělat: Příkazem `set -e` nastavíte přerušení při chybě (nenulový návratový kód). Použijte `set -u` pro zjištění použití neinicializovaných proměnných. Zvažte také `set -o pipefail` pro chyby v rourách (přečtěte si na tohle téma více pokud tuto možnost využijete, jelikož jde o citlivé téma). Pro více zapojených scriptů použijte `trap` na EXIT nebo ERR. Dobrým zvykem bývá začínat scripty takto, což zachytí a ukončí běh na běžných chybách a vypíše zprávu: ```bash set -euo pipefail trap "echo 'error: Script selhal: neuspesny prikaz vyse'" ERR @@ -140,7 +140,7 @@ Příklady: - Používejte `screen` nebo [`tmux`](https://tmux.github.io/) k rozšíření obrazovky, což je užitečné zejména na vzdálených ssh připojeních a k odpojení a znovu-připojení k sezení. `byobu` dokáže vylepšit obrazovku nebo tmux a poskytovat více informací a jednodušší správu. Více minimalistická varianta pouze pro přetrvání sezení je `dtach`. -- v ssh je důležité vědět jak tunelovat porty s pomocí `-L` nebo `-D` (a příležitostně `-R`) například k přístupu na webovou stránku ze vzdáleného serveru. +- v ssh je důležité vědět, jak tunelovat porty s pomocí `-L` nebo `-D` (a příležitostně `-R`) například k přístupu na webovou stránku ze vzdáleného serveru. - Může být užitečné udělat trochu optimalizačních úprav vašeho ssh připojení; například v `~/.ssh/config` je nastavení pro vyhýbání se odhozeným spojením v jistých sítích, používá kompresi (což je užitečné se scp přeš síť s malou šířkou pásma připojení) a multiplexové kanály ke stejnému serveru v lokálním souboru. ``` @@ -155,14 +155,14 @@ Příklady: - Některé další možnosti vstahující se k ssh jsou bezpečnostně citlivé a měli by být povoleny s opatrností, například pro jednotlivé podsítě nebo hosty v důvěryhodných sítích: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- Zvažte [`mosh`](https://mosh.mit.edu/) jako alternativu k ssh která používá UDP, vyhýbá se padlým spojením a přidává pohodlí na cestách (vyžaduje nastavení na serveru). +- Zvažte [`mosh`](https://mosh.mit.edu/) jako alternativu k ssh, která používá UDP, vyhýbá se padlým spojením a přidává pohodlí na cestách (vyžaduje nastavení na serveru). - K získání oprávnění k souboru v osmičkové formě, což je užitečné pro systémovou konfiguraci, ale nedostupné v `ls` a lehko zpackatelné, použijte něco jako ```sh stat -c '%A %a %n' /etc/timezone ``` -- Pro interaktivní výběr hodnot ze vstupu jinéh příkazu použijte [`percol`](https://github.com/mooz/percol) nebo [`fzf`](https://github.com/junegunn/fzf). +- Pro interaktivní výběr hodnot ze vstupu jiného příkazu použijte [`percol`](https://github.com/mooz/percol) nebo [`fzf`](https://github.com/junegunn/fzf). - Pro interakci se soubory v závislosti na vstupu jiného příkazu (třeba `git`), použijte `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). @@ -202,7 +202,7 @@ Příklady: - Mějte na paměti, že nastavení lokalizace ovlivňuje mnoho příkazů v shellu mnoha způsoby včetně pořadí při třídění a výkonu. Většina Linuxových instalací nastaví `LANG` nebo jinou lokalizační proměnnou na lokální nastavení jako americká angličtina. Nezapomínejte však, že vaše třídění se změní změníte-li lokalizaci. A myslete na to, že i18n rutiny mohou způsobit, že třídění nebo jiné příkazy mohou běžet **mnohokrát** pomaleji. V některých situacích (při nastavování nebo testu unikátnost jako níže) lze bezpečně ignorovat pomalé i18n rutiny úplně a použít tradiční bytový pořádek pří třídění s `export LC_ALL=C`. -- Měli byste znáz základní `awk` a `sed` pro jednoduché operace s daty. Například sčítání všech čísel ve třetím sloupci textového souboru: `awk '{ x += $3 } END { print x }'`. Tento příkaz je pravděpodobně 3x rychlejší a obsahuje 3x méně kódu než jeho ekvivalent v Pythonu. +- Měli byste znát základní `awk` a `sed` pro jednoduché operace s daty. Například sčítání všech čísel ve třetím sloupci textového souboru: `awk '{ x += $3 } END { print x }'`. Tento příkaz je pravděpodobně 3x rychlejší a obsahuje 3x méně kódu než jeho ekvivalent v Pythonu. - K nahrazení všech výskytů řetězce v jedno místě nebo ve více souborech: ```sh @@ -219,7 +219,7 @@ Příklady: rename 's/\.bak$//' *.bak ``` -- Jak říká manuálová stránka, `rsync` je skutečně rychlý a neobyčejně univerzální nástroj na kopírování souborů. Je znám pro synchronizaci mezi stroji, ale je také stejně užitečný lokálně. Jde také o jednu z [nejrychlejších cest](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) k odstranění velkého množství souborů: +- Jak říká manuálová stránka, `rsync` je skutečně rychlý a neobyčejně univerzální nástroj na kopírování souborů. Je znám pro synchronizaci mezi stroji, ale je stejně užitečný lokálně. Jde také o jednu z [nejrychlejších cest](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) k odstranění velkého množství souborů: ```sh mkdir prazdny && rsync -r --delete prazdny/ nejaky-adr && rmdir nejaky-adr ``` @@ -254,7 +254,7 @@ Příklady: - Pro webové ladění jsou vhodn0 `curl` a `curl /I` nebo jejich `wget` ekvivalenty nebo více moderní [`httpie`](https://github.com/jkbrzt/httpie). -- Pro zjištění současného procesorového/diskového stavu, klasické nástroje jako `top` (nebo lépe `htop`). Použijte `iostat -mxz 15` pro základní CPU a detailní diskové stavy pro každý diskový oddíl a výkonostní porozumnění. +- Pro zjištění současného procesorového/diskového stavu, klasické nástroje jako `top` (nebo lépe `htop`). Použijte `iostat -mxz 15` pro základní CPU a detailní diskové stavy pro každý diskový oddíl a výkonostní statistiky. - Pro detaily ohledně síťové konektivity použijte `netstat` a `ss`. @@ -262,13 +262,13 @@ Příklady: - Na zjištění stavu paměti spusťte `free` a `vmstat` a pokuste se porozumět jejich výstupům. Zejména dbejte na "cached" hodnotu což je paměť držená Linuxovým kernelem jako souborová cache, tudíž se počítá do "volné" paměťi. -- Java ladění je odlišný šálek čaje, ale jednoduchý trik na Javu od Oraclu a některé jiné JVM je, že stále můžete použít `kill -3 ` a plný detail objektů na zásobníku a souhrn haldy (včetně obecnějších detailů z **garbage collectoru**, které mohou být nesmírně informativní) bude zapsán do stderr/logs. Nástroje JDK jako `jps`, `jstat`, `jstack` a `jmap` jsou také užitečné, avšak [SJK tools](https://github.com/aragozin/jvm-tools) jsou více pokročilé. +- Ladění Javy je odlišný šálek čaje, ale jednoduchý trik na Javu od Oraclu a některé jiné JVM je, že stále můžete použít `kill -3 ` a výpis zásobníku a haldy (včetně obecnějších detailů z **garbage collectoru**, které mohou být nesmírně informativní) bude zapsán do stderr/logs. Nástroje JDK jako `jps`, `jstat`, `jstack` a `jmap` jsou také užitečné, avšak [SJK tools](https://github.com/aragozin/jvm-tools) jsou více pokročilé. - Použijte `mtr` jako lepší `traceroute` pro identifikování potíží se sítí. -- Pro zjištění proč jedisk plný, `ncdu` šetří čas oproti obvyklým příkazům jako `du /sh *`. +- Při zjištování proč je disk plný, `ncdu` šetří čas oproti obvyklým příkazům jako `du /sh *`. -- Ke zjištění který socket nebo proces zahlcuje pásmo zkuste `iftop` nebo `nethogs`. +- Ke zjištění, který socket nebo proces zahlcuje pásmo, zkuste `iftop` nebo `nethogs`. - Nástroj `ab` (přibalený k Apachi) je užitečný pro rychlé a hrubé zkontrolování výkonosti webového serveru. Komplexnější měření umožňuje `siege`. @@ -280,7 +280,7 @@ Příklady: - Je důležité umět se připojit k běžícímu procesu za pomoci `gdb` a získat výpis jeho chodu. -- Používejte `/proc`. Je úžasně nápomocný v okamžicích kdy laděíte živé problémy. Příklady: /proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kde `xxx` je id nebo pid procesu.). +- Používejte `/proc`. Je úžasně nápomocný v okamžicích, kdy ladíte živé problémy. Příklady: /proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kde `xxx` je id nebo pid procesu.). - Když zjišťujete proč se něco v minulosti pokazilo, `sar` může být nedocenitelný. Ukazuje historické statistiky CPU, paměti, sítě, atd. @@ -295,14 +295,14 @@ Příklady: Pár příkladů na spojování příkazů: -- Někdy je pozoruhodně užitečné dělat průnik, sjednocení a rozdíl textových souborů pomocí `sort`/`uniq`. Předpokládejte, že `a` a `b` jsou unikátní textové soubory. Toto je rychlé a funguje na souborech libovolné velikosti až do mnoha gigabytů. (Třídění pomocí `sort` není omezeé pamětí, ale je možné že budete muset použít `-T` přepínač pokud se `/tmp` nachází na malém diskovém oddílu). Podívejte se také na poznámku o LC_ALL výše a přepínač `sortu` `-u` (vynechaný pro přehlednost). +- Někdy je pozoruhodně užitečné dělat průnik, sjednocení a rozdíl textových souborů pomocí `sort`/`uniq`. Předpokládejte, že `a` a `b` jsou unikátní textové soubory. Toto je rychlé a funguje na souborech libovolné velikosti až do mnoha gigabytů. (Třídění pomocí `sort` není omezené pamětí, ale je možné, že budete muset použít `-T` přepínač, pokud se `/tmp` nachází na malém diskovém oddílu). Podívejte se také na poznámku o LC_ALL výše a přepínač `sortu` `-u` (vynechaný pro přehlednost). ```sh cat a b | sort | uniq > c # c je sjednocení b cat a b | sort | uniq -d > c # c je průnik b cat a b b | sort | uniq -u > c # c je rozdíl a - b ``` -- Použijte `grep .*` pro rychlé prošetření obsahu všech souborů v adresáři (každý soubor je spojen s názvem souboru) nebo `head -100 *` (aby každý soubor měl záhlaví). Může být užitečné pro adresáře s konfiguračními soubory jko jsou například `/sys`, `/proc` a `/etc`. +- Použijte `grep .*` pro rychlé prošetření obsahu všech souborů v adresáři (každý soubor je spojen s názvem souboru) nebo `head -100 *` (aby každý soubor měl záhlaví). Může být užitečné pro adresáře s konfiguračními soubory jako jsou například `/sys`, `/proc` a `/etc`. - Součet všech čísel ve třetím sloupci textového souboru (pravděpodobně 3x rychlejší a 3x méně kódu než ekvivalentní funkce v Pythonu): ```sh @@ -338,7 +338,7 @@ Pár příkladů na spojování příkazů: - `m4`: jednoduchý procesor maker -- `yes`: tiskne řetězec hodněkrát +- `yes`: tiskne řetězec vícekrát - `cal`: hezký kalendář @@ -414,13 +414,13 @@ Pár příkladů na spojování příkazů: - `split` a `csplit`: dělí soubory -- `sponge`: čte všechen vstup před tím než ho zapíše, užitečné prro čtení a následný zápis do téhož souboru, např. `grep -v neco nejaky-soubor | sponge nejaky-soubor` +- `sponge`: čte všechen vstup před tím než ho zapíše, užitečné pro čtení a následný zápis do téhož souboru, např. `grep -v neco nejaky-soubor | sponge nejaky-soubor` - `units`: převody jednotek a výpočty; převádí jednotky mezi sebou, (viz. `/usr/share/units/definitions.units`) - `apg`: generuje náhodná hesla -- `7z`: vysoko poměrová datová komprese +- `7z`: vysoko-poměrová datová komprese - `ldd`: informace o dynamických knihovnách @@ -499,7 +499,7 @@ Tyto věci jsou relevantní pouze pro MacOS. - Spotlight: Prohledávejte soubory s `mdfind` a vypište metadata (například EXIF informace fotografie) pomocí `mdls`. -- Nezapomínejte, že MacOS je založen na BSD Unixu a mnoho příkazů (například `ps`, `ls`, `tail`, `awk`, `sed`) mají spoustu jemných odlišností od Linuxu, což je z velké části ovlivněno System V (System Five) stylem Unixu a GNU nástroji. Mnohokrát mmůžete rozdíl poznat podle manuálové stránky mající v nadpise "BSD General Commands Manual". V některých případech mohou být GNU veerze instalovány také (třeba `gawk` a `gsed` pro GNU awk a sed). Pokud píšete multi-platformní Bashové scripty, vyhýbejte se takovým příkazům (například, zvažte Python či `perl`) nebo pečlivě testujte. +- Nezapomínejte, že MacOS je založen na BSD Unixu a mnoho příkazů (například `ps`, `ls`, `tail`, `awk`, `sed`) mají spoustu jemných odlišností od Linuxu, což je z velké části ovlivněno System V (System Five) stylem Unixu a GNU nástroji. Mnohokrát mmůžete rozdíl poznat podle manuálové stránky mající v nadpise "BSD General Commands Manual". V některých případech mohou být GNU verze instalovány také (třeba `gawk` a `gsed` pro GNU awk a sed). Pokud píšete multi-platformní Bashové scripty, vyhýbejte se takovým příkazům (například, zvažte Python či `perl`) nebo pečlivě testujte. - K získání informací o verzi vydání MacOS použijte `sw_vers`. @@ -508,7 +508,7 @@ Tyto věci jsou relevantní pouze pro MacOS. - [awesome-shell](https://github.com/alebcay/awesome-shell): Organizovaný seznam shellových nástrojů a zdrojů. - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Průvodce Mac OS příkazovou řádkou více do hloubky. -- [Přísný mód](http://redsymbol.net/articles/unofficial-bash-strict-mode/) pro psaní lepších shellových scriptů. +- [Striktní mód](http://redsymbol.net/articles/unofficial-bash-strict-mode/) pro psaní lepších shellových scriptů. - [shellcheck](https://github.com/koalaman/shellcheck): Nástroj pro statickou analýzu shellových scriptů. V podstatě lint pro bash/sh/zsh. - [Souborové názvy a cesty v shellu](http://www.dwheeler.com/essays/filenames-in-shell.html): Bohužel velmi komplexní drobnosti o korektní práci se souborovými jmény v shellových scriptech. From ce77a04dc54a69d05221449397dac3adf165fb88 Mon Sep 17 00:00:00 2001 From: miuc Date: Wed, 6 Jan 2016 11:56:53 +0800 Subject: [PATCH 18/60] update taocl for chinese language --- README-zh.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 5d6ea85..fb3a83e 100644 --- a/README-zh.md +++ b/README-zh.md @@ -319,8 +319,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 运行这个函数从这篇文档中随机获取一条技巧(解析 Markdown 文件并抽取项目): ```sh function taocl() { - curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-zh.md| pandoc -f markdown -t html | + iconv -f 'utf-8' -t 'unicode' | xmlstarlet fo --html --dropdtd | xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | xmlstarlet unesc | fmt -80 From 5dcb14a5fe304bcab468ebff51f96351ff551188 Mon Sep 17 00:00:00 2001 From: lsrom Date: Wed, 6 Jan 2016 08:20:09 +0100 Subject: [PATCH 19/60] more fixes Changes to be committed: modified: README-cs.md --- README-cs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-cs.md b/README-cs.md index 86cd253..ef4b219 100644 --- a/README-cs.md +++ b/README-cs.md @@ -21,7 +21,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte rozsáhlé dostatečné vědomosti. +Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte dostatečně rozsáhlé vědomosti. Tato práce je výsledkem [mnoha autorů a překladatelů](AUTHORS.md). Mnoho se @@ -50,7 +50,7 @@ Poznámky: - Naučte se základy Bashe. Vlastně, napište `man bash` a alespoň si to proleťte; je to celkem jednoduché a ne tak dlouhé. Jiné shelly mohou být dobré, ale Bash je mocný a vždy dostupný (znalost *pouze* zsh, fish a jiných ačkoli lákavá na vlastním notebooku omezuje v mnoha situacích, jako například při použití existujících serverů). -- Poznejte alespoň jeden textový editor dobře. Nejlépe Vím (`vi`) jelikož opravdu nemá pro občasné úpravy v terminálu nemá konkurenci (ani pokud většinu času používáte Emacs, velké IDE nebo moderní okenní editor). +- Poznejte alespoň jeden textový editor dobře. Nejlépe Vim (`vi`) jelikož opravdu nemá pro občasné úpravy v terminálu nemá konkurenci (ani pokud většinu času používáte Emacs, velké IDE nebo moderní okenní editor). - Naučte se číst dokumentaci pomocí `man` (pro zvědavce, `man man` vypíše čísla sekcí, například 1 jsou "obvyklé" příkazy, 5 jsou soubory/konvence a 8 je administrace). Hledejte manuálové stránky pomocí `apropos`. Vězte, že některé příkazy nejsou spustitelné programy, ale funkce zabudované v Bashi a nápovědu k nim můžete zobrazit příkazem `help` a `help-d`. From 5dab7b25f2f0e5bff159ec5d88a2f6a49c3bac3b Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 7 Jan 2016 00:00:45 +0200 Subject: [PATCH 20/60] sync translate with last changes --- README-uk.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-uk.md b/README-uk.md index fc082da..782b4f2 100644 --- a/README-uk.md +++ b/README-uk.md @@ -13,7 +13,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [MacOS only](#macos-only) +- [Тільки для OS X](#os-x-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) @@ -31,7 +31,7 @@ Основне: - Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). -- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#os-x-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). - Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. @@ -208,7 +208,7 @@ ```sh awk '{ x += $3 } END { print x }' myfile ``` -- Якщо вам потрібно подивитися розміри/дати файлів в дереві, це як рекурсивний `ls -l` але легше прочитати це `ls -lR`: +- Щоб побачити розмір/дату файлів в дереві, це як рекурсивний `ls -l` але легше `ls -lR`: ```sh find . -type f -ls ``` @@ -312,7 +312,7 @@ - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -##Macos-only +##os-x-only Деякі речі, які підходять *тільки* для Мака. From 2cf2f4678940847063d4dc083154298c5b98a321 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Wed, 6 Jan 2016 21:47:15 -0800 Subject: [PATCH 21/60] Add contribution guidelines. --- CONTRIBUTING.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f7a45ef --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,47 @@ +## Contributing to The Art of Command Line + +This guide is a [collaborative effort](AUTHORS.md), based on the generous work of dozens contributors. + +Contributions of all kinds, including corrections, additions, improvements, and translations, are welcome! + +We hope you'll join and help, in small ways or large. +Here are few notes before you jump in. + +### Style + +- Stay close to the existing style of the document when possible. +- Remember to focus on brevity, specificity, and utility. +- Avoid long explanations and instead prefer links to resources. + +### Using issues and PRs + +- Please *create and comment on issues freely* to discuss. A lot of the difficulty in accepting PRs is around style and format, and whether changes should be made at all, so rationale or explanations for the change are useful. +- Please *review open issues and pull requests* before submitting a new one, to help reduce duplication. +- To the extent possible, *break up changes into multiple PRs* so they can be approved separately. Large contributions are also welcome, but are harder and slower to approve, as they tend to require discussion or rewriting. + +## Translations + +Maintaining the guide in several languages is a little confusing, so here is the process: + +- This original version and content of the guide is maintained in English. It has been translated to several other languages +- Each translation has a maintainer to update the translation as the original evolves and to review others' changes. This doesn't require a lot of time, but review by the maintainer is important to maintain quality. +- See the [AUTHORS.md](AUTHORS.md) file for current maintainers. (This file is generated from the [authors-info.yml](admin/authors-info.yml) file.) + +Changes to translations: + +- Changes to content should be made to the English version first, and then translated to each other language. +- Changes that improve translations should be made directly on the file for that language. PRs should only modify one language at a time. +- Submit a PR with changes to the file in that language. Each language has a maintainer, who reviews changes in that language. Then the primary maintainer @jlevy merges it in. +- Prefix PRs and issues with language codes if they are for that translation only, e.g. "es: Improve grammar", so maintainers can find them easily. + +Adding translations to new languages: + +- Translations to new languages are always welcome, especially if you can maintain the translation! +- If there is not an issue for your language, file one so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. +- If the translation is in progress but stalled, offer to help. +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) +- Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. +- When done, indicate on the PR that it's ready to be merged into the main repo. + +Further questions on process or want to volunteer to help in some other way? +File an issue or e-mail the original author @jlevy. From 4638c8b95edafb25f527ac8418d2b4d9a722f130 Mon Sep 17 00:00:00 2001 From: francescomalatesta Date: Thu, 7 Jan 2016 09:27:19 +0100 Subject: [PATCH 22/60] Adding some headers for separate sections (existing and new translations) --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f7a45ef..60e4ff3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,14 +27,14 @@ Maintaining the guide in several languages is a little confusing, so here is the - Each translation has a maintainer to update the translation as the original evolves and to review others' changes. This doesn't require a lot of time, but review by the maintainer is important to maintain quality. - See the [AUTHORS.md](AUTHORS.md) file for current maintainers. (This file is generated from the [authors-info.yml](admin/authors-info.yml) file.) -Changes to translations: +### Changes to translations - Changes to content should be made to the English version first, and then translated to each other language. - Changes that improve translations should be made directly on the file for that language. PRs should only modify one language at a time. - Submit a PR with changes to the file in that language. Each language has a maintainer, who reviews changes in that language. Then the primary maintainer @jlevy merges it in. - Prefix PRs and issues with language codes if they are for that translation only, e.g. "es: Improve grammar", so maintainers can find them easily. -Adding translations to new languages: +### Adding translations to new languages - Translations to new languages are always welcome, especially if you can maintain the translation! - If there is not an issue for your language, file one so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. From fc022b584a3d32abd09e7897c2b89ef207905bc5 Mon Sep 17 00:00:00 2001 From: francescomalatesta Date: Thu, 7 Jan 2016 09:28:14 +0100 Subject: [PATCH 23/60] Making the first item in the new translations section a simple message --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60e4ff3..e897de4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,7 +36,8 @@ Maintaining the guide in several languages is a little confusing, so here is the ### Adding translations to new languages -- Translations to new languages are always welcome, especially if you can maintain the translation! +Translations to new languages are always welcome, especially if you can maintain the translation! + - If there is not an issue for your language, file one so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. - If the translation is in progress but stalled, offer to help. - To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) From 8d48e44ce3bdb32e19a3f7df96e26d96b589bf17 Mon Sep 17 00:00:00 2001 From: francescomalatesta Date: Thu, 7 Jan 2016 09:28:47 +0100 Subject: [PATCH 24/60] Moving up the getting started item in the new translations setction --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e897de4..3cf9ae0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,9 +38,9 @@ Maintaining the guide in several languages is a little confusing, so here is the Translations to new languages are always welcome, especially if you can maintain the translation! +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) - If there is not an issue for your language, file one so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. - If the translation is in progress but stalled, offer to help. -- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - When done, indicate on the PR that it's ready to be merged into the main repo. From 5dbe213e3ed814feda53520119466a17a2eeea79 Mon Sep 17 00:00:00 2001 From: francescomalatesta Date: Thu, 7 Jan 2016 09:30:01 +0100 Subject: [PATCH 25/60] Added bold format to the main concepts of the entire document --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3cf9ae0..8b8b27c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Here are few notes before you jump in. ### Style - Stay close to the existing style of the document when possible. -- Remember to focus on brevity, specificity, and utility. +- Remember to focus on **brevity**, **specificity**, and **utility**. - Avoid long explanations and instead prefer links to resources. ### Using issues and PRs From d2f2652dd6aaea058892974ca6f7938f31ba20e1 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 7 Jan 2016 07:42:47 -0800 Subject: [PATCH 26/60] Tweaks to contributing guidelines. --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b8b27c..ad118a8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,9 +15,9 @@ Here are few notes before you jump in. ### Using issues and PRs -- Please *create and comment on issues freely* to discuss. A lot of the difficulty in accepting PRs is around style and format, and whether changes should be made at all, so rationale or explanations for the change are useful. -- Please *review open issues and pull requests* before submitting a new one, to help reduce duplication. -- To the extent possible, *break up changes into multiple PRs* so they can be approved separately. Large contributions are also welcome, but are harder and slower to approve, as they tend to require discussion or rewriting. +- Please **create and comment on issues freely** to discuss. A lot of the difficulty in accepting PRs is around style and format, and whether changes should be made at all, so rationale or explanations for the change are useful. +- Please **review open issues and pull requests** before submitting a new one, to help reduce duplication. +- To the extent possible, **break up changes into multiple PRs** so they can be approved separately. Large contributions are also welcome, but are harder and slower to approve, as they tend to require discussion or rewriting. ## Translations @@ -38,9 +38,9 @@ Maintaining the guide in several languages is a little confusing, so here is the Translations to new languages are always welcome, especially if you can maintain the translation! +- Check existing issues to see if a translation is in progress or stalled. If so, offer to help. +- If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. - To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) -- If there is not an issue for your language, file one so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. -- If the translation is in progress but stalled, offer to help. - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - When done, indicate on the PR that it's ready to be merged into the main repo. From bb347d41ff9029a888bff6a440b13dc8fe288a53 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 7 Jan 2016 16:24:18 -0800 Subject: [PATCH 27/60] More tweaks to contributing guidelines. --- CONTRIBUTING.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ad118a8..2746cb1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ ## Contributing to The Art of Command Line -This guide is a [collaborative effort](AUTHORS.md), based on the generous work of dozens contributors. +This guide is a [collaborative effort](AUTHORS.md), based on the generous work of many contributors. Contributions of all kinds, including corrections, additions, improvements, and translations, are welcome! @@ -19,6 +19,7 @@ Here are few notes before you jump in. - Please **review open issues and pull requests** before submitting a new one, to help reduce duplication. - To the extent possible, **break up changes into multiple PRs** so they can be approved separately. Large contributions are also welcome, but are harder and slower to approve, as they tend to require discussion or rewriting. + ## Translations Maintaining the guide in several languages is a little confusing, so here is the process: @@ -44,5 +45,8 @@ Translations to new languages are always welcome, especially if you can maintain - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - When done, indicate on the PR that it's ready to be merged into the main repo. -Further questions on process or want to volunteer to help in some other way? -File an issue or e-mail the original author @jlevy. +### Further questions + +Unsure of the process? +Or do you have skills and inclination to help in a more substantial way? +File an issue or e-mail the original author [@jlevy](https://github.com/jlevy). From b5b1878e9519819276343240ce16b1bf86c14aa9 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 8 Jan 2016 09:57:29 -0800 Subject: [PATCH 28/60] Update author roles and credits. --- AUTHORS.md | 31 +++++++++++++++++++++++-------- admin/authors-info.yml | 2 ++ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 3d4ce01..350f499 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -8,13 +8,14 @@ Contributors are listed in alphabetical order by GitHub login. * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) +* [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) * [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) +* [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ -* [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) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[12+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[13+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [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) @@ -27,18 +28,21 @@ Contributors are listed in alphabetical order by GitHub login. * [Jamie Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) -* [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)_ +* [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) +* [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) * [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) +* [Hyojin Kwak (hyojin)](https://github.com/hyojin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hyojin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahyojin) * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [109+](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_ +* [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [115+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [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) @@ -47,30 +51,39 @@ Contributors are listed in alphabetical order by GitHub login. * [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) +* [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) +* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translator and maintainer (cs)_ +* [Luke Yeager (lukeyeager)](https://github.com/lukeyeager) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lukeyeager)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alukeyeager) +* [TAKAGI Masahiro (m-takagi)](https://github.com/m-takagi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=m-takagi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Am-takagi) * [Matjaž Lipuš (matjaz)](https://github.com/matjaz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz) * [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera) * [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) +* [Crisoforo Gaspar Hernández (mitogh)](https://github.com/mitogh) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mitogh)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amitogh) * [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) — [29+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [30+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[21+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) +* [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) -* [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) +* [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) +* [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [27+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintaner (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [31+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) +* [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) +* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [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) @@ -78,6 +91,8 @@ Contributors are listed in alphabetical order by GitHub login. * [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)_ +* [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) +* [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) * [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) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 80d02f9..64a69c5 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -12,6 +12,7 @@ footer: | exclude: gitter-badger + ReadmeCritic roles: jlevy: original author and maintainer @@ -38,3 +39,4 @@ roles: Armour: translator (zh) stepan0904: translator and maintainer (uk) francescomalatesta: translator and maintainer (it) + lsrom: translator and maintainer (cs) From ec8edcdd534397945b059fd52a94d461f4cb13fe Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 8 Jan 2016 10:03:10 -0800 Subject: [PATCH 29/60] Add note on author names. --- AUTHORS.md | 5 ++++- admin/authors-info.yml | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/AUTHORS.md b/AUTHORS.md index 350f499..6f16f39 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -42,7 +42,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [115+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [116+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [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) @@ -100,6 +100,9 @@ Contributors are listed in alphabetical order by GitHub login. Numbers link to commits/issues. For simplicity, this file is maintained only in English. +If your name does not appear as you would like it above, verify your name on your GitHub profile. +Also confirm that your commits are using the correct e-mail to it is linked to your profile. + 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 64a69c5..0ca75fe 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -8,6 +8,9 @@ footer: | Numbers link to commits/issues. For simplicity, this file is maintained only in English. + If your name does not appear as you would like it above, verify your name on your GitHub profile. + Also confirm that your commits are using the correct e-mail to it is linked to your profile. + If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. exclude: From a6fb20835923756ab36d68f552611ef6575d7b1a Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 8 Jan 2016 15:25:40 -0800 Subject: [PATCH 30/60] Alphabetize translation links. Also use native langauge names. --- README-cs.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 3 ++- README-zh.md | 2 +- README.md | 2 +- 11 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README-cs.md b/README-cs.md index ef4b219..c1be68b 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-es.md b/README-es.md index 3bc1b33..ea01f99 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-it.md b/README-it.md index 990ab0c..49e6c55 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ja.md b/README-ja.md index e45786d..32e1785 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 101842f..e0bee80 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-pt.md b/README-pt.md index d9a33f3..10d4520 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ru.md b/README-ru.md index e678801..6fa4907 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-sl.md b/README-sl.md index 2ff5a07..dcdfa94 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-uk.md b/README-uk.md index b5cdb61..46827aa 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,7 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] + # Мистецтво командного рядка [![Вступайте в англомовний чат проекту 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) diff --git a/README-zh.md b/README-zh.md index b4a692b..d095493 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README.md b/README.md index c7bd312..f1c782c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md), [Czech](README-cs.md) +[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] From 471098edc7edd545e0d260a7fb93d5e22d50b0e8 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 9 Jan 2016 16:35:32 -0800 Subject: [PATCH 31/60] Add link on contributing. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c7bd312..9820e7f 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,12 @@ 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 +Some 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 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.) - +but it has since moved to GitHub, where people more talented than the original author have made numerous improvements. +[**Please contribute**](/CONTRIBUTING.md) if you see an error or something that could be better! ## Meta From 63367c6356f394e38559a9fcd1978054c69b6ef6 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 9 Jan 2016 16:42:44 -0800 Subject: [PATCH 32/60] Note on translations following English version. Follow-up on #336. --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2746cb1..6bc491f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,9 +22,10 @@ Here are few notes before you jump in. ## Translations -Maintaining the guide in several languages is a little confusing, so here is the process: +The guide is now available in many languages. Here is the process for maintaining translations: -- This original version and content of the guide is maintained in English. It has been translated to several other languages +- This original version and content of the guide is maintained in English. +- Translations follow the content of the original. Unfortunately, contributors must speak at least some English, so that translations do not diverge. - Each translation has a maintainer to update the translation as the original evolves and to review others' changes. This doesn't require a lot of time, but review by the maintainer is important to maintain quality. - See the [AUTHORS.md](AUTHORS.md) file for current maintainers. (This file is generated from the [authors-info.yml](admin/authors-info.yml) file.) From 11d201e84705f6faa3d25233347af0d5d04368b8 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 9 Jan 2016 17:00:42 -0800 Subject: [PATCH 33/60] Tweak contributing guidelines. #336 --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6bc491f..11d003d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,6 +44,7 @@ Translations to new languages are always welcome, especially if you can maintain - If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. - To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. +- Add links to your translation at the top of every README*.md file. (For consistency, the link should be added in alphabetical order by ISO code, and the anchor text should be in the native language.) - When done, indicate on the PR that it's ready to be merged into the main repo. ### Further questions From 495255477dfa7d5879b7475fbac99a51688a8eac Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 10 Jan 2016 02:27:48 +0100 Subject: [PATCH 34/60] sl: Update translation --- README-sl.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README-sl.md b/README-sl.md index dcdfa94..d457074 100644 --- a/README-sl.md +++ b/README-sl.md @@ -24,12 +24,12 @@ Jedrnatost v ukazni vrstici je znanje, ki je pogostokrat zanemarjeno ali smatrano za zastarelo, vendar izboljša vašo fleksibilnost in produktivnost kot inženir na očitne in neočitne načine. To so izbrani zapiski in nasveti glede uporabe ukazne vrstice, ki smo jo našli uporabno pri delu z Linux-om. Nekateri nasveti so elementarni in nekateri so precej določeni, sofisticirani ali nepregledni. Ta stran ni dolga, vendar če lahko uporabite in se spomnite vseh elementov tu, boste vedeli veliko. To delo je rezultat [mnogih avtorjev in prevajalcev](AUTHORS.md). -Veliko tega -se [prvotno](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) -[pojavi](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +Nekaj tega +se je [prvotno](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[pojavilo](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) na [Quori](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -vendar glede na dani interes tu, izgleda vredno uporabe GitHub-a, kjer lahko ljudje bolj talentirani od prvotnega avtorja takoj predlagajo izboljšave. Če opazite napako ali nekaj, kar je lahko bolje, prosim, pošljite težavo ali zahtevek potega (PR)! (Seveda, prosim preglejte meta sekcijo in obstoječe težave/zahtevke potega najprej.) - +vendar se je premaknilo na GitHub, kjer so ljudje bolj talentirani od prvotnega avtorja naredili številne izboljšave. +[**Prosimo, prispevajte**](/CONTRIBUTING.md), če vidite napako ali nekaj, kar bi lahko bilo boljše! ## Meta @@ -310,7 +310,7 @@ Nekaj primerov sestavljanja ukazov skupaj: awk '{ x += $3 } END { print x }' myfile ``` -- Če želite videti velikost/datume v drevesu datotek, je to kot rekurzivni `ls -l` vendar enostavnejše za branje kot `ls -lR`: +- Da vidite velikost/datume v drevesu datotek, je to kot rekurzivni `ls -l` vendar enostavnejše za branje kot `ls -lR`: ```sh find . -type f -ls ``` From e4d556abe439790c0ef21d47746cf6c3b1deeea8 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 9 Jan 2016 17:40:55 -0800 Subject: [PATCH 35/60] Tighten up languages headers. --- README-cs.md | 11 +++++------ README-es.md | 5 ++--- README-it.md | 5 ++--- README-ja.md | 6 +++--- README-ko.md | 5 ++--- README-pt.md | 5 ++--- README-ru.md | 5 ++--- README-sl.md | 5 ++--- README-uk.md | 6 +++--- README-zh.md | 5 ++--- README.md | 5 ++--- 11 files changed, 27 insertions(+), 36 deletions(-) diff --git a/README-cs.md b/README-cs.md index c1be68b..151b59c 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # Umění příkazové řádky @@ -24,7 +23,7 @@ Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte dostatečně rozsáhlé vědomosti. Tato práce je výsledkem [mnoha autorů a překladatelů](AUTHORS.md). -Mnoho se +Mnoho se [původně](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [objevilo](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) na webu [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), @@ -116,7 +115,7 @@ Příklady: trap "echo 'error: Script selhal: neuspesny prikaz vyse'" ERR ``` -- V Bash scriptech jsou subshelly (psané s kulatými závorkami) vhodným způsobem shlukování příkazů. Běžným příkladem budiž dočasný přesun do jiného pracovního adresáře, například: +- V Bash scriptech jsou subshelly (psané s kulatými závorkami) vhodným způsobem shlukování příkazů. Běžným příkladem budiž dočasný přesun do jiného pracovního adresáře, například: ```bash # udelej neco v soucasnem pracovnim adresari (cd /nejaky/jiny/adresar && jiny-prikaz) @@ -157,7 +156,7 @@ Příklady: - Zvažte [`mosh`](https://mosh.mit.edu/) jako alternativu k ssh, která používá UDP, vyhýbá se padlým spojením a přidává pohodlí na cestách (vyžaduje nastavení na serveru). -- K získání oprávnění k souboru v osmičkové formě, což je užitečné pro systémovou konfiguraci, ale nedostupné v `ls` a lehko zpackatelné, použijte něco jako +- K získání oprávnění k souboru v osmičkové formě, což je užitečné pro systémovou konfiguraci, ale nedostupné v `ls` a lehko zpackatelné, použijte něco jako ```sh stat -c '%A %a %n' /etc/timezone ``` diff --git a/README-es.md b/README-es.md index ea01f99..a2e4db2 100644 --- a/README-es.md +++ b/README-es.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # El Arte del Terminal diff --git a/README-it.md b/README-it.md index 49e6c55..c247f88 100644 --- a/README-it.md +++ b/README-it.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 32e1785..d27a952 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,6 +1,6 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* + 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index e0bee80..945261d 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 10d4520..bbf8c1a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 6fa4907..aaf0b84 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index dcdfa94..09a8458 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 46827aa..f487c47 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,6 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* + # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index d095493..4acb6a7 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # 命令行的艺术 diff --git a/README.md b/README.md index a715cc1..b121b03 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -[ Languages: -[Čeština](README-cs.md), [English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* # The Art of Command Line From 480a8640f611d0588c5cecbbb3e37c2cbbef7b8f Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 9 Jan 2016 17:44:28 -0800 Subject: [PATCH 36/60] Another tweak to langauges headers. --- README-cs.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh.md | 2 +- README.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README-cs.md b/README-cs.md index 151b59c..9674dd3 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index a2e4db2..754c60c 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # El Arte del Terminal diff --git a/README-it.md b/README-it.md index c247f88..be9a9d6 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index d27a952..6ab6215 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 945261d..02f9ed0 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index bbf8c1a..1d95b0b 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index aaf0b84..47d7193 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 09a8458..f5b7cc9 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index f487c47..1eeabce 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index 4acb6a7..0249d9f 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # 命令行的艺术 diff --git a/README.md b/README.md index b121b03..4a920b7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md)∙[English](README.md)∙[Español](README-es.md)∙[Italiano](README-it.md)∙[日本語](README-ja.md)∙[한국어](README-ko.md)∙[Português](README-pt.md)∙[Русский](README-ru.md)∙[Slovenščina](README-sl.md)∙[Українська](README-uk.md)∙[中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line From 9bd2e415df7e048900d680fbdda4c4bc4f94441d Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Mon, 11 Jan 2016 10:52:24 +0200 Subject: [PATCH 37/60] es: update translation (11-01-2016) --- README-es.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README-es.md b/README-es.md index 41538ff..be1b91c 100644 --- a/README-es.md +++ b/README-es.md @@ -24,11 +24,12 @@ La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta mejora su flexibilidad y productividad como ingeniero en formas obvia y sutil. Esta es una selección de notas y consejos al usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). -La mayor parte +Parte de esta: [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el author original pudiendo fácilmente sugerir mejoras. Si ve un error o algo que podría ser mejor, por favor, crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. +[**Por favor contribuye**](/CONTRIBUTING.md) Si ves un error o algo que podría ser mejor! ## Meta @@ -309,7 +310,7 @@ Algunos ejemplos de comandos reunidos: awk '{ x += $3 } END { print x }' myfile ``` -- Si quiere examinar tamaños/fechas en un árbol de archivos, esto es como un `ls -l` recursivo pero es más fácil de leer que `ls -lR`: +- Consultar tamaños/fechas en un árbol de archivos, esto es como un `ls -l` recursivo pero es más fácil de leer que `ls -lR`: ```sh find . -type f -ls ``` From 2331b097c85e117369209c8b5dbcb4fe030ff6eb Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Mon, 11 Jan 2016 10:55:23 +0200 Subject: [PATCH 38/60] Merge branch 'jlevy/master' # Conflicts: # README-es.md --- AUTHORS.md | 34 ++- CONTRIBUTING.md | 54 +++++ README-cs.md | 524 +++++++++++++++++++++++++++++++++++++++++ README-es.md | 19 +- README-it.md | 13 +- README-ja.md | 168 +++++++++---- README-ko.md | 11 +- README-pt.md | 5 +- README-ru.md | 9 +- README-sl.md | 23 +- README-uk.md | 101 ++++---- README-zh.md | 13 +- README.md | 19 +- admin/authors-info.yml | 5 + 14 files changed, 831 insertions(+), 167 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 README-cs.md diff --git a/AUTHORS.md b/AUTHORS.md index 3d4ce01..6f16f39 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -8,13 +8,14 @@ Contributors are listed in alphabetical order by GitHub login. * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) +* [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) * [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) +* [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ -* [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) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[12+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[13+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [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) @@ -27,18 +28,21 @@ Contributors are listed in alphabetical order by GitHub login. * [Jamie Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) -* [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)_ +* [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) +* [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) * [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) +* [Hyojin Kwak (hyojin)](https://github.com/hyojin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hyojin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahyojin) * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [109+](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_ +* [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [116+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [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) @@ -47,30 +51,39 @@ Contributors are listed in alphabetical order by GitHub login. * [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) +* [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) +* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translator and maintainer (cs)_ +* [Luke Yeager (lukeyeager)](https://github.com/lukeyeager) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lukeyeager)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alukeyeager) +* [TAKAGI Masahiro (m-takagi)](https://github.com/m-takagi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=m-takagi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Am-takagi) * [Matjaž Lipuš (matjaz)](https://github.com/matjaz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz) * [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera) * [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) +* [Crisoforo Gaspar Hernández (mitogh)](https://github.com/mitogh) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mitogh)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amitogh) * [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) — [29+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [30+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[21+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) +* [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) -* [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) +* [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) +* [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [27+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintaner (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [31+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) +* [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) +* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [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) @@ -78,6 +91,8 @@ Contributors are listed in alphabetical order by GitHub login. * [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)_ +* [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) +* [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) * [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) @@ -85,6 +100,9 @@ Contributors are listed in alphabetical order by GitHub login. Numbers link to commits/issues. For simplicity, this file is maintained only in English. +If your name does not appear as you would like it above, verify your name on your GitHub profile. +Also confirm that your commits are using the correct e-mail to it is linked to your profile. + 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/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..11d003d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +## Contributing to The Art of Command Line + +This guide is a [collaborative effort](AUTHORS.md), based on the generous work of many contributors. + +Contributions of all kinds, including corrections, additions, improvements, and translations, are welcome! + +We hope you'll join and help, in small ways or large. +Here are few notes before you jump in. + +### Style + +- Stay close to the existing style of the document when possible. +- Remember to focus on **brevity**, **specificity**, and **utility**. +- Avoid long explanations and instead prefer links to resources. + +### Using issues and PRs + +- Please **create and comment on issues freely** to discuss. A lot of the difficulty in accepting PRs is around style and format, and whether changes should be made at all, so rationale or explanations for the change are useful. +- Please **review open issues and pull requests** before submitting a new one, to help reduce duplication. +- To the extent possible, **break up changes into multiple PRs** so they can be approved separately. Large contributions are also welcome, but are harder and slower to approve, as they tend to require discussion or rewriting. + + +## Translations + +The guide is now available in many languages. Here is the process for maintaining translations: + +- This original version and content of the guide is maintained in English. +- Translations follow the content of the original. Unfortunately, contributors must speak at least some English, so that translations do not diverge. +- Each translation has a maintainer to update the translation as the original evolves and to review others' changes. This doesn't require a lot of time, but review by the maintainer is important to maintain quality. +- See the [AUTHORS.md](AUTHORS.md) file for current maintainers. (This file is generated from the [authors-info.yml](admin/authors-info.yml) file.) + +### Changes to translations + +- Changes to content should be made to the English version first, and then translated to each other language. +- Changes that improve translations should be made directly on the file for that language. PRs should only modify one language at a time. +- Submit a PR with changes to the file in that language. Each language has a maintainer, who reviews changes in that language. Then the primary maintainer @jlevy merges it in. +- Prefix PRs and issues with language codes if they are for that translation only, e.g. "es: Improve grammar", so maintainers can find them easily. + +### Adding translations to new languages + +Translations to new languages are always welcome, especially if you can maintain the translation! + +- Check existing issues to see if a translation is in progress or stalled. If so, offer to help. +- If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) +- Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. +- Add links to your translation at the top of every README*.md file. (For consistency, the link should be added in alphabetical order by ISO code, and the anchor text should be in the native language.) +- When done, indicate on the PR that it's ready to be merged into the main repo. + +### Further questions + +Unsure of the process? +Or do you have skills and inclination to help in a more substantial way? +File an issue or e-mail the original author [@jlevy](https://github.com/jlevy). diff --git a/README-cs.md b/README-cs.md new file mode 100644 index 0000000..9674dd3 --- /dev/null +++ b/README-cs.md @@ -0,0 +1,524 @@ +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + + +# Umění příkazové řádky + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Meta](#meta) +- [Základy](#zaklady) +- [Každodenní použití](#kazdodenni-pouziti) +- [Zpracování souborů a dat](#zpracovani-souboru-a-dat) +- [Ladění systému](#ladeni-systemu) +- [Jednořádkové příkazy](#jednoradkove-prikazy) +- [Neobvyklé ale užitečné](#neobvykle-ale-uzitecne) +- [Pouze pro OS X](#pouze-pro-os-x) +- [Další zdroje](#dalsi-zdroje) +- [Zřeknutí se odpovědnosti](#zreknuti-se-odpovednosti) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Plynulost práce na příkazové řádce je umění často opomíjené nebo považované za překonané, ale zlepšuje vaši flexibilitu a produktivitu jako inženýr jak očividně tak nenápadně. Toto je výběr poznámek a tipů pro použití příkazové řádky které shledáváme užitečnými při práci na Linuxu. Některé tipy jsou základní a některé jsou velmi specifické, komplikované či nejasné. Tato stránka není dlouhá, ale pokud dokážete použít a vybavit si všechny věci zde zmíněné, máte dostatečně rozsáhlé vědomosti. + +Tato práce je výsledkem [mnoha autorů a překladatelů](AUTHORS.md). +Mnoho se +[původně](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[objevilo](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +na webu [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +ale s ohledem na zájem, který tam panoval, se zdálo vhodné použít GitHub, kde lidé více talentovaní než původní autor mohli okamžitě navrhovat zlepšení. Pokud najdete chybu či něco, co by mohlo být vylepšeno, prosím vytvořte issue nebo pull request! (Samozřejmě nejdříve zkontrolujte meta sekci a existující pull requesty a issues.) + + +## Meta + +Rozsah: + +- Tento průvodce je pro začátečníky i pro pokročilé. Cílem je *široký záběr* (vše důležité), *specifičnost* (poskytnout konkrétní příklady nejčastějšího použití) a *stručnost* (vyhnout se věcem, které nejsou nezbytné nebo podobným tématům, které lze vyhledat jinde). Každý tip je v některých případech nenahraditelný nebo značně šetří čas oproti alternativám. +- Tento dokument je napsán pro Linux s vyjímkou sekcí označených jako "[Pouze pro OS X](#os-x-only)". Mnoho ostatních položek lze použít nebo je lze nainstalovat na jiných Unixových systémech nebo MacOS (dokonce i na Cygwin). +- Zaměření dokumentu je na inteaktivní Bash ačkoli mnoho tipů lze aplikovat na jiné shelly a obecné bashové scriptování. +. Jsou zahrnuty jak "standardní" Unixové příkazy tak příkazy vyžadující instalaci extra balíčků -- pokud jsou dost důležité aby zasloužily zmínku. + +Poznámky: + +- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` podle distribuce k instalaci nových progamů. +- Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. + + +## Zaklady + +- Naučte se základy Bashe. Vlastně, napište `man bash` a alespoň si to proleťte; je to celkem jednoduché a ne tak dlouhé. Jiné shelly mohou být dobré, ale Bash je mocný a vždy dostupný (znalost *pouze* zsh, fish a jiných ačkoli lákavá na vlastním notebooku omezuje v mnoha situacích, jako například při použití existujících serverů). + +- Poznejte alespoň jeden textový editor dobře. Nejlépe Vim (`vi`) jelikož opravdu nemá pro občasné úpravy v terminálu nemá konkurenci (ani pokud většinu času používáte Emacs, velké IDE nebo moderní okenní editor). + +- Naučte se číst dokumentaci pomocí `man` (pro zvědavce, `man man` vypíše čísla sekcí, například 1 jsou "obvyklé" příkazy, 5 jsou soubory/konvence a 8 je administrace). Hledejte manuálové stránky pomocí `apropos`. Vězte, že některé příkazy nejsou spustitelné programy, ale funkce zabudované v Bashi a nápovědu k nim můžete zobrazit příkazem `help` a `help-d`. + +- Naučte se přesměrování výstupu a vstupu pomocí `>` a `<` a roury pomocí `|`. Pamatujte, že `>` přepíše obsah výstupního souboru a `>>` přidá na jeho konec. Nezapomeňte na stdout (stndardní výstup) a stderr (standardní chybový výstup). + +- Poznejte souborovou hromadnou expanzi za pomoci `*` (případně `?` a `[`...`]`) a úvozovkách a rozdílu mezi dvojitými uvozovkami `"` a jednoduchými `'`. (Více na expanzi proměných níže.) + +- Seznamte se se správou činností v Bashi: `&`, **ctrl-z**, ctrl-c**, `jobs`, `fg`, `bg`, `kill`, atd. + +- Seznamte se s `ssh` a základy bezheslové autentizace pomocí `ssh-agent`, `ssh-add`, atd. + +- Základní správa souborů: `ls` a `ls -l` (zejména co který sloupec v `ls -l` znamená), `less`, `head`, `tail` a `tail -f` (nebo ještě lépe `less +F`), `ln` a `ln -s` (pochopte rozdíly a výhody pevného odkazu a symoblického odkazu), `chown`, `chmod`, `du` (pro krátký souhrn využití disku: `du -hs *`). Pro správu souborového systému, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Pochopte co je inode (`ls -i` nebo `df -i`). + +- základní správa síťí: `ip` nebo `ifconfig`, `dig`. + +- Dobře se naučte regulárních výrazů a rozličné příznaky pro `grep`/`egrep`. Přepínače `-i`, `-o`, `-v`, `-A`, `-B` a `-C` je také vhodné znát. + +- Naučte se používat `apt-get`, `yum`, `dnf` nebo `pacman` (podle vaší distribuce) k hledání a instalaci balíků. A ujistěte se, že máte `pip` k instalace Pythonových terminálových nástrojů (některé je nejjednodušší nainstalovat pomocí `pip`). + + +## Kazdodenni pouziti + +- V Bashi používejte **Tab** k dokončení argumentů nebo vylistování všech dostupných příkazů a **ctrl-r** k vyhledávání v historii příkazů (po stisknutí pište pro hledání a poté mačkejte opakovaně **ctrl-r** k procházení více shod, **Enter** k provedení nalezeného příkazu nebo šipku vpravo pro vložení výsledku hledání do terminálu a následnou editaci). + +- V Bashi používejte **ctrl-w** pro smazní posledního slova a **ctrl-u** pro smazání všeho od současné pozice kurzoru až po začátek řádku. Používejte **alt-b** a **alt-f** k procházení řádku po slovech, **ctrl-a** pro skok na začátek řádku, **ctrl-e** pro skok kurzoru na konec řádku, **ctrl-k** pro smazání všeho od současné pozice až ke konci řádku, **ctrl-l** pro vyčištění obrazovky. Prohlédněte si `man readline` pro všechny defaultní klávesové zkratky v Bashi. Je jich hodně. Například **alt-.** projíždí předchozí argumenty a **alt-*** rozšíří řetězec. + +- Pokud milujete klávesové zkratky ve stylu *vi*, použijte `set -o vi` (a `set -o emacs` pro návrat ke standardnímu rozložení). + +- Pro úpravu dlouhých příkazů, po nastavení vašeho editoru (například `export EDITOR=vim`), **ctrl-x** **ctrl-e** v něm otevře stávající příkaz pro víceřádkovou úpravu. Nebo ve *vi* stylu, **escape-v**. + +- Zobrazení nedávných příkazů se provádí pomocí `history`. Existuje spousta zkratek jako `!$` (poslední argument) a `!!` (poslední příkaz), ale tyto jsou jednoduše nahraditelné pomocí **ctrl-r** a **alt-.**. + +- Pro přechod do předchozího pracovního adresáře: `cd -`. + +- Pokud máte zpola napsaný příkaz, ale rozmyslíte si to, stiskněte **alt-#** pro přidání `#` na začátek řádku a vložte ho jako komentář (nebo použijte **ctrl-a**, **#**, **enter**). Takto se k němu můžete později vrátit v historii příkazů. + +- Používejte `xargs` (nebo `parallel`). Jde o mocný příkaz. Nezapomeňte, že můžete ovládat kolik položek se má vykonat na řádku (`-L`) stejně jako paralelismus (`-P`). Pokud si nejste jisti zda to udělá co má, zkuste nejdříve `xargs echo`. Hodí se také `-I{}`. +Příklady: +```bash + find . -name '*.py' | xargs grep nejaka_funkce + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` je užitečné zobrazení stromu procesů. + +- Používejte `pgrep` a `pkill` k hledání nebo posílání signálů procesům podle jména. (`-f` je také užitečné). + +- Pamatujte si rozličné signály, které lze posílat procesům. Například, k pozastavení procesu, použijte `kill -STOP [pid]`. Celý seznam signálů v `man 7 signal`. + +- Používejte `nohup` nebo `disown` pokud chcete, aby proces na pozadí běžel navždy. + +- Kontrolujte, které procesy naslouchají pomocí `netstat -lntp` nebo `ss -plat` (pro TCP; přidejte `-u` pro UDP). + +- Podívejte se také na `lsof` pro otevřené sockety a soubory. + +- Jak dlouho systém běží poznáte díky `uptime` nebo `w`. + +- Pomocí `alias` si nastavte zkratky pro často používané příkazy. Například `alias ll='ls -latr'` vytvoří novou zkratku `ll`. + +- V Bashových scriptech používejte `set -x` (nebo jeho variantu `set -v`, která zaznamenává nezpracovaný vstup včetně nečekaných proměnných a komentářů) pro ladící výstup. Používejte striktní módy pokud nemáte dobrý důvod proč to tak nedělat: Příkazem `set -e` nastavíte přerušení při chybě (nenulový návratový kód). Použijte `set -u` pro zjištění použití neinicializovaných proměnných. Zvažte také `set -o pipefail` pro chyby v rourách (přečtěte si na tohle téma více pokud tuto možnost využijete, jelikož jde o citlivé téma). Pro více zapojených scriptů použijte `trap` na EXIT nebo ERR. Dobrým zvykem bývá začínat scripty takto, což zachytí a ukončí běh na běžných chybách a vypíše zprávu: +```bash + set -euo pipefail + trap "echo 'error: Script selhal: neuspesny prikaz vyse'" ERR +``` + +- V Bash scriptech jsou subshelly (psané s kulatými závorkami) vhodným způsobem shlukování příkazů. Běžným příkladem budiž dočasný přesun do jiného pracovního adresáře, například: +```bash + # udelej neco v soucasnem pracovnim adresari + (cd /nejaky/jiny/adresar && jiny-prikaz) + # pokracuj v puvodnim adresari +``` + +- Nezapomeňte, že v Bashi je mnoho druhů expanze proměnných. KOntrola, že proměnná existuje `${jmeno:?chybova hlaska}`. například, pokud script vyžaduje jediný argument, napište `vstupni_soubor=${1:?pouziti: $0 vstupni_soubor}`. Aritmetická expanze: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Ořezání (trimming) řetězců: `${var%suffix}` a `${var#prefix}`. Pokud například `var=foo.pdf`, pak `echo ${var%.pdf}.txt` zobrazí `foo.txt`. + +- Expanze složených závorek použitím `{`...`}` může snížit potřebu přepisovat podobné texty a zautomatizovat kombinaci položek. Toto může být užitečné například v `mv foo.{txt,pdf} nejaky-adresar` (což přesune oba soubory), `cp nejakysoubor{,.bak}` (což se rozšíří do `cp nejakysoubor nejakysoubor.bak`) nebo `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (což se rozšíří do všech možných kombinací a vytvoří příslušný adresářový strom). + +- S výstupem některých příkazů lze zacházet jako se souborem pomocí `<(nejaky prikaz)`. Například porovnání lokálního `/etc/hosts` se vzdáleným: +```sh + diff /etc/hosts <(ssh nejakyhost cat /etc/hosts) +``` + +- Poznejte "zdejší dokumenty" v Bashi, míněno `cat < logsoubor 2>&1` nebo `nejaky-prikaz &>logsoubor`. Častokrát, k zajištění, že příkaz nezanechá otevřený souborový držák (handle), navázání ho na terminál ve kterém jste, je dobrá praktika také přidat ` bar: + repren --full --preserve-case --from foo --to bar . + # Obnov zalozni soubory cokoliv.bak -> cokoli: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Stejne jako vyse za pouziti jmena pokud mozne: + rename 's/\.bak$//' *.bak +``` + +- Jak říká manuálová stránka, `rsync` je skutečně rychlý a neobyčejně univerzální nástroj na kopírování souborů. Je znám pro synchronizaci mezi stroji, ale je stejně užitečný lokálně. Jde také o jednu z [nejrychlejších cest](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) k odstranění velkého množství souborů: +```sh + mkdir prazdny && rsync -r --delete prazdny/ nejaky-adr && rmdir nejaky-adr +``` + +- Použijte `shuf` k zamíchání nebo vybrání náhodných řádek ze souboru. + +- Mějte přehled v `sort` možnostech. Pro čísla, použijte `-n` nebo `-h` pro práci s lidsky čitelnými čísly (například z `du -h`). Pochopte jak fungují klíče (`-t` a `-k`). Zejména mějte na paměti, že musíte psát `-k,1` pro třídění za použití pouze prvního pole; `-k1` znamená třídění podle celého řádku. Stabilní třídění (`sort -s`) může být užitečné. Například k setřídění primárně podle druhého pole a sekundárně podle druhého pole můžete použít `sort -k1,1 | sort -s -k2,2`. + +- Pokud někdy potřebujete zapsat znak tabulátor do příkazové řádky v Bashi (například pro -t argument pro třídění), stiskněte press **ctrl-v** **[Tab]** nebo napište $'\t'` (druhá možnost je lepší, protože výsledek můžete zkopírovat/vložit). + +- Standardní nástroje pro porovnávání zdrojového kódu jsou `diff` a `patch`. Za zmínku stojí také `diffstat` zobrazující statistiky z diffu a `sdiff` pro rozdíly bok po boku. Nezapomeňte, že `diff -r` funguje pro celé adresáře. Použijte `diff -r strom1 strom2 | diffstat` pro shrnutí změn. A `vimdiff` pro porovnání a úpravu souborů. + +- Pro binární soubory použijte `hd`, `hexdump` nebo `xxd` pro jednoduché hex dumpy a `bvi` nebo `biew` pro editaci binárek. + +- Pro binární soubory můžete také použít `strings` (například spolu s `grep`, atd), což je nástroj pro hledání částí textu. + +- Pro binární rozdíly (delta komprese) použijte `xdelta3`. + +- Pro konverzi testových kódování zkuste `iconv`. Nebo `uconv` pro pokročilejší použití; podporuje některé pokročilé Unicode věci. Například tento příkaz mění text na malé znaky a odstraňuje akcenty (jejich rozvinutím a zahozením): +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Na rozdělení souborů do částí zkuste `split` (na rozdělení podle velikosti) a `csplit` (na rozdělení podle řetězce). + +- K manipulaci s datem a časem použijte `dateadd`, `datediff`, `strptime` atd. z [`dateutils`](http://www.fresse.org/dateutils/). + +- Použijte `zless`, `zmore`, `zcat`, a `zgrep` k operacím s komprimovanými soubory. + + +## Ladeni systemu + +- Pro webové ladění jsou vhodn0 `curl` a `curl /I` nebo jejich `wget` ekvivalenty nebo více moderní [`httpie`](https://github.com/jkbrzt/httpie). + +- Pro zjištění současného procesorového/diskového stavu, klasické nástroje jako `top` (nebo lépe `htop`). Použijte `iostat -mxz 15` pro základní CPU a detailní diskové stavy pro každý diskový oddíl a výkonostní statistiky. + +- Pro detaily ohledně síťové konektivity použijte `netstat` a `ss`. + +- Rychlý přehled co se děje v systému získáte pomocí užitečného `dstat`. Pro širší přehled s detaily použijte [`glances`](https://github.com/nicolargo/glances). + +- Na zjištění stavu paměti spusťte `free` a `vmstat` a pokuste se porozumět jejich výstupům. Zejména dbejte na "cached" hodnotu což je paměť držená Linuxovým kernelem jako souborová cache, tudíž se počítá do "volné" paměťi. + +- Ladění Javy je odlišný šálek čaje, ale jednoduchý trik na Javu od Oraclu a některé jiné JVM je, že stále můžete použít `kill -3 ` a výpis zásobníku a haldy (včetně obecnějších detailů z **garbage collectoru**, které mohou být nesmírně informativní) bude zapsán do stderr/logs. Nástroje JDK jako `jps`, `jstat`, `jstack` a `jmap` jsou také užitečné, avšak [SJK tools](https://github.com/aragozin/jvm-tools) jsou více pokročilé. + +- Použijte `mtr` jako lepší `traceroute` pro identifikování potíží se sítí. + +- Při zjištování proč je disk plný, `ncdu` šetří čas oproti obvyklým příkazům jako `du /sh *`. + +- Ke zjištění, který socket nebo proces zahlcuje pásmo, zkuste `iftop` nebo `nethogs`. + +- Nástroj `ab` (přibalený k Apachi) je užitečný pro rychlé a hrubé zkontrolování výkonosti webového serveru. Komplexnější měření umožňuje `siege`. + +- Pro důslednější síťové ladění, `wireshark`, `tshark` nebo `ngrep` jsou to pravé. + +- Nezapomínejte na `strace` a `ltrace`. Mohou být nápomocné zejména pokud některý program selhává, zasekává se nebo padá a nevíte proč nebo pokud chcete mít obecnou představu o výkonu. Myslete na přepínač profilingu (`-c`) a schopnost připnout se k běžícímu procesu (`-p`). + +- Dynamické knihovny vám umožní zkontrolovat `ldd`. + +- Je důležité umět se připojit k běžícímu procesu za pomoci `gdb` a získat výpis jeho chodu. + +- Používejte `/proc`. Je úžasně nápomocný v okamžicích, kdy ladíte živé problémy. Příklady: /proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kde `xxx` je id nebo pid procesu.). + +- Když zjišťujete proč se něco v minulosti pokazilo, `sar` může být nedocenitelný. Ukazuje historické statistiky CPU, paměti, sítě, atd. + +- Pro hlubší systémovou a výkonostní analýzu se podívejte na `stap`([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), a [`sysdig`](https://github.com/draios/sysdig). + +- Zkontrolujte na jakém jste OS za pomoci `uname` nebo `uname -a` (obecné Unix/kernel informace) nebo `lsb_release -a` (v Linuxových distribucích). + +- Použijte `dmesg` kdykoli se něco chová neočekávaně (může jít o hardwarový nebo driverový problém). + + +## Jednoradkove prikazy + +Pár příkladů na spojování příkazů: + +- Někdy je pozoruhodně užitečné dělat průnik, sjednocení a rozdíl textových souborů pomocí `sort`/`uniq`. Předpokládejte, že `a` a `b` jsou unikátní textové soubory. Toto je rychlé a funguje na souborech libovolné velikosti až do mnoha gigabytů. (Třídění pomocí `sort` není omezené pamětí, ale je možné, že budete muset použít `-T` přepínač, pokud se `/tmp` nachází na malém diskovém oddílu). Podívejte se také na poznámku o LC_ALL výše a přepínač `sortu` `-u` (vynechaný pro přehlednost). +```sh + cat a b | sort | uniq > c # c je sjednocení b + cat a b | sort | uniq -d > c # c je průnik b + cat a b b | sort | uniq -u > c # c je rozdíl a - b +``` + +- Použijte `grep .*` pro rychlé prošetření obsahu všech souborů v adresáři (každý soubor je spojen s názvem souboru) nebo `head -100 *` (aby každý soubor měl záhlaví). Může být užitečné pro adresáře s konfiguračními soubory jako jsou například `/sys`, `/proc` a `/etc`. + +- Součet všech čísel ve třetím sloupci textového souboru (pravděpodobně 3x rychlejší a 3x méně kódu než ekvivalentní funkce v Pythonu): +```sh + awk '{ x += $3 } END { print x }' mujsoubor +``` + +- Pokud chcete zobrazit velikosti/datumy na souborovém stromu, následující příkaz je jako rekurzivní `ls -l`, ale jedodušší na čtení než `ls -lR`: +```sh + find . -type f -ls +``` + +- Řekněme, že máte textový soubor, jako log webového serveru, a jisté hodnoty, které se objevují na některých řádcích, jako například `acct_id` parametr, který se vyskytuje v URL. Pokud chcete záznam kolik požadavků pro každý `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- K průběžnému monitorování změn použijte `watch`, například změn souborů v adresáři pomocí `watch -d -n 2 'ls -rth | tail'` nebo síťových nastavení při řešení potíží nastavení wifi: `watch -d -n 2 ifconfig`. + +- Spusťte tuto funkci k získání náhodného tipu z tohoto dokumentu (parsuje Markdown a vyextrahuje jednu položku): +```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 + } +``` + +## Neobvykle ale uzitecne + +- `expr`: provede aritmetické nebo logické operace nebo vyhodnotí regulární výrazy + +- `m4`: jednoduchý procesor maker + +- `yes`: tiskne řetězec vícekrát + +- `cal`: hezký kalendář + +- `env`: provede příkaz (užitečné ve scriptech) + +- `printenv`: vypíše proměnné prostředí (užitečné při ladění a ve scriptech) + +- `look`: najde anglická slova (nebo řádky v souboru) začínající řetězcem + +- `cut`, `paste` a `join`: manipulace s daty + +- `fmt`: formátuje text do odstavců + +- `pr`: formátuje text do stránek/sloupců + +- `fold`: zalamuje řádky textu + +- `column`: formátuje textová pole do zarovnaných sloupců nebo tabulek s danou šířkou + +- `expand` a `unexpand`: převádí tabulátory a mezery + +- `nl`: přidá čísla řádků + +- `seq`: tiskne čísla + +- `bc`: kalkulačka + +- `factor`: provádí faktorizaci celých čísel (15 = 5 a 3) + +- [`gpg`](https://gnupg.org/): šifruje a podepisuje soubory + +- `toe`: tabulka informací o dostupných terminálech + +- `nc`: síťové ladění a přenos dat + +- `socat`: socketové relé a tcp port přesměrování (podobné `netcat`) + +- [`slurm`](https://github.com/mattthias/slurm): visualizace síťového provozu + +- `dd`: přesun dat mezi soubory nebo zařízeními + +- `file`: identifikuje typ souboru + +- `tree`: zobrazí adresáře a podadresáře jako vnořený strom; podobně jako `ls` ale rekurzivně + +- `stat`: informace o souboru + +- `time`: provede a načasuje příkaz + +- `timeout`: provádí příkaz po specifikovanou dobu a zastaví proces když daná doba uplyne + +- `lockfile`: vytvoří semaforový soubor, který lze odstranit pouze pomocí `rm -f` + +- `logrotate`: rotuje, komprimuje a posílá logy emailem + +- `watch`: spouští opakovaně příkaz a zobrazuje výsledky a/nebo zvýrazňuje změny + +- `tac`: tiskne soubory pozpátku (po řádcích) + +- `shuf`: náhodně vybere řádky ze souboru + +- `comm`: porovná seřazení soubory řádek po řádku + +- `pv`: monitoruje postup dat skrz rouru + +- `hd`, `hexdump`, `xxd`, `biew` a `bvi`: vypíše nebo edituje binární soubory + +- `strings`: vypreparuje textové řetězce z binárních souborů + +- `tr`: překládá znaky nebo s nimi manipuluje + +- `iconv` nebo `uconv`: převod pro kódování textu + +- `split` a `csplit`: dělí soubory + +- `sponge`: čte všechen vstup před tím než ho zapíše, užitečné pro čtení a následný zápis do téhož souboru, např. `grep -v neco nejaky-soubor | sponge nejaky-soubor` + +- `units`: převody jednotek a výpočty; převádí jednotky mezi sebou, (viz. `/usr/share/units/definitions.units`) + +- `apg`: generuje náhodná hesla + +- `7z`: vysoko-poměrová datová komprese + +- `ldd`: informace o dynamických knihovnách + +- `nm`: vypíše symboly z objektových souborů + +- `ab`: zátěžové testy webserverů + +- `strace`: ladění systému + +- `mtr`: vylepšení traceroute pro síťové ladění + +- `cssh`: vizuální souběžný shell + +- `rsync`: synchronizuje soubory a adresáře přes SSH nebo v lokálním systému souborů + +- `wireshark` a `tshark`: zachytávání packetů a síťové ladění + +- `ngrep`: grep pro síťovou vrstvu + +- `host` a `dig`: DNS vyhledávání + +- `lsof`: zpracovává souborové popisovače (descriptory) a informace o socketech + +- `dstat`: užitečné systémové informace + +- [`glances`](https://github.com/nicolargo/glances): vysoko úrovňový, multi-systémový přehled + +- `iostat`: statistiky využití disku + +- `mpstat`: statistiky využití CPU + +- `vmstat`: statistiky využití paměti + +- `htop`: vylepšená verze top (správa procesů) + +- `last`: historie přihlášení + +- `w`: kdo je přihlášen + +- `id`: informace o identitě uživatele/skupiny + +- `sar`: historické systémové statistiky + +- `iftop` nebo `nethogs`: využití sítě pro proces nebo socket + +- `ss`: statistika socketů + +- `dmesg`: bootovací a systémové chybové zprávy + +- `sysctl`: zobrazení a konfigurace parametrů Linuxového kernelu za běhu + +- `hdparm`: SATA/ATA disková manipulace/výkon + +- `lsb_release`: informace o Linuxové distribuci + +- `lsblk`: seznam blokových zařízení: stromové zobrazení disků a diskových oddílů + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informace o hardwaru zahrnující CPU, BIOS, RAID, grafiku, zařízení, atd. + +- `lsmod` a `modinfo`: seznam a detaily kernelových modulů + +- `fortune`, `ddate`, a `sl`: hm, no, záleží jestli považujete parní lokomotivy a Zippyho citáty za "užitečné" + + +## Pouze pro OS X + +Tyto věci jsou relevantní pouze pro MacOS. + +- Balíčky spravované pomocí `brew` (Homebrew) a/nebo `port` (MacPorts). Mohou být použity k instalaci mnoha předešlých příkazů na MacOS. + +- Kopírujte výstup jakéhokoli příkazu do desktopové aplikace pomocí `pbcopy` a vložte vstup z nějaké pomocí `pbpaste`. + +- K povolení klávesy Option v Terminálu Mac OS jako klávesu Alt (pro použití v příkazech jako **alt-b**, **alt-f**, atd.), otevřete Předvolby -> Profily -> Klávesnice a zvolte "Použít Option jako Meta klávesu". + +- K otevření souboru za pomoci desktopové aplikace použijte `open` nebo `open -a /Aplikace/Cokoli.app`. + +- Spotlight: Prohledávejte soubory s `mdfind` a vypište metadata (například EXIF informace fotografie) pomocí `mdls`. + +- Nezapomínejte, že MacOS je založen na BSD Unixu a mnoho příkazů (například `ps`, `ls`, `tail`, `awk`, `sed`) mají spoustu jemných odlišností od Linuxu, což je z velké části ovlivněno System V (System Five) stylem Unixu a GNU nástroji. Mnohokrát mmůžete rozdíl poznat podle manuálové stránky mající v nadpise "BSD General Commands Manual". V některých případech mohou být GNU verze instalovány také (třeba `gawk` a `gsed` pro GNU awk a sed). Pokud píšete multi-platformní Bashové scripty, vyhýbejte se takovým příkazům (například, zvažte Python či `perl`) nebo pečlivě testujte. + +- K získání informací o verzi vydání MacOS použijte `sw_vers`. + + +## Dalsi zdroje + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Organizovaný seznam shellových nástrojů a zdrojů. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Průvodce Mac OS příkazovou řádkou více do hloubky. +- [Striktní mód](http://redsymbol.net/articles/unofficial-bash-strict-mode/) pro psaní lepších shellových scriptů. +- [shellcheck](https://github.com/koalaman/shellcheck): Nástroj pro statickou analýzu shellových scriptů. V podstatě lint pro bash/sh/zsh. +- [Souborové názvy a cesty v shellu](http://www.dwheeler.com/essays/filenames-in-shell.html): Bohužel velmi komplexní drobnosti o korektní práci se souborovými jmény v shellových scriptech. + + +## Zřeknutí se odpovědnosti + +S vyjímkou velmi malých úkolů je kód psán tak, aby ho ostatní mohli přečíst. S mocí přichází zodpovědnost. Skutečnost, že něco *můžete* v Bashi udělat nemusí nutně znamenat, že byste měli! ;) + + +## License + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Tato práce je licencována pod [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). diff --git a/README-es.md b/README-es.md index be1b91c..70f801c 100644 --- a/README-es.md +++ b/README-es.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # El Arte del Terminal @@ -13,8 +12,8 @@ - [Procesamiento archivos y datos](#procesamiento-de-archivos-y-datos) - [Depuración del sistema](#depuración-del-sistema) - [One-liners](#one-liners) -- [Obscuro pero útil](#oscuro-pero-útil) -- [Solo para MacOS X](#solo-para-macos-x) +- [Obscuro pero útil](#osbcuro-pero-útil) +- [Solo para OS X](#solo-para-os-x) - [Más recursos](#más-recursos) - [Advertencia](#advertencia) @@ -37,7 +36,7 @@ pero se ha movido desde entonces a Github, donde personas más talentosas que el Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Esta escrito para Linux, con excepción de la sección "[Solo para MacOS X](#macos-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). - Se enfoca en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y al Bash scripting por lo general. - Incluye tanto comandos "estándar" Unix, así como aquellos que requieren la instalación especial de un paquete -- siempre que sea suficientemente importante para ameritar su inclusión. @@ -174,7 +173,7 @@ Notas: ## Procesamiento de archivos y datos -- Para localizar un archivo por nombre en el directorio actual, `find . -iname '*something*'` (o similar). Para encontrar un archivo en cualquier lado por nombre, usa `locate something` (pero tenga en mente que `updatedb` quizás no haya indexado recientemente los archivos creados). +- Para localizar un archivo por nombre en el directorio actual, `find . -iname '*algo*'` (o similar). Para encontrar un archivo en cualquier lado por nombre, usa `locate something` (pero tenga en mente que `updatedb` quizás no haya indexado recientemente los archivos creados). - Para búsqueda general a través de archivos fuente o de datos (más avanzado que `grep -r`), usa [`ag`](https://github.com/ggreer/the_silver_searcher). @@ -307,7 +306,7 @@ Algunos ejemplos de comandos reunidos: - Sumar todos los números en la tercera columna de un archivo de texto (esto es probablemente 3 veces más rápido y 3 veces menos código que el equivalente en Python): ```sh - awk '{ x += $3 } END { print x }' myfile + awk '{ x += $3 } END { print x }' miarchivo ``` - Consultar tamaños/fechas en un árbol de archivos, esto es como un `ls -l` recursivo pero es más fácil de leer que `ls -lR`: @@ -334,7 +333,7 @@ Algunos ejemplos de comandos reunidos: ``` -## Oscuro pero útil +## Obscuro, pero útil - `expr`: ejecuta operaciones aritméticas o booleanas o evalúa expresiones regulares @@ -487,7 +486,7 @@ Algunos ejemplos de comandos reunidos: - `fortune`, `ddate`, y `sl`: um, bien, depende de si considera las locomotoras de vapor y citas Zippy "útiles" -## Solo para MacOS X +## Solo para OS X Estos son puntos relevantes *únicamente* para MacOS. diff --git a/README-it.md b/README-it.md index 803a5f8..be9a9d6 100644 --- a/README-it.md +++ b/README-it.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) @@ -14,7 +13,7 @@ - [Debug sistema](#debug-sistema) - [One-liner](#one-liner) - [Oscuri ma utili](#oscuri-ma-utili) -- [MacOS X](#macos-x) +- [OS X](#os-x) - [Ulteriori risorse](#ulteriori-risorse) - [Disclaimer](#disclaimer) @@ -35,7 +34,7 @@ Una buona parte di ciò che leggi è [apparsa](http://www.quora.com/What-are-som Obiettivi: - Questa guida è adatta sia a principianti che ad utenti con più conoscenze. Ci proponiamo di seguire tre principi fondamentali: *ampiezza* (cerchiamo di includere tutto quello che serve), *specificità* (dando degli esempi concreti) e *brevità* (evitando tutto il futile e il superfluo). Ogni consiglio viene dato con l'obiettivo di salvare del tempo prezioso. -- Questa guida è stata scritta per Linux, con alcune eccezioni per che abbiamo riportato nella sezione "[MacOS X](#macos-x-only)". In ogni caso, molti dei consigli che vedrai si applicano tranquillamente ad altri sistemi operativi Unix e a MacOS. +- Questa guida è stata scritta per Linux, con alcune eccezioni per che abbiamo riportato nella sezione "[OS X](#os-x-only)". In ogni caso, molti dei consigli che vedrai si applicano tranquillamente ad altri sistemi operativi Unix e a MacOS. - Il focus principale sarà su interactive Bash, nonostante non sia esclusivamente così. - Verranno inclusi comandi "base" Unix, ma anche altri che necessiteranno di installazioni separate. @@ -206,7 +205,7 @@ Note: - Ricorda che le impostazioni riguardo la localizzazione influiscono un sacco su alcuni tool da linea di comando, in molti modi. Ad esempio sugli ordinamenti (collation) e performance. Molte installazioni Linux impostano `LANG` ed altre variabili correlate automaticamente su US English (inglese americano). Se decidi di cambiare lingua, non è detto quindi che le cose rimangano così come sono. Alcuni comandi, addirittura, potrebbero diventare immediatamente molto più lenti. -- Impara le basi di `awk` e `sed` per manipolare dati. Ad esempio, per sommare tutti i numeri nella terza colonna di un file di testo, usa `awk '{ x += $3 } END { print x }'`. Probabilmente tre volte più veloce e tre volt epiù corto del suo equivalente in Python. +- Impara le basi di `awk` e `sed` per manipolare dati. Ad esempio, per sommare tutti i numeri nella terza colonna di un file di testo, usa `awk '{ x += $3 } END { print x }'`. Probabilmente tre volte più veloce e tre volte più corto del suo equivalente in Python. - Per rimpiazzare tutte le occorrenze di una stringa, in uno o più file: @@ -500,7 +499,7 @@ Qualche esempio di combinazione di più comandi comandi: - `fortune`, `ddate`, e `sl`: mmmh, beh, dipende molto da quanto consideri le locomotive a vapore e le citazioni di Zippy "utili". -## MacOS X +## OS X Consiera questa sezione come un'esclusiva MacOS. diff --git a/README-ja.md b/README-ja.md index 8fecfd9..6ab6215 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,8 +1,8 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* -原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) + +原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) # The Art of Command Line @@ -15,6 +15,7 @@ - [システムのデバッグ](#system-debugging) - [ワンライナー](#one-liners) - [目立たないが便利なもの](#obscure-but-useful) +- [OS X用のもの](#os-x-only) - [さらなるリソース](#more-resources) - [免責事項](#disclaimer) @@ -22,14 +23,14 @@ コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるだろう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものだ。ここでは、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上にある)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストを送ってほしい!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認しよう) +このドキュメントは[多くの執筆者と翻訳者](AUTHORS.md)による成果である。ここに書いてあることの多くは、[元々](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に置くのがよいのではと思った。間違いやもっとこうした方がよいという点があれば、issueを登録するかpull requestを送ってほしい!(もちろん、メタ情報の項や既存のpull requestsやissuesをまず確認しよう) ## メタ情報 対象 : - このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。 -- Linux向けに書いている。多くはMacOS(あるいはCygwin)でも使えるが、全部ではない。 +- [OS X用のもの](#os-x-only)を除き、Linux向けの内容となっており、その多くは各種LinuxおよびMacOS(あるいはCygwin)でも使えるだろう。 - インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。 注意 : @@ -45,30 +46,32 @@ - `man`でのドキュメントの読み方を知ろう(知りたがりのために書くと、`man man`でセクション番号が分かる。例えば1は「一般的な」コマンド、5はファイルやそのお作法、8は管理についてといった具合)。`apropos`でmanページを探そう。コマンドによっては実行可能ファイルではなくBashのビルトインコマンドであることを理解し、`help`や`help -d`でヘルプが見られることを知ろう。 -- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。stdout(標準出力)とstderr(標準エラー出力)を学ぼう。 +- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。`>`は出力ファイルを上書き、`>>`は追記となる。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`。 +- ファイル管理について。`ls`や`ls -l`(特に、`ls -l`の各列が何を意味するか理解)、`less`、`head`、`tail`、`tail -f`(または`less +F`)、`ln`と`ln -s`(ハードリンクとソフトリンクの違いとそれぞれの利点の理解)、`chown`と`chmod`、`du`(ディスク使用量まとめを簡単に見るなら`du -hs *`)。ファイルシステム管理については、`df`、`mount`、`fdisk`、`mkfs`、`lsblk`。inodeについては、`ls -i`(または `df -i`)。 - 基本的なネットワーク管理について。`ip`あるいは`ifconfig`、`dig`。 -- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-A`、`-B`といったオプションは知っておいて損はない。 +- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-v`、`-A`、`-B`、`-C`といったオプションは知っておいて損はない。 - `apt-get`、`yum`、`dnf`、`pacman`(ディストリビューションによって違う)といったコマンドでパッケージを探したりインストールする方法を学ぼう。Pythonベースのコマンドラインツールをインストールするのに、`pip`も必要だ(後に出てくるいくつかのコマンドは`pip`でインストールするのが一番簡単)。 ## 日常的に使うもの -- Bashでは、引数を補完するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。 +- Bashでは、引数を補完、または利用可能なコマンドを列挙するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。(検索キーを入力した後、**ctrl-r**を繰り返し入力することで次から次へと検索結果を送ることができる。**Enter**で見つかったコマンドの実行となり、**Enter**ではなく右カーソルキーを押した場合は見つかったコマンドが入力された状態になる。) -- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**。Bashにおけるデフォルトのキー割り当てを全て見るには``man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 +- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行頭に移動するには**ctrl-a**、行末に移動するには**ctrl-e**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**である。Bashにおけるデフォルトのキー割り当てを全て見るには`man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 -- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。 +- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。(元に戻したいときは`set -o emacs`) + +- 長いコマンドを編集するときに、エディタを設定した後で(例えば`export EDITOR=vim`)、**ctrl-x** **ctrl-e**によって編集中のコマンドが複数行の編集のために指定したエディタで開かれる。vi風の場合は、**escape-v**。 - 最近実行したコマンドを確認するなら`history`。**ctrl-r**や**alt-.**で用は足りるだろうが、`!$`(直前の引数)や`!!`(直前のコマンド)といった省略形もたくさんある。 @@ -95,7 +98,16 @@ - 開かれているソケットやファイルを見るには`lsof`も参照。 -- Bashスクリプトでは、`set -x`でデバッグ出力を出せる。可能なら厳格モードを使い、エラーが起きたら強制終了するよう`set -e`する。パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、`trap`も使おう。 +- `uptime`や`w`によってシステムの稼働時間を調べられる。 + +- `alias`によってよく利用するコマンドのエイリアス(ショートカット)を作成できる。例えば、`alias ll='ls -latr'`では新しいエイリアスである`ll`が作成される. + +- Bashスクリプトでは、`set -x`でデバッグ出力を出せる(`set -v`は、実行されるコマンドや変数名やコメントなどをそのまま出力する)。特別な理由がない限り厳格モード(strict mode)を使い、`set -e`でエラー時(0以外の終了コード時)に強制終了するように。`set -u`によって未定義の変数の利用を検知、パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、EXITまたはERRシグナルに対して`trap`も使おう。使う場面としては以下の場合のようにエラーを検知してメッセージを出力するとき: + +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` - Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するというよくある例。 @@ -107,6 +119,8 @@ - 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`が出力に。 +- `{`...`}`を使った中括弧展開によって、似たようなコマンドを複数回入力しなくて済む。例えば、 `mv foo.{txt,pdf} some-dir` (両方のファイルを移動させる), `cp somefile{,.bak}` (`cp somefile somefile.bak` と展開される)、`mkdir -p test-{a,b,c}/subtest-{1,2,3}` (すべての可能な組み合わせでディレクトリが作られる). + - コマンドの出力を`<(some command)`のようにしてファイルのように扱える。例えば、ローカルとリモートのの`/etc/hosts`を比較するなら以下のようになる。 ```sh @@ -115,11 +129,11 @@ - `cat <logfile 2>&1`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、`logfile 2>&1`または`some-command &>logfile`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、` barへとファイル名、ディレクトリ名、ファイルの中身を変更する: repren --full --preserve-case --from foo --to bar . + # バックアップファイルを元に戻す whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # 上記と同じものをrenameを使って: + rename 's/\.bak$//' *.bak +``` + +- マニュアルページにあるように `rsync` は非常に高速で万能なファイルコピーの道具である。マシーン間のファイルを同期させることでよく知られているが、ローカルの場合でも同様に有用である。また、大量のファイルを削除する[高速な方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)としても利用できる: + +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - ファイルからランダムな行を抜き出すには`shuf` -- `sort`のオプションを理解しよう。キーがどのように処理されるのか(`-t`や`-k`)を知ろう。特に、最初の列だけでソートするには`-k1,1`とかく必要があり、`-k1`だと全行を見てソートされるという点に注意。 +- `sort`のオプションを理解しよう。数値に対しては`-n`を使い、人間にとって読みやすい形式の数値の場合(例えば、`du -h`の出力)は`-h`を使おう。キーがどのように処理されるのか(`-t`や`-k`)を知ろう。特に、最初の列だけでソートするには`-k1,1`と書く必要があり、`-k1`だと全行を見てソートされるという点に注意。 - stableな(安定した)ソート(`sort -s`)は便利。例えば、始めに1列目でソートし、それから2列目でソートするなら、`sort -k1,1 | sort -s -k2,2`とすればよい。 - Bashのコマンドライン上でタブを表現する必要がある場合、**ctrl-v** **[Tab]**を入力するか`$'\t'` (コピペするなら後者の方がいいかも)。 -- ソースコードにパッチを当てる基本のツールは`diff`と`patch`。diffの統計情報を見るなら`diffstat`も参照しよう。`diff -r`だと、ディレクトリ全体に対して実行される。変更点の概要を見るなら`diff -r tree1 tree2 | diffstat`。 +- ソースコードにパッチを当てる基本のツールは`diff`と`patch`。`diff`や横並びの`sdiff`の統計情報を見るなら`diffstat`も参照しよう。`diff -r`だと、ディレクトリ全体に対して実行される。変更点の概要を見るなら`diff -r tree1 tree2 | diffstat`。`vimdiff`ではファイルの比較と編集が可能。 - バイナリファイルなら、単純な16進ダンプを見るのに`hd`、バイナリエディタには`bvi`。 @@ -218,19 +246,23 @@ - ファイルを分割するなら`split`(サイズで分割)と`csplit`(パターンで分割)。 +- 日付や時間の表現を扱うには、[`dateutils`](http://www.fresse.org/dateutils/)にあるように、`dateadd`、 `datediff`、 `strptime` などを使いましょう。 + - 圧縮ファイルの操作は`zless`、`zmore`、`zcat`、`zgrep`。 ## システムのデバッグ -- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jakubroztocil/httpie)。 +- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jkbrzt/httpie)。 -- ディスクやCPU、ネットワークのステータスを知るには`iostat`、`netstat`、`top`(あるいは`htop`の方がよい)、(一番は)`dstat`。システムで何が起きているのか素早く知るにはよい。 +- CPUやディスクのステータスを知るには、標準的なツールは`top` (または、より良い`htop`)、 `iostat`、 `iotop`。`iostat -mxz 15`を使って、基本的なCPUの情報やパーティッション単位でのディスクの詳細情報やパフォーマンスについて調べましょう。 -- 更に詳しいシステムの全体像を見るには、[`glances`](https://github.com/nicolargo/glances)を使おう。ひとつのターミナル内で、いくつかのシステムレベルの統計情報を表示してくれる。複数のサブシステムを素早くチェックするのに非常に便利。 +- ネットワークの状態の監視には、`netstat`や`ss`。 + +- 手早くシステムで何が起きているのかを調べるには、`dstat`が便利。より詳しく見るには、[`glances`](https://github.com/nicolargo/glances)。 - メモリのステータスを知るには、`free`あるいは`vmstat`を実行し、その出力の意味を理解しよう。特に、"cached"の値はLinuxカーネルにファイルキャッシュとして保持されているメモリ量であり、"free"の値を見る際に考慮すべきであることに注意しよう。 -- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。 +- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。JDKの `jps`、 `jstat`、 `jstack`、 `jmap` も便利で、[SJK tools](https://github.com/aragozin/jvm-tools)はより高度なツールである。 - 改良版tracerouteとして`mtr`を使ってネットワークの問題を調査しよう。 @@ -248,14 +280,14 @@ - 起動中のプロセスに`gdb`で接続し、そのスタックトレースを取る方法を知ろう。 -- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps`。 +- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/meminfo`、`/proc/cmdline`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps` (ここで、`xxx`はプロセスIDまたはPIDを意味する)。 - 過去に何か問題が起きたことの原因を探るなら、`sar`がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 -- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux))、 +- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))、 [`sysdig`](https://github.com/draios/sysdig)。 -- どのディストリビューションを使っているか確認しよう。多くのディストリビューションでは`lsb_release -a` +- どのOSを利用しているかを`uname`や`uname -a` (Unixカーネル情報)で確認しよう。どのディストリビューションを使っているかは`lsb_release -a` (ディストリビューション情報)。 - 何かいつもと違うおかしなこと(大抵ハードウェアかドライバ関連の問題だ)が起きていたら、`dmesg`を実行しよう。 @@ -271,7 +303,7 @@ cat a b b | sort | uniq -u > c # cはaとbの差異 ``` -- コンフィグが含まれている`/sys`や`/proc`や`/etc/`のようなディレクトリ内の全てのファイルの中身全部を確認するには`grep . *`を使おう。 +- `grep . *`(各行にファイル名が付く)や、`head -100 *` (ファイル毎にヘッダーが付く)を使って手軽にディレクトリ内の全てのファイルの中身を確認できる。設定ファイルが含まれるような`/sys`や`/proc`や`/etc/`に対して非常に便利である。 - テキストファイルの3列目を全て足し合わせるには以下で(Pythonで同じことをやるに比べて3倍速く3分の1の長さで書ける)。 @@ -285,19 +317,14 @@ 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 ``` +- 継続的に変更を監視する場合 `watch`を使う。例えば、ディレクトリのファイルの変更を確認するには `watch -d -n 2 'ls -rtlh | tail'` となり、wifi設定などのネットワーク設定関係のトラブルシューティングでは `watch -d -n 2 ifconfig`。 + - このドキュメントからランダムに項目を抜き出すには以下の関数を実行しよう(Markdownをパースし、アイテムを抽出する)。 ```sh @@ -326,7 +353,7 @@ - `look`: 文字列で始まる英単語(またはファイル内の行)を見つける -- `cut `、 `paste`、 `join`: データの操作 +- `cut `、 `paste`、`join`: データの操作 - `fmt`: テキストの段落をフォーマットする @@ -346,7 +373,7 @@ - `factor`: 整数を因数分解 -- `gpg`: 暗号化とファイルのサイニング +- [`gpg`](https://gnupg.org/): ファイルの暗号化と署名 - `toe`: terminfoのエントリのテーブルを表示 @@ -354,7 +381,7 @@ - `socat`: ソケットリレーとTCPポートのフォワーダ(`netcat`と同等) -- `slurm`: ネットワークトラフィックの可視化 +- [`slurm`](https://github.com/mattthias/slurm): ネットワークトラフィックの可視化 - `dd`: データをファイルあるいはデバイス間で移動 @@ -364,6 +391,16 @@ - `stat`: ファイルの情報 +- `time`: コマンドを実行して処理時間を計測 + +- `timeout`: コマンドを実行し、指定時間経過後にプロセスを停止する + +- `lockfile`: セマフォファイルを生成する。これは`rm -f`のみで削除可能。 + +- `logrotate`: ログをローテート、圧縮、メール送信 + +- `watch`: コマンドを繰り返し実行する。変更部分の強調表示もできる。 + - `tac`: ファイルを逆から表示 - `shuf`: ファイルからランダムに選んだ行を表示 @@ -372,7 +409,9 @@ - `pv`: パイプ経由でデータの進行状況をモニタリング -- `hd` および `bvi`: バイナリファイルのダンプと編集 +- `sponge`: 書き込み前に全ての入力を読み込む。例えば、`grep -v something some-file | sponge some-file` のように、入力と同じファイルに書き込む際に便利。 + +- `hd`、`hexdump`、`xxd`、`biew`、`bvi`: バイナリファイルのダンプと編集 - `strings`: バイナリファイルからテキストを抽出 @@ -380,10 +419,12 @@ - `iconv` あるいは `uconv`: 文字エンコーディングの変換 -- `split ` と `csplit`: ファイルを分割 +- `split` と `csplit`: ファイルを分割 - `units`: 単位の変換と計算。2週間あたりのハロン(訳注 : 長さの単位)からまばたきごとのトゥウィップまで( `/usr/share/units/definitions.units`も参照のこと) +- `apg`: ランダムなパスワードを生成 + - `7z`: 圧縮率の高いファイル圧縮 - `ldd`: 動的ライブラリの情報 @@ -398,7 +439,7 @@ - `cssh`: ビジュアルな並列シェル -- `rsync`: ファイルやフォルダをSSH経由で同期 +- `rsync`: ファイルやフォルダをSSH経由またはローカルファイルシステム内で同期 - `wireshark` と `tshark`: パケットキャプチャとネットワークデバッギング @@ -412,7 +453,11 @@ - [`glances`](https://github.com/nicolargo/glances): 高レベルに複数のサブシステムの概要を把握 -- `iostat`: CPUとディスクの使用状況 +- `iostat`: ディスクの使用状況 + +- `mpstat`: CPUの使用状況 + +- `vmstat`: メモリの使用状況 - `htop`: topの改良版 @@ -430,20 +475,45 @@ - `dmesg`: 起動時とシステムのエラーメッセージ +- `sysctl`: Linuxカーネルパラメータの確認および設定 + - `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 - `lsb_release`: Linuxディストリビューション情報 - `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー -- `lshw` と `lspci`: RAIDやグラフィックなどを含めたハードウェア情報 +- `lshw`、`lscpu`、`lspci`、`lsusb`、`dmidecode`: CPUやBIOS、RAID、グラフィック、その他デバイスなどのハードウェア情報 + +- `lsmod`、`modinfo`: カーネルのモジュールリストとモジュール情報 - `fortune`、 `ddate`、`sl`: んー、あー、これは蒸気機関車やZippyの引用句が「便利」だと思うかどうかによる +## OS X用のもの + +これらは*MacOS用*の項目です。 + +- パッケージ管理は`brew` (Homebrew)や`port` (MacPorts)を使う。上記の多くのコマンドをMacOSにインストールできる。 + +- コマンドの出力をクリップボードにコピーする`pbcopy`とクリップボードから出力する`pbpaste`。 + +- OptionキーをaltキーとしてMac OSのターミナルで使う(上述の**alt-b**、**alt-f**などを使う場合)には、環境設定 -> 設定 -> キーボード で、"メタキーとしてoptionキーを使用"を選択。 + +- デスクトップアプリケーションでファイルを開くには、`open`、`open -a /Applications/Whatever.app`。 + +- Spotlight: `mdfind`でファイルを検索し、メタデータ(画像ファイルのEXIFの情報など)を`mdls`で表示。 + +- Mac OSはBSD Unixベースであるため、多くのコマンド(例えば、`ps`、`ls`、`tail`、`awk`、`sed`)では、Unix System VとGNUツールの違いに影響されて、Linuxのものと比べて微妙な違いが多く含まれている。違いがあるかについては、マニュアルページのタイトルに"BSD General Commands Manual"と書かれているかどうかで判断できる。場合によっては、GNUバージョンをインストール可能である(例えば、`gawk`や`gsed`で、GNUのawkとsedに対応)。クロスプラットフォームのbashスクリプトを書く場合には、そのようなコマンドは避ける(Pythonや`perl`の利用を検討)か十分なテストが必要である。 + +- Mac OSのリリース情報を取得するには、`sw_vers`。 + ## さらなるリソース - [awesome-shell](https://github.com/alebcay/awesome-shell): シェルのツールやリソースのまとめ -- よりよいシェルスクリプトを書くには[Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): より詳しいMac OSのコマンドラインガイド +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/): よりよいシェルスクリプトを書くために +- [shellcheck](https://github.com/koalaman/shellcheck): シェルスクリプト(本来、bash/sh/zsh用)の静的解析ツール +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): シェルスクリプトでファイル名を正しく扱うために ## 免責事項 diff --git a/README-ko.md b/README-ko.md index 65c70f6..02f9ed0 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line @@ -14,7 +13,7 @@ - [System debugging](#system-debugging) - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) -- [MacOS X only](#macos-x-only) +- [OS X only](#os-x-only) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -34,7 +33,7 @@ 범위: - 이 가이드는 초보자와 경험자 모두를 위한 것입니다. 목표는 범위(전부 다 중요합니다!), 구체성(대부분의 일반적인 케이스에 대한 구체적인 예제), 그리고 간결함(쉽게 마주치지 않는, 중요하지 않고, 지엽적인 것을 피함) 입니다. 모든 팁은 특정 상황에서 매우 중요하거나, 여러 대안들 사이에서의 시간을 확연하게 절약합니다. -- 이 문서는 리눅스를 위한것입니다. "[MacOS X only](#macos-x-only)"세션을 제외하고 말이죠. 일부는 MacOS에서 똑같이 적용되지 않습니다(Cygwin에서 조차 말이죠). +- 이 문서는 리눅스를 위한것입니다. "[OS X only](#os-x-only)"세션을 제외하고 말이죠. 일부는 MacOS에서 똑같이 적용되지 않습니다(Cygwin에서 조차 말이죠). - 인터랙티브 Bash에 초점이 맞추어져있습니다만, 대부분의 팁은 다른 쉘이나, general Bash 스크립트에서도 동작합니다. - 이 문서는 "스탠다드" 유닉스 커맨드와 특정 패키지 설치를 필요로 하는 것 둘 다 포함하고 있습니다. 여기서 다루는 스탠다드 커맨드와 특정 패키지에 대한 것은 포함될만큼 충분히 중요합니다. @@ -449,7 +448,7 @@ - `fortune`, `ddate`, 그리고 `sl`: 에... 증기기관차를 생각하고있고 그것을 인용하고 싶다면 이것은 "유용"합니다 -## MacOS X only +## OS X only *MacOS에서만* 해당되는 항목입니다. diff --git a/README-pt.md b/README-pt.md index 0287157..1d95b0b 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 3d8ca98..47d7193 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Искусство командной строки @@ -14,7 +13,7 @@ - [Системный дебаггинг](#Системный-дебаггинг) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [MacOS X only](#macos-x-only) +- [OS X only](#os-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -442,7 +441,7 @@ - `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) -## MacOS X only +## OS X only Некоторые вещи, подходящие *только* для Мака. diff --git a/README-sl.md b/README-sl.md index b7398e1..4db5000 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umetnost ukazne vrstice @@ -14,7 +13,7 @@ - [Sistemsko razhroščevanje](#sistemsko-razhroščevanje) - [V eni vrstici](#v-eni-vrstici) - [Nepregledno vendar uporabno](#nepregledno-vendar-uporabno) -- [Samo za MacOS X](#samo-za-macos-x) +- [Samo za OS X](#samo-za-os-x) - [Več virov](#več-virov) - [Pogoji uporabe](#pogoji-uporabe) @@ -24,19 +23,19 @@ Jedrnatost v ukazni vrstici je znanje, ki je pogostokrat zanemarjeno ali smatrano za zastarelo, vendar izboljša vašo fleksibilnost in produktivnost kot inženir na očitne in neočitne načine. To so izbrani zapiski in nasveti glede uporabe ukazne vrstice, ki smo jo našli uporabno pri delu z Linux-om. Nekateri nasveti so elementarni in nekateri so precej določeni, sofisticirani ali nepregledni. Ta stran ni dolga, vendar če lahko uporabite in se spomnite vseh elementov tu, boste vedeli veliko. To delo je rezultat [mnogih avtorjev in prevajalcev](AUTHORS.md). -Veliko tega -se [prvotno](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) -[pojavi](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +Nekaj tega +se je [prvotno](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[pojavilo](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) na [Quori](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -vendar glede na dani interes tu, izgleda vredno uporabe GitHub-a, kjer lahko ljudje bolj talentirani od prvotnega avtorja takoj predlagajo izboljšave. Če opazite napako ali nekaj, kar je lahko bolje, prosim, pošljite težavo ali zahtevek potega (PR)! (Seveda, prosim preglejte meta sekcijo in obstoječe težave/zahtevke potega najprej.) - +vendar se je premaknilo na GitHub, kjer so ljudje bolj talentirani od prvotnega avtorja naredili številne izboljšave. +[**Prosimo, prispevajte**](/CONTRIBUTING.md), če vidite napako ali nekaj, kar bi lahko bilo boljše! ## Meta Obseg: - Ta vodič je tako za začetnike kot za poznavalce. Cilji so *širina* (vse pomembno), *specifičnost* (podaja konkretne primere najpogostejših primerov uporabe) in *kratkost* (izogiba se stvarem, ki niso bistvene ali se odmikajo, kar lahko enostavno pogledate drugje). Vsak nasvet je bistven v določeni situaciji ali bistveno prihrani čas pred alternativami. -- To je napisano za Linux z izjemo sekcije "[Samo za MacOS X](#samo-za-macos-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali MacOS (ali celo Cygwin). +- To je napisano za Linux z izjemo sekcije "[Samo za OS X](#samo-za-os-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali MacOS (ali celo Cygwin). - Poudarek je na interaktivnosti Bash-a, čeprav mnogo nasvetov velja za ostale lupine in splošno skriptanje Bash-a. - Vključuje tako "standardne" ukaze Unix-a kot tudi tiste, ki zahtevajo namestitev posebnih paketov -- dokler so dovolj pomembni, da zaslužijo vključitev. @@ -310,7 +309,7 @@ Nekaj primerov sestavljanja ukazov skupaj: awk '{ x += $3 } END { print x }' myfile ``` -- Če želite videti velikost/datume v drevesu datotek, je to kot rekurzivni `ls -l` vendar enostavnejše za branje kot `ls -lR`: +- Da vidite velikost/datume v drevesu datotek, je to kot rekurzivni `ls -l` vendar enostavnejše za branje kot `ls -lR`: ```sh find . -type f -ls ``` @@ -487,7 +486,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `fortune`, `ddate` in `sl`: hm, torej zavisi glede na to ali smatrate parne lokomotive in dinamične kotacije "uporabne" -## Samo za MacOS X +## Samo za OS X To so elementi pomembni *samo* za MacOS. diff --git a/README-uk.md b/README-uk.md index af750a1..1eeabce 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,7 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + + # Мистецтво командного рядка [![Вступайте в англомовний чат проекту 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) @@ -13,26 +14,26 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [MacOS only](#macos-only) +- [Тільки для OS X](#os-x-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшує Вашу продуктивність в роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в Linux. Деякі з них - прості й очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все це знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! +Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують Вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в Linux. Деякі з них - прості та очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md). -Багато з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), почавши там, схоже, що варто розмістити і на Github, де знаходяться дуже талановиті люди і можуть допомогти. Якщо Ви замітили помилки (у всіх варіантах перекладу), будь ласка залиште опис [issue](https://github.com/jlevy/the-art-of-command-line/issues) або зробіть Pull requests (Звичайно перевіривши уже існуючі) +Багато з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), почавши там, схоже, що варто розмістити і на Github, де знаходяться дуже талановиті люди і можуть допомогти. Якщо Ви замітили помилки (чи у будь-якому із перекладів), будь ласка залиште опис [issue](https://github.com/jlevy/the-art-of-command-line/issues) або зробіть Pull requests (звичайно перевіривши уже існуючі). ## Опис Основне: -- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). -- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). -- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Bash-скриптів. +- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#os-x-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). +- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. Нотатки: @@ -43,29 +44,29 @@ ##Основи -- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку `man bash` в терміналі і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на Вашому лептопі і ні в чому Вас не обмежують, наприклад Ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). -- Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швиденько щось підправити (навіть якщо Ви постійно сидите у Emacs чи, якомусь важкому IDE або на модному хіпстерському редакторі. +- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на Вашому лептопі і ні в чому Вас не обмежують, наприклад Ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). +- Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо Ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор). - Знайте, як читати документацію через `man` (`man man`; `man` у кутах документа в дужках додає номер, наприклад 1 - для звичайних команд, 5 - для файлів, 8 - для адміністративних команд). Шукайте інформацію через `apropos`, і пам'ятайте, що деякі команди - не виконувані(executables), а вбудовані команди Bash, і допомогу по них можна отримати через команду `help` і `help -d`. - Можна перенаправляти введення та виведення через `>` і `<` і пайпи `|`. Пам'ятайте, що `>` - переписує вихідний файл, а `>>` додає до нього. Дізнайтеся побільше про stdout і stderr. - Дізнайтеся побільше про `*` (а також `?` і `[`...`]`), кавички, а також різницю між подвійними `"` і одинарними `'` кавичками. - Знайте як працювати із процесами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, і т.д. - Знайте `ssh` та основи беспарольної аутентифікації через `ssh-agent`, `ssh-add`, і т.д. - Основи роботи з файлами: `ls` і `ls -l` (зокрема, дізнайтеся, що значить кожен стовпець в `ls -l`), `less`, `head`,` tail` і `tail -f` (або навіть краще - `less + F`), `ln` і `ln -s` (дізнайтеся різницю між символьними посиланнями і жорсткими посиланнями, і чому жорсткі посилання краще), `chown`, `chmod`, `du` (для отримання швидкої інформації по використанню диска: `du -hk *`). Для менеджменту файлової системи, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. -- Основи роботи з мережею: `ip` або` ifconfig`, `dig`. +- Основи роботи з мережею: `ip` або `ifconfig`, `dig`. - Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. -- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через` pip`). +- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). ##Щоденне-використання -- Використовуйте клавішу таб в Bash для автодоповнення аргументів до командам та **ctrl-r** для пошуку по історії командного рядка. -- Використовуйте **ctrl-w** в Bash для того, щоб видалити останнє слово в команді; **ctrl-u** для того, щоб видалити команду повністю. Використовуйте **alt-b** і **alt-f** для того, щоб переміщатись між словами у команді, **ctrl-k** для того, щоб перейти в кінця рядка, **ctrl-l** для того, щоб очистити екран. Гляньте на `man readline` щоб дізнатися про всі шорткати Bash. Їх багато! Наприклад, **alt-.** переміщається між попередніми аргументам команди, а **alt-*** максимально розширює аргументи. +- Використовуйте клавішу таб в Bash для автодоповнення аргументів до команд та **ctrl-r** для пошуку по історії командного рядка. +- Використовуйте **ctrl-w** в Bash для того, щоб видалити останнє слово в команді; **ctrl-u** для того, щоб видалити команду повністю. Використовуйте **alt-b** і **alt-f** для того, щоб переміщатись між словами у команді, **ctrl-k** для того, щоб перейти в кінець рядка, **ctrl-l** для того, щоб очистити екран. Гляньте на `man readline` щоб дізнатися про всі шорткати Bash. Їх багато! Наприклад, **alt-.** переміщається між попередніми аргументам команди, а **alt-*** максимально розширює аргументи. - Якщо Вам подобаються шорткати vim, виконайте `set -o vi` (`set -o emacs` що б повернути налаштування). - Для редагування довгих команд після налаштування вашого консольного редактора (наприклад `export EDITOR=vim`), **ctrl-x** **ctrl-e** відкриє поточну команду в редакторі для багаторядкового редагування команди. Або у vi стилі, **escape-v**. - Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються шорткати **ctrl-r** та **alt-.**. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` - Якщо Ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. -- Використовуйти `xargs` (або` parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: +- Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -73,13 +74,13 @@ - `pstree -p` - допоможе побачити дерево процесів. - Використовуйте `pgrep` і `pkill` для того, щоб знаходити або слати сигнали до процесів по імені (`-f` корисна опція). - Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`. -- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійн виконувався у фоні. +- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійно виконувався у фоні. - Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP). - Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. - Команда `uptime` or `w` показує як довго працює система. - Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. - У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. -Корисний звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилоках і вивести повідомлення: +Корисною буде звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилках і вивести повідомлення: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -96,8 +97,8 @@ ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- Знайте про *heredoc* -сінтаксис в Bash: `cat << EOF ...`. -- У Bash перенаправляйте стандартні потоки виводу(output) та помилок, ось так: `some-command >logfile 2>&1`. Найчастіше, для того, щоб переконається, що команда не залишить відкритим файл, прив'язавши його до відкритого терміналу, вважається хорошою практикою додавати `logfile 2>&1`. Найчастіше, для того, щоб переконатись, що команда не залишить відкритим файл, прив'язавши його до відкритого терміналу, вважається хорошою практикою додавати ` c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`,` / proc`, `/ etc`. +- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`, `/proc`, `/etc`. - Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні): ```sh awk '{ x += $3 } END { print x }' myfile ``` -- Якщо вам потрібно подивитися розміри/дати файлів в дереві, це як рекурсивний `ls -l` але легше прочитати це `ls -lR`: +- Щоб побачити розмір/дату файлів в дереві, це як рекурсивний `ls -l` але легше `ls -lR`: ```sh find . -type f -ls ``` -- Скажемо що у нас є якийсь текстовий файл, наприклад лог веб сервера і на якихось рядках з'являється значення, рядки з яким нам цікаві. Наприклад, `acct_id`. Давайте підрахуємо, скільки таких запитів в нашому логе: +- Скажемо що у нас є якийсь текстовий файл, наприклад лог веб сервера і на якихось рядках з'являється значення, рядки з яким нам цікаві. Наприклад, `acct_id`. Давайте підрахуємо, скільки таких запитів в нашім логу: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` -- Використовуйте `xargs` (або` parallel`). Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок, а так само паралельність. Якщо Ви не впевнені, що робите правильно, почніть з `xargs echo`. Ще `-I {}` - корисна штука. Приклади: +- Використовуйте `xargs` (або `parallel`). Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок, а так само паралельність. Якщо Ви не впевнені, що робите правильно, почніть з `xargs echo`. Ще `-I {}` - корисна штука. Приклади: ```sh find. -name '* .py' | xargs grep some_function cat hosts | xargs -I {} ssh root @ {} hostname @@ -242,12 +243,12 @@ - `env`: виводить змінні середовища (корисно в Bash-скриптах) - `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) - `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках -- `cut`, `paste` і` join`: маніпуляції з даними +- `cut`, `paste` і `join`: маніпуляції з даними - `fmt`: форматування параграфів у тексті - `pr`: відформатовує текст в сторінки/колонки - `fold`: (обернути) обмежити довжину рядків у файлі - `column`: форматувати текст в колонки або таблиці -- `expand` і` unexpand`: конвертація між табами і пробілами +- `expand` і `unexpand`: конвертація між табами і пробілами - `nl`: додає номери до рядків - `seq`: вивести послідовність чисел - `bc`: калькулятор @@ -257,16 +258,16 @@ - `nc`: дебаггінг мережі і передачі даних - `socat`: перемикач сокетів і перенаправлення tcp-портів (схоже на `netcat`) - [`slurm`](https://github.com/mattthias/slurm): візуалізація трафіку мережі -- `dd`: перенесення інформації між файлами фбо пристроями +- `dd`: перенесення інформації між файлами або пристроями - `file`: визначає тип файлу - `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно - `stat`: інформація про файл - `time`: execute and time a commands -- `timeout`: зупиняє коменду після того як завершиться вказаний чав в аргументі +- `timeout`: зупиняє команду після того як завершиться вказаний час в аргументі - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` - `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін -- `tac`: вивести файли посимвольно навпаки ("тівирп") +- `tac`: вивести файли посимвольно навпаки - `shuf`: випадкова вибірка рядків з файлу - `comm`: порядково порівняти відсортовані файли - `pv`: моніторинг прогресу проходження інформації через пайп @@ -289,7 +290,7 @@ - `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі - `ngrep`: grep для шару мережі (network layer) - `host` і `dig`: пошук DNS -- `lsof`: процесинг дескрипторів і інформація по сокетах +- `lsof`: процесинг дескрипторів та інформація по сокетах - `dstat`: корисна статистика ОС - [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам - `iostat`: статистика використання жорсткого диска @@ -300,7 +301,7 @@ - `w`: хто є залогіненим - `id`: інформація про користувача/групу - `sar`: historic system stats -- `iftop` або` nethogs`: використання мережі конкретним сокетом або процесом +- `iftop` або `nethogs`: використання мережі конкретним сокетом або процесом - `ss`: статистика сокетів - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене @@ -312,7 +313,7 @@ - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -##Macos-only +##os-x-only Деякі речі, які підходять *тільки* для Мака. diff --git a/README-zh.md b/README-zh.md index 2e33acb..0249d9f 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # 命令行的艺术 @@ -14,7 +13,7 @@ - [系统调试](#系统调试) - [单行脚本](#单行脚本) - [冷门但有用](#冷门但有用) -- [仅限 MacOS X 系统](#仅限-macos-x-系统) +- [仅限 OS X 系统](#仅限-os-x-系统) - [更多资源](#更多资源) - [免责声明](#免责声明) - [授权条款](#授权条款) @@ -35,7 +34,7 @@ 涵盖范围: - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 -- 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 +- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -53,7 +52,7 @@ - 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。 -- 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件未添加。了解标准输出 stdout 和标准错误 stderr。 +- 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件末添加。了解标准输出 stdout 和标准错误 stderr。 - 学会使用通配符 `*` (或许再算上 `?` 和 `[`...`]`) 和引用以及引用中 `'` 和 `"` 的区别。 @@ -478,7 +477,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” -## 仅限 MacOS X 系统 +## 仅限 OS X 系统 以下是*仅限于* MacOS 系统的技巧 diff --git a/README.md b/README.md index 159682a..4a920b7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line @@ -14,7 +13,7 @@ - [System debugging](#system-debugging) - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) -- [MacOS X only](#macos-x-only) +- [OS X only](#os-x-only) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -24,19 +23,19 @@ 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 +Some 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 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.) - +but it has since moved to GitHub, where people more talented than the original author have made numerous improvements. +[**Please contribute**](/CONTRIBUTING.md) if you see an error or something that could be better! ## Meta Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[MacOS X only](#macos-x-only)" section. Many of the other items apply or can be installed on other Unices or MacOS (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" section. Many of the other items apply or can be installed on other Unices or MacOS (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -310,7 +309,7 @@ A few examples of piecing together commands: awk '{ x += $3 } END { print x }' myfile ``` -- If want to see sizes/dates on a tree of files, this is like a recursive `ls -l` but is easier to read than `ls -lR`: +- To see sizes/dates on a tree of files, this is like a recursive `ls -l` but is easier to read than `ls -lR`: ```sh find . -type f -ls ``` @@ -487,7 +486,7 @@ A few examples of piecing together commands: - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -## MacOS X only +## OS X only These are items relevant *only* on MacOS. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 80d02f9..0ca75fe 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -8,10 +8,14 @@ footer: | Numbers link to commits/issues. For simplicity, this file is maintained only in English. + If your name does not appear as you would like it above, verify your name on your GitHub profile. + Also confirm that your commits are using the correct e-mail to it is linked to your profile. + 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 + ReadmeCritic roles: jlevy: original author and maintainer @@ -38,3 +42,4 @@ roles: Armour: translator (zh) stepan0904: translator and maintainer (uk) francescomalatesta: translator and maintainer (it) + lsrom: translator and maintainer (cs) From 615aa90917707a815e131a93f10d49102c29a3d2 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:05:28 +0100 Subject: [PATCH 39/60] fr: Translate the introduction --- README-fr.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 README-fr.md diff --git a/README-fr.md b/README-fr.md new file mode 100644 index 0000000..6248955 --- /dev/null +++ b/README-fr.md @@ -0,0 +1,32 @@ +[ Langues: +[English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +] + +# L'art de la ligne de commande + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Meta](#meta) +- [Notions de base](#notions-de-base) +- [Utilisation quotidienne](#utilisation-quotidienne) +- [Traitement des fichiers et des données](#traitement-des-fichiers-et-des-données) +- [Débogage du système](#débogage-du-système) +- [Unilignes](#unilignes) +- [Obscures mais utiles](#obscures-mais-utiles) +- [Uniquement OS X](#uniquement-os-x) +- [Ressources supplémentaires](#ressources-supplémentaires) +- [Avertissement](#avertissement) + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. +Ceci est une sélection de notes et d'astuces sur l'utilisation de la ligne de commande que nous avons trouvées utiles en travaillant avec Linux. +Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou obscures. +Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui se trouve dans ce document, alors vous saurez beaucoup de choses. + +Ce document est le fruit du travail de [nombreux auteurs et de traducteurs](AUTHORS.md). +Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. +Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) + + + From 997ba3847ac4c4747a83b2c91b83e59921b7d556 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:15:54 +0100 Subject: [PATCH 40/60] fr: Translate the "Disclaimer" and "License" sections --- README-fr.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README-fr.md b/README-fr.md index 6248955..9cb3ba1 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,4 +29,14 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Avertissement +Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. +Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie nécessairement que vous devriez le faire ! ;) + + +## Licence + +[![Licence Creative Commons](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Ce document est mis à disposition selon les termes de la [Licence Creative Commons Attribution - Partage dans les mêmes conditions 4.0 International](http://creativecommons.org/licenses/by-sa/4.0/). From d29bbb911f5d66e91cfec0c94d1e1f11145e6cb7 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:27:12 +0100 Subject: [PATCH 41/60] fr: Translate the section "More resources" --- README-fr.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-fr.md b/README-fr.md index 9cb3ba1..a8afb7f 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,15 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Autres ressources + +- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): un guide plus approfondi sur la ligne de commande pour Mac OS. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) : pour écrire de meilleurs scripts shell. +- [shellcheck](https://github.com/koalaman/shellcheck) : un outil d'analyse statique des scripts shell. L'équivalent de lint pour bash, sh et zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html) : les points de détail, malheureusement compliqués, sur la manière de manipuler correctement les noms de fichiers dans les scripts shell. + + ## Avertissement Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. From 8e5172f10eda9d8ce93895628b3941e66c55ba69 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 16:01:03 +0100 Subject: [PATCH 42/60] fr: Translate the section "OS X only" --- README-fr.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README-fr.md b/README-fr.md index a8afb7f..052e5be 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,29 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Uniquement OS X + +Ce qui suit ne s'applique *qu'*à Mac OS. + +- Gestion des paquets avec `brew` (Homebrew) ou `port` (MacPorts). +Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessous. + +- Copier la sortie de n'importe quelle commande dans une application de bureau avec `pbcopy` et coller l'entrée d'une commande avec `pbpaste`. + +- Pour permettre à la touche Option de fonctionner comme la touche Alt dans le terminal de Mac OS (comme dans les commandes **alt-b**, **alt-f**, etc), allez dans Préférences -> Profils -> Clavier et sélectionner « Choisir la touche Option comme touche virtuelle ». + +- Pour ouvrir un fichier avec une application de bureau, utilisez `open` ou `open -a /Applications/Whatever.app`. + +- Spotlight : recherche de fichiers avec `mdfind` et affichage des métadonnées (telles que les informations EXIF d'une photo) avec `mdls`. + +- Ayez à l'esprit que Mac OS dérive du système Unix BSD et que beaucoup de commandes (par exemples `ps`, `ls`, `tail`, `awk`, `sed`) présentent de légères différences avec leurs versions pour Linux, qui lui est largement influencé par System V et les outils GNU. +Vous pouvez souvent faire la distinction grâce à l'en-tête « BSD General Commands Manual » dans les pages de manuel. +Dans certains cas, les versions GNU peuvent également être installées (telles que `gawk` et `gsed` pour GNU awk et GNU sed). +Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles commandes (par exemple, envisagez d'utiliser Python ou Perl) ou alors testez-les soigneusement. + +- Pour obtenir des informations sur la version de Mac OS, servez-vous de `sw_vers`. + + ## Autres ressources - [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. From 7425dcb12ea88e281084ec4dfde41da090442da3 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 23 Dec 2015 08:13:09 +0100 Subject: [PATCH 43/60] fr: Translate the section "Obscure but useful" --- README-fr.md | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/README-fr.md b/README-fr.md index 052e5be..597e291 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,159 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Obscures mais utiles + +- `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. + +- `m4` : simple macro processeur. + +- `yes` : affiche une chaîne de caractères indéfiniment. + +- `cal` : un calendrier sympathique. + +- `env` : exécute une commande (utile dans les scripts). + +- `printenv` : imprime les variables d'environnement (utile pour le débogage et dans les scripts). + +- `look` : trouve les mots anglais (ou les lignes d'un fichier) commençant par une chaîne donnée. + +- `cut`, `paste` and `join` : manipulation des données. + +- `fmt` : formate du texte. + +- `pr` : formate un texte en page ou en colonne. + +- `fold` : coupe des lignes de texte. + +- `column` : formate un texte en colonnes alignées, de largeurs fixes ou en tables. + +- `expand` et `unexpand` : convertit les tabulations en espaces et vice-versa. + +- `nl` : numérote les lignes d'un fichier. + +- `seq` : affiche une suite de nombres. + +- `bc` : une calculatrice. + +- `factor` : factorise des nombres entiers. + +- [`gpg`](https://gnupg.org/) : chiffre et signe les fichiers. + +- `toe` : table des entrées terminfo. + +- `nc` : debogage réseau et transfert de données. + +- `socat` : relai et réacheminement de port TCP (semblable à `netcat`). + +- [`slurm`](https://github.com/mattthias/slurm) : visualisation du trafic réseau. + +- `dd` : déplacer les données entre les fichiers ou les périphériques. + +- `file` : détermine le type d'un fichier + +- `tree` : affiche les répertoires et sous-répertoires sous la forme d'un arbre (comme `ls` mais récursivement). + +- `stat` : affiche des informations sur un fichier. + +- `time`: exécute et chronomètre une commande. + +- `timeout`: exécute une commande avec une limite de temps et stoppe le processus après la durée indiquée. + +- `lockfile` : crée un fichier sémaphore qui ne peut être supprimé que par `rm -f` + +- `logrotate` : permet la rotation, la compression et l'envoi des fichiers journaux par courrier électronique. + +- `watch` : exécute une commande périodiquement, affiche le résultat et surligne les différences entre les résultats. + +- `tac` : affiche des fichiers à l'envers. + +- `shuf` : affiche une permutation aléatoire des lignes d'un fichier. + +- `comm` : compare ligne à ligne deux fichiers triés. + +- `pv` : surveille la progression des données à travers un tube. + +- `hd`, `hexdump`, `xxd`, `biew` et `bvi` : dump et édition de fichiers binaires. + +- `strings` : extraire du texte de fichiers binaires. + +- `tr` : conversion et manipulation de caractères. + +- `iconv` ou `uconv` : conversion entre différents encodages de caractères. + +- `split` et `csplit` : découpage de fichiers. + +- `sponge` : lit l'entrée standart avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, p.ex., `grep -v something some-file | sponge some-file` + +- `units` : conversions d'unités et calculs. Convertit des furlongs par fortnight en twips par blink (voir aussi `/usr/share/units/deifinitions.units`). + +- `apg` : génère des mots de passe aléatoires. + +- `7z` : compresse des fichiers avec taux de compression élevé. + +- `ldd` : affiche des informations sur les bibliothèques partagées. + +- `nm` : affiche les symboles contenus dans un fichier objet. + +- `ab` : mesure les performances de serveurs web + +- `strace`: trace les appels système. + +- `mtr`: un traceroute amélioré pour débugguer un réseau. + +- `cssh` : visual concurrent shell + +- `rsync` : synchronise des fichiers et des dossiers via SSH ou localement. + +- `wireshark` et `tshark`: capture de paquets et dépannage réseau. + +- `ngrep` : grep pour les couches réseau. + +- `host` et `dig`: interroge les serveurs DNS. + +- `lsof` : process file descriptor and socket info. + +- `dstat` : statistiques sur les ressources système. + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat` : statistiques sur l'usage des disques. + +- `mpstat` : statistiques sur l'usage des CPUs. + +- `vmstat` : statistiques sur l'usage de la mémoire. + +- `htop` : version améliorée de top. + +- `last` : historique des connexions. + +- `w` : montre qui est connecté. + +- `id` : affiche les informations sur un utilisateur et ses groupes. + +- `sar` : statistiques sur l'activité du système + +- `iftop` ou `nethogs` : utilisation du réseau par un socket ou un processus. + +- `ss` : statistiques relatives aux sockets. + +- `dmesg` : messages lors du démarrage et erreurs système. + +- `sysctl` : visualise et configure les paramètres du noyau Linux à chaud. + +- `hdparm` : manipulation et performances d'un disque SATA ou ATA. + +- `lsb_release` : informations sur la distribution Linux. + +- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et partitions). + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. + +- `lsmod` et `modinfo` : liste des modules du noyau et informations les concernant. + +- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous considérez les locomotives à vapeur et les citations de Jean-Claude Van Damme « utiles ». + + ## Uniquement OS X Ce qui suit ne s'applique *qu'*à Mac OS. From e2756f66de917b6faeb4826789294b7f6c78d961 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 23 Dec 2015 17:38:23 +0100 Subject: [PATCH 44/60] fr: Translate the section "Meta" --- README-fr.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-fr.md b/README-fr.md index 597e291..b444e4b 100644 --- a/README-fr.md +++ b/README-fr.md @@ -29,6 +29,26 @@ Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-kn Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +## Méta + +Contexte : + +- Ce guide est destiné aux utilisateurs débutants et chevronnés. +Les objectifs sont l'*envergure* (tout est important), la *spécificité* (donner des exemples concrets des cas les plus courants) et la *concision* (éviter tout ce qui n'est pas essentiel et les digressions disponibles facilement ailleurs). +Chaque astuce est indispensable dans certaines situations ou fait gagner un temps considérable par rapport aux solutions alternatives. +- Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». +Beaucoup des autres items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). +- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts Bash. +- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation des paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. + +Remarques : + +- Afin que tout tienne sur une seule page, le contenu est implicitement inclus par référence. +Vous êtes suffisamment intelligents pour chercher les renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. +Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distribution ou OS) pour installer de nouveaux programmes. +- Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From 5ca176b3e1a6e6f4fde0f66debb111ff981327d3 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 26 Dec 2015 10:13:01 +0100 Subject: [PATCH 45/60] fr: Translate the section "System debugging" --- README-fr.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/README-fr.md b/README-fr.md index b444e4b..7fd8f4f 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,57 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Débogage du système + +- Pour du débogage web, `curl` et `curl -I` sont pratiques, de même que leurs +équivalents avec `wget` ou le plus moderne [`httpie`](https://github.com/jkbrzt/httpie). + +- Pour connaître l'état courant du CPU ou du disque, les outils conventionnels sont `top` (ou `htop` meilleur), `iostat` et `iotop`. +Utilisez `iostat -mxz 15` pour des statistiques de base concernant le CPU, des statistiques détaillées pour les disques et un aperçu des performances. + +- Pour des informations sur les connexions réseaux, utilisez `netstat` et `ss`. + +- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. +Pour un aperçu plus étendu et détaillé, utilisez [`glances`](https://github.com/nicolargo/glances). + +- Pour connaître l'état de la mémoire, exécutez `free` et `vmstat` et comprenez leurs sorties. +En particulier, ayez à l'esprit que la valeur du « cache » est la mémoire utilisée par le noyau Linux comme cache de fichiers, donc compte comme de la mémoire « libre ». + +- Le système de debogage de Java est une autre paire de manche, cependant un truc simple sur la JVM d'Oracle et quelques autres JVMs consiste à exécuter `kill -3 ` pour obtenir une trace complète des appels et une empreinte de la mémoire (y compris des détails sur le ramasse-miettes qui peuvent être hautement instructifs) dans stderr ou des fichiers journaux. +Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil SJK](https://github.com/aragozin/jvm-tools) est plus avancé. + +- Utilisez `mtr` comme un `traceroute` amélioré pour identifier les problèmes de réseau. + +- Pour déterminer les raisons pour lesquelles un disque est plein, `ncdu` permet de gagner du temps par rapport aux commandes habituelles telles que `du -sh *`. + +- Pour trouver quel socket ou processus utilise la bande passante essayez `iftop` ou `nethogs`. + +- L'outil `ab` (fourni avec Apache) est utile pour une vérification rapide et grossière des performances d'un serveur web. +Pour des tests de charge plus complexes servez-vous de `siege`. + +- Pour du debogage réseau plus sérieux : `wireshark`, `tshark` ou `ngrep`. + +- Connaîssez `strace` et `ltrace`. +Ces commandes peuvent être utiles si un programme fonctionne mal ou plante et que vous n'en connaissez pas la raison, ou si vous voulez vous faire une idée des performances. +Remarquez l'option de profilage (`-c`) et la possibilité de les rattacher à un processus en cours d'exécution (`-p`). + +- Connaîssez `ldd` pour afficher les bibliothèques partagées, etc. + +- Sachez comment vous connecter à un processus en cours avec `gdb` et récupérer la trace d'appels. + +- Utilisez `/proc`. C'est parfois incroyablement utile pour résoudre des problèmes en live. +Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd`, `/proc/xxx/smaps` (où `xxx` est l'identifiant du processus ou pid). + +- Pour comprendre pourquoi quelque chose a mal tourné antérieurement, `sar` peut-être très utile. +Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau, etc. + +- Pour une analyse plus approfondie du système et des performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). + +- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur l'Unix et le noyau) ou `lsb_release -a` (informations sur la distribution Linux). + +- Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From 1f5fa377530b5b66e1fc0e4479d4ec640a30426e Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sun, 27 Dec 2015 11:01:20 +0100 Subject: [PATCH 46/60] fr: Translate the section "Processing files and data" --- README-fr.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7fd8f4f..7bec3e2 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,107 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Traitement des fichiers et des données + +- Pour localiser un fichier par son nom dans le répertoire courant, `find . -iname '*something*'` (ou autres). +Pour trouver un fichier n'importe où par son nom, utilisez `locate something` (mais n'oubliez pas que `updatedb` peut ne pas avoir indexé les fichiers récemment créés). + +- Pour une recherche à travers les fichiers sources ou fichiers de données (plus poussée que `grep -r`), utilisez [`ag`](https://github.com/ggreer/the_silver_searcher). + +- Pour convertir du HTML en texte brut : `lynx -dump -stdin`. + +- Pour le Markdown, HTML et les conversions dans toutes sortes de formats, essayez [`pandoc`](http://pandoc.org). + +- Si vous devez manipuler du XML, le vieux `xmlstarlet` marche bien. + +- Pour le JSON, utilisez [`jq`](http://stedolan.github.io/jq/). + +- Pour le YAML, utilisez [`shyaml`](https://github.com/0k/shyaml). + +- Pour les fichiers Excel ou CSV, [csvkit](https://github.com/onyxfish/csvkit) fournit `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. + +- Pour Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) est pratique et [`s4cmd`](https://github.com/bloomreach/s4cmd) est plus rapide. +L'outil d'Amazon [`aws`](https://github.com/aws/aws-cli) et la version améliorée [`saws`](https://github.com/donnemartin/saws) sont indispensables pour les autres tâches liées à AWS. + +- Connaissez `sort` et `uniq`, y compris les options `-u` et `-d` de `uniq` (voir les unilignes plus bas). Voir aussi `comm`. + +- Connaissez `cut`, `paste` et `join` pour manipuler les fichiers textes. +Beaucoup de personnes utilisent `cut` mais oublient `join`. + +- Connaissez `wc` pour compter les lignes (`-l`), les caractères (`-m`), les mots (`-w`) et les octets (`-c`). + +- Connaissez `tee` pour copier depuis stdin vers un fichier ou vers stdout, comme dans `ls -al | tee file.txt`. + +- Sachez que la locale affecte de nombreux outils en ligne de commande de manière subtile, comme l'ordre pour les tris (collation) et les performances. +La plupart des installateurs Linux définissent la variable `LANG` ou d'autres variables locales d'environnement pour configurer une locale telle que US English. +Mais ayez à l'esprit que le tri sera modifié si vous changez la locale. +Et sachez que les routines i18n peuvent rendre les opérations de tri et d'autres commandes *beaucoup* plus lentes. +Dans certains cas (tels que les opérations concernant les ensembles et l'unicité abordées ci-dessous) vous pouvez, sans risque, complètement ignorer les lentes routines i18n et utiliser l'ordre classique basé sur les octets à l'aide de `export LC_ALL=C`. + +- Connaissez `awk` et `sed` pour de l'analyse de données élémentaire. +Par exemple, pour effectuer la somme de tous les nombres de la troisième colonne d'un fichier texte : `awk '{ x += $3 } END { print x}'`. +C'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python. + +- Pour remplacer toutes les occurences d'une chaîne de caractères dans un ou plusieurs fichiers : +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` + +- Pour renommer de multiple fichiers ou effectuer des recherches et remplacements dans des fichiers, essayez [`repren`](https://github.com/jlevy/repren) (dans certains cas la commande `rename` permet aussi de renommer de multiples fichiers, mais soyez prudent car ses fonctionnalités ne sont pas les mêmes sur toutes les distributions Linux). +```sh + # Renomme les répertoires, les fichiers et leurs contenus à l'aide + # de la substitution foo -> bar : + repren --full --preserve-case --from foo --to bar . + # Restaure des fichiers de sauvegarde à l'aide de la + # substitution whatever.bak -> whatever : + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Même chose que ci-dessus avec rename s'il est disponible : + rename 's/\.bak$//' *.bak +``` + +- Selon sa page de manuel, `rsync` est un outil de duplication de fichiers vraiment rapide et incroyablement polyvalent. +Il est connu pour faire de la synchronisation entre machines, mais est également utile pour un usage local. +Il est aussi parmi les outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : +```sh + mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- Utilisez `shuf` pour mélanger ou sélectionner aléatoirement des lignes d'un fichier. + +- Connaissez les options de `sort`. +Pour les nombres, utilisez `-n`, ou `-h` pour traiter des nombres dans un format lisible par un humain (p. ex. issus de `du -h`). +Sachez comment les clés fonctionnent (`-t` et `-k`). +En particulier, faites attention à bien écrire `-k1,1` pour trier selon le premier champ uniquement : `-k1` signifie que l'on trie selon la ligne entière. +Le tri stable (`sort -s`) peut s'avérer utile. +Par exemple, pour trier d'abord selon le champ 2, puis selon le champ 1, vous pouvez utiliser `sort -k1,1 | sort -s -k2,2`. + +- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez la copier-coller). + +- Les outils habituels pour *patcher* un code source sont `diff` et `patch`. +Voir aussi `diffstat` pour un relevé statistique d'un diff et `sdiff` pour un affichage côte à côte d'un diff. +Remarquez que `diff -r` marche avec des répertoires entiers. +Utilisez `diff -r tree1 tree2 | diffstat` pour obtenir un résumé des changements. +Utilisez `vimdiff` pour comparer et éditer des fichiers. + +- Pour les fichiers binaires, utilisez `hd`, `hexdump` ou `xxd` pour un affichage simple en hexadécimal et `bvi`, `biew` pour éditer des fichiers binaires. + +- Également pour les fichiers binaires, `strings` (ainsi que `grep`, etc) vous permet d'y trouver des bouts de texte. + +- Pour effectuer des différences entre des fichiers binaires (compression différentielle), utilisez `xdelta3`. + +- Pour changer l'encodage d'un texte, essayer `iconv`, ou `uconv` pour un usage plus sophistiqué : il permet quelques trucs avancés avec l'Unicode. +Par exemple, cette commande met en minuscules et retire tous les accents (en les développant et les écartant) : +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Pour découper des fichiers en morceaux, voyez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. + +- Pour manipuler des dates et des heures, utilisez `dateadd`, `datediff`, `strptime`, etc. fournis par [`dateutils`](http://www.fresse.org/dateutils/). + +- Utilisez `zless`, `zmore`, `zcat` et `zgrep` pour opérer sur des fichiers compressés. + + ## Débogage du système - Pour du débogage web, `curl` et `curl -I` sont pratiques, de même que leurs From 34a8cdf3ff5ec0d7b8cc6ab0ac6c1c9740099294 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Tue, 29 Dec 2015 16:37:08 +0100 Subject: [PATCH 47/60] fr: Translate the section "One-liners" --- README-fr.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7bec3e2..290fb57 100644 --- a/README-fr.md +++ b/README-fr.md @@ -201,6 +201,53 @@ Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau - Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). +## Unilignes + +Quelques exemples d'assemblages de commandes : + +- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence de fichiers texte à l'aide de `sort` et `uniq`. +Supposez que `a` et `b` soient des fichiers texte ne contenant pas de lignes répétées. +C'est rapide et fonctionne sur des fichiers de taille quelconque jusqu'à plusieurs gigaoctets (le tri n'est pas limité par la capacité mémoire bien que vous puissiez avoir besoin d'utiliser l'option `-T` si `/tmp` est sur une petite partition racine). +Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sort` (omise ci-dessous pour plus de clarté). +```sh + cat a b | sort | uniq > c # c est l'union de a et b + cat a b | sort | uniq -d > c # c est l'intersection de a et b + cat a b b | sort | uniq -u > c # c est la difference a - b +``` + +- Utilisez `grep . *` pour rapidement inspecter les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). +Cela peut être utile pour des répertoires remplis de fichiers de configuration comme ceux de `/sys`, `/proc`, `/etc`. + +- Pour ajouter les nombres de la troisième colonne d'un fichier texte (c'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python) : +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- Pour visualiser les tailles et les dates des fichiers d'une arborescence, une sorte de `ls -l` récursive, mais plus facile à lire que `ls -lR` : +```sh + find . -type f -ls +``` + +- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. +Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_id` : +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Pour surveiller en permanence tout changement, utilisez `watch`, par exemple vérifiez les modifications dans les fichiers d'un répertoire avec `watch -d -n 2 'ls -rtlh | tail'` ou surveillez les paramètres de votre réseau tout en dépannant la configuration de votre wifi avec `watch -d -n 2 ifconfig`. + +- Exécutez cette fonction pour afficher aléatoirement une astuce de ce texte (analyse le le code en Markdown et en extrait un élément d'une liste) : +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + + ## Obscures mais utiles - `expr` : effectue des operations arithmétiques et booléenne, et évalue des expressions régulières. From ae50019bd92609e19b3669db01e83777e9985d57 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 30 Dec 2015 20:42:59 +0100 Subject: [PATCH 48/60] fr: Translate the section "Basics" --- README-fr.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README-fr.md b/README-fr.md index 290fb57..c054c43 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,6 +49,42 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +## Notions de base + +- Apprenez les bases de Bash. +En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. +Les shells alternatives peuvent être intéressants, mais Bash est puissant et toujours disponible (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de serveurs existants). + +- Apprenez à bien utiliser au moins un éditeur en mode texte. +Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer un texte dans un terminal de manière inopinée (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). + +- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` énumère les numéros des sections, par exemple 1 pour les commandes utilisateur, 5 pour les formats de fichier et les conventions et 8 pour tout ce qui concerne l'administration système). +Trouvez les pages de manuel avec `apropos`. +Sachez que certaines commandes ne sont pas des exécutables, mais des commandes internes de Bash et que vous pouvez obtenir de l'aide à leur sujet avec `help` et `help -d`. + +- Apprenez les redirections des entrées et des sorties au moyen de `>` et `<` et les tuyaux à l'aide de `|`. +Sachez que `>` écrase le fichier de sortie et `>>` sert à ajouter. +Renseignez-vous sur stdout et stderr. + +- Apprenez à propos de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous pour en savoir plus sur l'expansion des variables). + +- Familiarisez-vous avec la gestion des processus de Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. + +- Apprenez `ssh` et les principes de l'authentification sans mot de passe à l'aide de `ssh-agent`, `ssh-add`, etc. + +- Les bases de la gestion des fichiers : `ls` et `ls -l` (en particulier, apprenez la signification de chacune des colonnes de `ls -l`), `less`, `head`, `tail` et `tail -f` (ou mieux, `less +F`), `ln` et `ln -s` (apprenez les différences et les avantages des liens durs par rapport aux liens symboliques), `chown`, `chmod`, `du` (pour un rapide résumé de l'espace disque occupé : `du -hs *`). +Pour la gestion du système de fichiers : `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +Apprenez ce qu'est un inode (`ls -i` ou `df -i`). + +- Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. + +- Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. +Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. + +- Apprenez à utiliser `apt-get`, `yum`, `dnf` ou `pacman` (selon la distribution) pour trouver et installer des paquets. +Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). + + ## Traitement des fichiers et des données - Pour localiser un fichier par son nom dans le répertoire courant, `find . -iname '*something*'` (ou autres). From 4ff08bf0a1e447167557a00a35de29911e682df1 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 2 Jan 2016 12:03:02 +0100 Subject: [PATCH 49/60] fr: Translate the section "Everyday use" --- README-fr.md | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/README-fr.md b/README-fr.md index c054c43..2da0a4c 100644 --- a/README-fr.md +++ b/README-fr.md @@ -85,6 +85,134 @@ Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). +## Utilisation quotidienne + +- En Bash, utilisez **Tab** pour compléter les arguments ou lister toutes les commandes disponibles, et **ctrl-r** pour rechercher dans l'historique des commandes (tapez pour rechercher, appuyez sur **ctrl-r** plusieurs fois pour parcourir les différentes correspondances, appuyez sur **Enter** pour exécuter la commande trouvée ou sur la flèche droite pour l'éditer). + +- En Bash, utilisez **ctrl-w** pour effacer le dernier mot et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. +Utilisez **alt-b** et **alt-f** pour se déplacer mot par mot, **ctrl-a** pour déplacer le curseur au début de la ligne, **ctrl-e** pour déplacer le curseur à la fin de la ligne, **ctrl-k** pour effacer depuis le curseur jusqu'à la fin de la ligne, **ctrl-l** pour effacer l'écran. +Voir `man readline` pour la liste des raccourcis clavier par défault de Bash. +Il y en a beaucoup. +Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** développe un glob. + +- Autrement, si vous adorez les raccourcis clavier de vi, utilisez `set -o vi` (et `set -o emacs` pour revenir à l'état initial). + +- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le mode vi) ouvre un éditeur pour éditer la commande courante. + +- Pour voir les commandes récentes, `history`. +Il y a aussi beaucoup abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. + +- Pour revenir au répertoire précédent : `cd -`. + +- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et la saisir comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). +Vous pouvez alors y revenir plus tard à l'aide de la commande history. + +- Utilisez `xargs` (ou `parallel`). +C'est très puissant. +Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que le parallélisme (`-P`). +Si vous n'êtes pas sûr s'il fera les choses correctement, utilisez d'abord `xargs echo`. +`-I{}` est également pratique. +Exemples : +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` fournit un affichage utile des processus sous la forme d'un arbre. + +- `pgrep` et `pkill` pour rechercher ou envoyer un signal à des processus en fonction de leur nom (`-f` est utile). + +- Apprenez les différents signaux que vous pouvez envoyer aux processus. +Par exemple, pour arrêter un processus, utiliser `kill -STOP [pid]`. +Pour la liste complète, consultez `man 7 signal`. + +- Utilisez `nohup` ou `disown` pour qu'un processus en arrière-plan reste actif indéfiniment. + +- Vérifiez quels sont les processus qui écoutent à l'aide de `netstat -lntp` ou `ss -plat` (pour TCP; ajoutez `-u` pour UDP). + +- Regardez `lsof` pour la liste des fichiers et *sockets* ouverts. + +- Voyez `uptime` ou `w` pour savoir depuis combien de temps le système fonctionne. + +- Utilisez `alias` pour créer des raccourcis pour les commandes fréquemment utilisées. +Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. + +- Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. +Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). +Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. +Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (renseignez-vous sur le sujet car ce sujet est un peu délicat). +Pour des scripts plus compliqués, servez-vous également de `trap` pour intercepter EXIT ou ERR. +Une bonne habitude est de commencer un script comme cela, ce qui lui permettra de détecter les erreurs courantes, de s'interrompre et d'afficher un message : +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Dans les scripts Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. +Un exemple typique consiste à se déplacer temporairement dans un autre répertoire de travail, p. ex. +```bash + # faire quelque chose dans le répertoire courant + (cd /some/other/dir && other-command) + # continue dans le répertoire original +``` + +- Remarquez qu'en Bash il y a de nombreux types d'expansion des variables. +Vérifier l'existence d'une variable : `${name:?error message}`. +Par exemple, si un script Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. +L'expansion arithmétique  `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. + +- La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. +Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- Renseignez-vous à propos des « here documents » en Bash, comme dans `cat < logfile 2>&1` ou `some-command &>logfile`. +Souvent, pour s'assurer qu'une commande de laisse pas un descripteur de fichier ouvert sur l'entrée standard, le l'attachant au terminal dans lequel vous vous trouvez, c'est une bonne pratique d'ajouter ` Date: Fri, 15 Jan 2016 09:39:01 +0100 Subject: [PATCH 50/60] fr: Make lots of minor corrections --- README-fr.md | 176 +++++++++++++++++++++++++-------------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/README-fr.md b/README-fr.md index 2da0a4c..1f65f04 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,4 +1,4 @@ -[ Langues: +[ Langues : [English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] @@ -6,7 +6,7 @@ [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -- [Meta](#meta) +- [Méta](#méta) - [Notions de base](#notions-de-base) - [Utilisation quotidienne](#utilisation-quotidienne) - [Traitement des fichiers et des données](#traitement-des-fichiers-et-des-données) @@ -14,7 +14,7 @@ - [Unilignes](#unilignes) - [Obscures mais utiles](#obscures-mais-utiles) - [Uniquement OS X](#uniquement-os-x) -- [Ressources supplémentaires](#ressources-supplémentaires) +- [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) @@ -22,53 +22,53 @@ La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. Ceci est une sélection de notes et d'astuces sur l'utilisation de la ligne de commande que nous avons trouvées utiles en travaillant avec Linux. Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou obscures. -Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui se trouve dans ce document, alors vous saurez beaucoup de choses. +Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui s'y trouve, alors vous saurez beaucoup de choses. -Ce document est le fruit du travail de [nombreux auteurs et de traducteurs](AUTHORS.md). +Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. -Si vous voyez une erreur ou quelque chose à améliorer, veuillez remplir un ticket ou soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#meta) ainsi que les *pull requests* et tickets actifs.) +Si vous trouvez une erreur ou quelque chose qui pourrait être meilleur, nous vous invitons à remplir un ticket ou à soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#méta) ainsi que les *pull requests* et tickets en cours.) ## Méta Contexte : -- Ce guide est destiné aux utilisateurs débutants et chevronnés. +- Ce guide est destiné aux débutants et aux utilisateurs chevronnés. Les objectifs sont l'*envergure* (tout est important), la *spécificité* (donner des exemples concrets des cas les plus courants) et la *concision* (éviter tout ce qui n'est pas essentiel et les digressions disponibles facilement ailleurs). -Chaque astuce est indispensable dans certaines situations ou fait gagner un temps considérable par rapport aux solutions alternatives. +Chaque astuce est indispensable dans certaines situations ou fait gagner beaucoup de temps par rapport aux solutions alternatives. - Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». -Beaucoup des autres items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). -- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts Bash. -- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation des paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. +Beaucoup d'items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). +- L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts en Bash. +- Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation de paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. Remarques : -- Afin que tout tienne sur une seule page, le contenu est implicitement inclus par référence. -Vous êtes suffisamment intelligents pour chercher les renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. +- Afin que le guide tienne sur une seule page, du contenu est implicitement inclus par référence. +Vous êtes suffisamment intelligents pour rechercher des renseignements ailleurs une fois que vous avez l'idée ou la commande à googler. Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distribution ou OS) pour installer de nouveaux programmes. -- Utilisez [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. +- Allez sur [Explainshell](http://explainshell.com) pour obtenir de l'aide à propos des commandes, options, tubes, etc. ## Notions de base - Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. -Les shells alternatives peuvent être intéressants, mais Bash est puissant et toujours disponible (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de serveurs existants). +Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). - Apprenez à bien utiliser au moins un éditeur en mode texte. -Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer un texte dans un terminal de manière inopinée (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). +Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer inopinément un texte dans un terminal (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). -- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` énumère les numéros des sections, par exemple 1 pour les commandes utilisateur, 5 pour les formats de fichier et les conventions et 8 pour tout ce qui concerne l'administration système). +- Sachez comment lire une documentation avec `man` (pour les curieux, `man man` liste les sections avec leur numéro, par exemple 1 pour les commandes « normales » , 5 pour les formats des fichiers et les conventions, et 8 pour tout ce qui concerne l'administration système). Trouvez les pages de manuel avec `apropos`. Sachez que certaines commandes ne sont pas des exécutables, mais des commandes internes de Bash et que vous pouvez obtenir de l'aide à leur sujet avec `help` et `help -d`. -- Apprenez les redirections des entrées et des sorties au moyen de `>` et `<` et les tuyaux à l'aide de `|`. +- Apprenez à rediriger les entrées et sorties au moyen de `>` et `<`, et à créer des tubes avec `|`. Sachez que `>` écrase le fichier de sortie et `>>` sert à ajouter. Renseignez-vous sur stdout et stderr. -- Apprenez à propos de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous pour en savoir plus sur l'expansion des variables). +- Apprenez au sujet de l'expansion des noms de fichiers avec `*` (et peut-être `?` et `[`...`]`), des mécanismes de citation, et de la différence entre les guillemets `"` et les apostrophes `'` (voir ci-dessous). -- Familiarisez-vous avec la gestion des processus de Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. +- Familiarisez-vous avec la gestion des processus avec Bash : `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. - Apprenez `ssh` et les principes de l'authentification sans mot de passe à l'aide de `ssh-agent`, `ssh-add`, etc. @@ -79,39 +79,39 @@ Apprenez ce qu'est un inode (`ls -i` ou `df -i`). - Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. - Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. -Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` méritent d'être connues. +Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` sont bonnes à connaître. - Apprenez à utiliser `apt-get`, `yum`, `dnf` ou `pacman` (selon la distribution) pour trouver et installer des paquets. -Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous s'installent plus facilement à l'aide de `pip`). +Assurez-vous d'avoir `pip` pour installer des outils en ligne de commande écrits en Python (quelques-uns ci-dessous sont plus faciles à installer avec `pip`). ## Utilisation quotidienne - En Bash, utilisez **Tab** pour compléter les arguments ou lister toutes les commandes disponibles, et **ctrl-r** pour rechercher dans l'historique des commandes (tapez pour rechercher, appuyez sur **ctrl-r** plusieurs fois pour parcourir les différentes correspondances, appuyez sur **Enter** pour exécuter la commande trouvée ou sur la flèche droite pour l'éditer). -- En Bash, utilisez **ctrl-w** pour effacer le dernier mot et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. +- En Bash, utilisez **ctrl-w** pour effacer le mot précédent et **ctrl-u** pour effacer le contenu de la ligne jusqu'au curseur. Utilisez **alt-b** et **alt-f** pour se déplacer mot par mot, **ctrl-a** pour déplacer le curseur au début de la ligne, **ctrl-e** pour déplacer le curseur à la fin de la ligne, **ctrl-k** pour effacer depuis le curseur jusqu'à la fin de la ligne, **ctrl-l** pour effacer l'écran. Voir `man readline` pour la liste des raccourcis clavier par défault de Bash. Il y en a beaucoup. Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** développe un glob. -- Autrement, si vous adorez les raccourcis clavier de vi, utilisez `set -o vi` (et `set -o emacs` pour revenir à l'état initial). +- Sinon, si vous adorez les combinaisons de touches dans le style vi, utilisez `set -o vi` (`set -o emacs` pour revenir en arrière). -- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le mode vi) ouvre un éditeur pour éditer la commande courante. +- Pour éditer de longues commandes, après avoir configuré votre éditeur (par exemple `export EDITOR=vim`), **ctrl-x** **ctrl-e** (**escape-v** dans le style vi) ouvre l'éditeur pour éditer la commande courante. - Pour voir les commandes récentes, `history`. -Il y a aussi beaucoup abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. +Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. -- Pour revenir au répertoire précédent : `cd -`. +- Pour revenir au répertoire de travail précédent : `cd -`. -- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et la saisir comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). +- Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). Vous pouvez alors y revenir plus tard à l'aide de la commande history. - Utilisez `xargs` (ou `parallel`). C'est très puissant. -Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que le parallélisme (`-P`). -Si vous n'êtes pas sûr s'il fera les choses correctement, utilisez d'abord `xargs echo`. -`-I{}` est également pratique. +Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). +Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. +L'option `-I{}` est également pratique. Exemples : ```bash find . -name '*.py' | xargs grep some_function @@ -122,25 +122,25 @@ Exemples : - `pgrep` et `pkill` pour rechercher ou envoyer un signal à des processus en fonction de leur nom (`-f` est utile). -- Apprenez les différents signaux que vous pouvez envoyer aux processus. -Par exemple, pour arrêter un processus, utiliser `kill -STOP [pid]`. +- Connaissez les différents signaux que vous pouvez envoyer aux processus. +Par exemple, pour suspendre l'exécution d'un processus, utilisez `kill -STOP [pid]`. Pour la liste complète, consultez `man 7 signal`. - Utilisez `nohup` ou `disown` pour qu'un processus en arrière-plan reste actif indéfiniment. - Vérifiez quels sont les processus qui écoutent à l'aide de `netstat -lntp` ou `ss -plat` (pour TCP; ajoutez `-u` pour UDP). -- Regardez `lsof` pour la liste des fichiers et *sockets* ouverts. +- Voyez également `lsof` pour la liste des *sockets* et fichiers ouverts. - Voyez `uptime` ou `w` pour savoir depuis combien de temps le système fonctionne. -- Utilisez `alias` pour créer des raccourcis pour les commandes fréquemment utilisées. +- Utilisez `alias` pour créer des raccourcis vers les commandes fréquemment utilisées. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. - Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. -Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (renseignez-vous sur le sujet car ce sujet est un peu délicat). +Envisagez aussi `set -o pipefail` pour détecter les erreurs dans les tubes (cependant lisez-en plus si vous l'utilisez car ce sujet est un peu délicat). Pour des scripts plus compliqués, servez-vous également de `trap` pour intercepter EXIT ou ERR. Une bonne habitude est de commencer un script comme cela, ce qui lui permettra de détecter les erreurs courantes, de s'interrompre et d'afficher un message : ```bash @@ -148,8 +148,8 @@ Une bonne habitude est de commencer un script comme cela, ce qui lui permettra d trap "echo 'error: Script failed: see failed command above'" ERR ``` -- Dans les scripts Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. -Un exemple typique consiste à se déplacer temporairement dans un autre répertoire de travail, p. ex. +- Dans les scripts en Bash, les sous-shells (placés entre parenthèses) sont commodes pour grouper des commandes. +Un exemple classique consiste à se déplacer temporairement dans un autre répertoire de travail : ```bash # faire quelque chose dans le répertoire courant (cd /some/other/dir && other-command) @@ -158,8 +158,8 @@ Un exemple typique consiste à se déplacer temporairement dans un autre répert - Remarquez qu'en Bash il y a de nombreux types d'expansion des variables. Vérifier l'existence d'une variable : `${name:?error message}`. -Par exemple, si un script Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. -L'expansion arithmétique  `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. +Par exemple, si un script en Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. +L'expansion arithmétique : `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. - La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : @@ -167,19 +167,19 @@ Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- Renseignez-vous à propos des « here documents » en Bash, comme dans `cat < logfile 2>&1` ou `some-command &>logfile`. -Souvent, pour s'assurer qu'une commande de laisse pas un descripteur de fichier ouvert sur l'entrée standard, le l'attachant au terminal dans lequel vous vous trouvez, c'est une bonne pratique d'ajouter ` bar : @@ -273,21 +273,21 @@ C'est probablement trois fois plus rapide et trois fois plus petit que son équi - Selon sa page de manuel, `rsync` est un outil de duplication de fichiers vraiment rapide et incroyablement polyvalent. Il est connu pour faire de la synchronisation entre machines, mais est également utile pour un usage local. -Il est aussi parmi les outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : +Il est aussi l'un des outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - Utilisez `shuf` pour mélanger ou sélectionner aléatoirement des lignes d'un fichier. -- Connaissez les options de `sort`. -Pour les nombres, utilisez `-n`, ou `-h` pour traiter des nombres dans un format lisible par un humain (p. ex. issus de `du -h`). -Sachez comment les clés fonctionnent (`-t` et `-k`). -En particulier, faites attention à bien écrire `-k1,1` pour trier selon le premier champ uniquement : `-k1` signifie que l'on trie selon la ligne entière. +- Sachez les options de `sort`. +Pour les nombres, utilisez `-n`, ou `-h` s'ils sont dans un format lisible par un humain (p. ex. issus de `du -h`). +Comprenez le fonctionnement des clés (`-t` et `-k`). +En particulier, faites attention à bien écrire `-k1,1` pour trier seulement selon le premier champ : `-k1` signifie que l'on trie selon la ligne entière. Le tri stable (`sort -s`) peut s'avérer utile. Par exemple, pour trier d'abord selon le champ 2, puis selon le champ 1, vous pouvez utiliser `sort -k1,1 | sort -s -k2,2`. -- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez la copier-coller). +- Si jamais vous avez besoin d'écrire un caractère de tabulation dans une ligne de commande en Bash (p. ex pour le paramètre de l'option de tri `-t`), entrez **ctrl-v** **[Tab]** ou écrivez `$'\t'` (préférable car vous pouvez le copier-coller). - Les outils habituels pour *patcher* un code source sont `diff` et `patch`. Voir aussi `diffstat` pour un relevé statistique d'un diff et `sdiff` pour un affichage côte à côte d'un diff. @@ -307,7 +307,7 @@ Par exemple, cette commande met en minuscules et retire tous les accents (en les uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` -- Pour découper des fichiers en morceaux, voyez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. +- Pour découper des fichiers en morceaux, regardez `split` pour un découpage en morceaux de taille donnée et `csplit` pour un découpage en morceaux délimités par un motif. - Pour manipuler des dates et des heures, utilisez `dateadd`, `datediff`, `strptime`, etc. fournis par [`dateutils`](http://www.fresse.org/dateutils/). @@ -337,20 +337,20 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - Pour déterminer les raisons pour lesquelles un disque est plein, `ncdu` permet de gagner du temps par rapport aux commandes habituelles telles que `du -sh *`. -- Pour trouver quel socket ou processus utilise la bande passante essayez `iftop` ou `nethogs`. +- Pour trouver quel socket ou processus utilise la bande passante, essayez `iftop` ou `nethogs`. - L'outil `ab` (fourni avec Apache) est utile pour une vérification rapide et grossière des performances d'un serveur web. -Pour des tests de charge plus complexes servez-vous de `siege`. +Pour des tests de charge plus complexes, essayez `siege`. - Pour du debogage réseau plus sérieux : `wireshark`, `tshark` ou `ngrep`. -- Connaîssez `strace` et `ltrace`. +- Sachez utiliser `strace` et `ltrace`. Ces commandes peuvent être utiles si un programme fonctionne mal ou plante et que vous n'en connaissez pas la raison, ou si vous voulez vous faire une idée des performances. -Remarquez l'option de profilage (`-c`) et la possibilité de les rattacher à un processus en cours d'exécution (`-p`). +Remarquez l'option de profilage (`-c`) et la possibilité de les attacher à un processus en cours d'exécution (`-p`). -- Connaîssez `ldd` pour afficher les bibliothèques partagées, etc. +- Connaissez `ldd` pour afficher les bibliothèques partagées, etc. -- Sachez comment vous connecter à un processus en cours avec `gdb` et récupérer la trace d'appels. +- Sachez comment vous connecter à un processus en cours d'exécution avec `gdb` et récupérer la trace des appels. - Utilisez `/proc`. C'est parfois incroyablement utile pour résoudre des problèmes en live. Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd`, `/proc/xxx/smaps` (où `xxx` est l'identifiant du processus ou pid). @@ -358,9 +358,9 @@ Exemples : `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cw - Pour comprendre pourquoi quelque chose a mal tourné antérieurement, `sar` peut-être très utile. Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau, etc. -- Pour une analyse plus approfondie du système et des performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). +- Pour une analyse plus approfondie du système et de ses performances, regardez `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux) et [`sysdig`](https://github.com/draios/sysdig). -- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur l'Unix et le noyau) ou `lsb_release -a` (informations sur la distribution Linux). +- Vérifiez quel OS vous utilisez avec `uname` ou `uname -a` (information général sur la version d'Unix et du noyau) ou `lsb_release -a` (informations sur la distribution Linux). - Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). @@ -369,7 +369,7 @@ Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau Quelques exemples d'assemblages de commandes : -- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence de fichiers texte à l'aide de `sort` et `uniq`. +- Il est quelques fois extrèmement utile de pouvoir faire une intersection, union ou différence ensemblistes de fichiers texte à l'aide de `sort` et `uniq`. Supposez que `a` et `b` soient des fichiers texte ne contenant pas de lignes répétées. C'est rapide et fonctionne sur des fichiers de taille quelconque jusqu'à plusieurs gigaoctets (le tri n'est pas limité par la capacité mémoire bien que vous puissiez avoir besoin d'utiliser l'option `-T` si `/tmp` est sur une petite partition racine). Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sort` (omise ci-dessous pour plus de clarté). @@ -379,7 +379,7 @@ Voyez aussi la remarque à propos de `LC_ALL` ci-dessus et l'option `-u` de `sor cat a b b | sort | uniq -u > c # c est la difference a - b ``` -- Utilisez `grep . *` pour rapidement inspecter les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). +- Utilisez `grep . *` pour inspecter rapidement les contenus des fichiers d'un repértoire (chaque ligne est précédé du nom du fichier) ou `head -100 *` (chaque fichier a un titre). Cela peut être utile pour des répertoires remplis de fichiers de configuration comme ceux de `/sys`, `/proc`, `/etc`. - Pour ajouter les nombres de la troisième colonne d'un fichier texte (c'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python) : @@ -400,7 +400,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - Pour surveiller en permanence tout changement, utilisez `watch`, par exemple vérifiez les modifications dans les fichiers d'un répertoire avec `watch -d -n 2 'ls -rtlh | tail'` ou surveillez les paramètres de votre réseau tout en dépannant la configuration de votre wifi avec `watch -d -n 2 ifconfig`. -- Exécutez cette fonction pour afficher aléatoirement une astuce de ce texte (analyse le le code en Markdown et en extrait un élément d'une liste) : +- Exécutez cette fonction pour afficher aléatoirement une astuce de ce guide (analyse le code en Markdown et en extrait un élément d'une des listes) : ```sh function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | @@ -432,7 +432,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `fmt` : formate du texte. -- `pr` : formate un texte en page ou en colonne. +- `pr` : formate un texte en pages ou en colonnes. - `fold` : coupe des lignes de texte. @@ -478,7 +478,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `tac` : affiche des fichiers à l'envers. -- `shuf` : affiche une permutation aléatoire des lignes d'un fichier. +- `shuf` : sélection aléatoire de lignes d'un fichier. - `comm` : compare ligne à ligne deux fichiers triés. @@ -486,7 +486,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `hd`, `hexdump`, `xxd`, `biew` et `bvi` : dump et édition de fichiers binaires. -- `strings` : extraire du texte de fichiers binaires. +- `strings` : extrait du texte de fichiers binaires. - `tr` : conversion et manipulation de caractères. @@ -494,7 +494,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `split` et `csplit` : découpage de fichiers. -- `sponge` : lit l'entrée standart avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, p.ex., `grep -v something some-file | sponge some-file` +- `sponge` : lit entièrement un flux d'entrée avant de l'écrire. Utile pour lire depuis un fichier puis écrire dans le même fichier, par exemple : `grep -v something some-file | sponge some-file` - `units` : conversions d'unités et calculs. Convertit des furlongs par fortnight en twips par blink (voir aussi `/usr/share/units/deifinitions.units`). @@ -504,9 +504,9 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `ldd` : affiche des informations sur les bibliothèques partagées. -- `nm` : affiche les symboles contenus dans un fichier objet. +- `nm` : affiche les symboles des fichiers objets. -- `ab` : mesure les performances de serveurs web +- `ab` : mesure les performances de serveurs web. - `strace`: trace les appels système. @@ -518,7 +518,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `wireshark` et `tshark`: capture de paquets et dépannage réseau. -- `ngrep` : grep pour les couches réseau. +- `ngrep` : grep pour les couches réseaux. - `host` et `dig`: interroge les serveurs DNS. @@ -526,11 +526,11 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `dstat` : statistiques sur les ressources système. -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. -- `iostat` : statistiques sur l'usage des disques. +- `iostat` : statistiques sur l'usage du disque. -- `mpstat` : statistiques sur l'usage des CPUs. +- `mpstat` : statistiques sur l'usage du CPU. - `vmstat` : statistiques sur l'usage de la mémoire. @@ -560,9 +560,9 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. -- `lsmod` et `modinfo` : liste des modules du noyau et informations les concernant. +- `lsmod` et `modinfo` : liste les modules du noyau et donne des informations sur un module. -- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous considérez les locomotives à vapeur et les citations de Jean-Claude Van Damme « utiles ». +- `fortune`, `ddate` et `sl` : euh, bon, seulement si vous estimez que les locomotives à vapeur et les citations de Jean-Claude Van Damme sont « utiles ». ## Uniquement OS X @@ -570,7 +570,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i Ce qui suit ne s'applique *qu'*à Mac OS. - Gestion des paquets avec `brew` (Homebrew) ou `port` (MacPorts). -Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessous. +Ceux-ci peuvent être utilisés pour installer sur Mac OS la plupart des commandes mentionnées ci-dessus. - Copier la sortie de n'importe quelle commande dans une application de bureau avec `pbcopy` et coller l'entrée d'une commande avec `pbpaste`. @@ -585,7 +585,7 @@ Vous pouvez souvent faire la distinction grâce à l'en-tête « BSD General Com Dans certains cas, les versions GNU peuvent également être installées (telles que `gawk` et `gsed` pour GNU awk et GNU sed). Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles commandes (par exemple, envisagez d'utiliser Python ou Perl) ou alors testez-les soigneusement. -- Pour obtenir des informations sur la version de Mac OS, servez-vous de `sw_vers`. +- Pour obtenir des informations sur la version de Mac OS, utilisez `sw_vers`. ## Autres ressources @@ -599,8 +599,8 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com ## Avertissement -Sauf pour de petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. -Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie nécessairement que vous devriez le faire ! ;) +À l'exception des très petites tâches, le code est écrit de sorte que d'autres personnes puissent le lire. +Il n'y a pas de pouvoir sans responsabilité : le fait que vous *puissiez* faire quelque chose en Bash ne signifie pas nécessairement que vous devriez le faire ! ;) ## Licence From 85fa91f43e63424503a4f5dba6d823f7a13cbfee Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 15 Jan 2016 10:00:52 +0100 Subject: [PATCH 51/60] fr: Translate a last item --- README-fr.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-fr.md b/README-fr.md index 1f65f04..eae96dd 100644 --- a/README-fr.md +++ b/README-fr.md @@ -161,6 +161,9 @@ Vérifier l'existence d'une variable : `${name:?error message}`. Par exemple, si un script en Bash exige un unique argument, il vous suffit d'écrire `input_file=${1:?usage: $0 input_file}`. L'expansion arithmétique : `i=$(( (i + 1) % 5 ))`. Suites : `{1..10}`. Suppression de sous-chaînes : `${var%suffix}` et `${var#prefix}`. Par exemple, si `var=foo.pdf`, alors `echo ${var%.pdf}.txt` affiche `foo.txt`. +- L'expansion des accolades avec `{`...`}` évite de retaper des textes similaires et automatise les combinaisons d'éléments de listes. +C'est utile dans des exemples comme `mv foo.{txt,pdf} some-dir` (qui déplace les deux fichiers), `cp somefile{,.bak}` (équivalent à `cp somefile somefile.bak`) ou `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (qui engendre toutes les combinaisons possibles et crée une arborescence de répertoires). + - La sortie d'une commande peut être traitée comme un fichier à l'aide de `<(some command)`. Par exemple, pour comparer le fichier local `/etc/hosts` avec un fichier distant : ```sh From c2db142a71839deb40eeef5ef2c177db5ebce980 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 15 Jan 2016 11:29:35 +0100 Subject: [PATCH 52/60] fr: Synchronize the translation --- README-fr.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README-fr.md b/README-fr.md index eae96dd..54f7948 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,6 +1,6 @@ -[ Langues : -[English](README.md), [Español](README-es.md), [Français](README-fr.md), [Italiano](README-it.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + # L'art de la ligne de commande @@ -17,6 +17,7 @@ - [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) + ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) La maîtrise de la ligne de commande est une compétence souvent négligée ou considérée ésotérique, pourtant elle améliore de façon évidente et subtile votre habilité et votre productivité en tant qu'ingénieur. @@ -25,8 +26,8 @@ Certaines sont élémentaires, d'autres sont assez spécifiques, complexes ou ob Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de tout ce qui s'y trouve, alors vous saurez beaucoup de choses. Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). -Une bonne partie a été [publiée](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [à l'origine](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais compte tenu de l'intérêt qu'il a suscité, il nous a paru bon de le mettre sur GitHub, où des personnes plus compétentes que l'auteur originel pourraient facilement proposer des améliorations. -Si vous trouvez une erreur ou quelque chose qui pourrait être meilleur, nous vous invitons à remplir un ticket ou à soumettre un *pull request* ! (Bien sûr, veuillez d'abord consulter la section [Méta](#méta) ainsi que les *pull requests* et tickets en cours.) +Une partie de celui-ci a été [initialement](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [publiée](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais il se trouve maintenant sur GitHub, où des personnes plus compétentes que l'auteur originel ont apporté de nombreuses améliorations. +[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être meilleur ! ## Méta From bc422c2afd8baad5f75e3c66b119ee7622dd45b8 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 17 Jan 2016 03:08:48 +0100 Subject: [PATCH 53/60] Fix OS X naming --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4a920b7..4bacb7a 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ but it has since moved to GitHub, where people more talented than the original a Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" section. Many of the other items apply or can be installed on other Unices or MacOS (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" section. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -488,27 +488,27 @@ A few examples of piecing together commands: ## OS X only -These are items relevant *only* on MacOS. +These are items relevant *only* on OS X. -- Package management with `brew` (Homebrew) and/or `port` (MacPorts). These can be used to install on MacOS many of the above commands. +- Package management with `brew` (Homebrew) and/or `port` (MacPorts). These can be used to install on OS X many of the above commands. - Copy output of any command to a desktop app with `pbcopy` and paste input from one with `pbpaste`. -- To enable the Option key in Mac OS Terminal as an alt key (such as used in the commands above like **alt-b**, **alt-f**, etc.), open Preferences -> Profiles -> Keyboard and select "Use Option as Meta key". +- To enable the Option key in OS X Terminal as an alt key (such as used in the commands above like **alt-b**, **alt-f**, etc.), open Preferences -> Profiles -> Keyboard and select "Use Option as Meta key". - To open a file with a desktop app, use `open` or `open -a /Applications/Whatever.app`. - Spotlight: Search files with `mdfind` and list metadata (such as photo EXIF info) with `mdls`. -- Be aware MacOS is based on BSD Unix, and many commands (for example `ps`, `ls`, `tail`, `awk`, `sed`) have many subtle variations from Linux, which is largely influenced by System V-style Unix and GNU tools. You can often tell the difference by noting a man page has the heading "BSD General Commands Manual." In some cases GNU versions can be installed, too (such as `gawk` and `gsed` for GNU awk and sed). If writing cross-platform Bash scripts, avoid such commands (for example, consider Python or `perl`) or test carefully. +- Be aware OS X is based on BSD Unix, and many commands (for example `ps`, `ls`, `tail`, `awk`, `sed`) have many subtle variations from Linux, which is largely influenced by System V-style Unix and GNU tools. You can often tell the difference by noting a man page has the heading "BSD General Commands Manual." In some cases GNU versions can be installed, too (such as `gawk` and `gsed` for GNU awk and sed). If writing cross-platform Bash scripts, avoid such commands (for example, consider Python or `perl`) or test carefully. -- To get MacOS release information, use `sw_vers`. +- To get OS X release information, use `sw_vers`. ## More resources - [awesome-shell](https://github.com/alebcay/awesome-shell): A curated list of shell tools and resources. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the Mac OS command line. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the OS X command line. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) for writing better shell scripts. - [shellcheck](https://github.com/koalaman/shellcheck): A shell script static analysis tool. Essentially, lint for bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): The sadly complex minutiae on how to handle filenames correctly in shell scripts. From 538e29d94e39de8bebbe63d40b1cf534cf9f8fd1 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 17 Jan 2016 03:11:15 +0100 Subject: [PATCH 54/60] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a920b7..87c9d5d 100644 --- a/README.md +++ b/README.md @@ -477,7 +477,7 @@ A few examples of piecing together commands: - `lsb_release`: Linux distribution info -- `lsblk`: list block devices: a tree view of your disks and disk paritions +- `lsblk`: list block devices: a tree view of your disks and disk partitions - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: hardware information, including CPU, BIOS, RAID, graphics, devices, etc. From 766f20e95633087e0dba9dce78fb5e8879158971 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sun, 17 Jan 2016 07:10:57 +0100 Subject: [PATCH 55/60] sl: Update translation --- README-sl.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-sl.md b/README-sl.md index 4db5000..08830a2 100644 --- a/README-sl.md +++ b/README-sl.md @@ -35,7 +35,7 @@ vendar se je premaknilo na GitHub, kjer so ljudje bolj talentirani od prvotnega Obseg: - Ta vodič je tako za začetnike kot za poznavalce. Cilji so *širina* (vse pomembno), *specifičnost* (podaja konkretne primere najpogostejših primerov uporabe) in *kratkost* (izogiba se stvarem, ki niso bistvene ali se odmikajo, kar lahko enostavno pogledate drugje). Vsak nasvet je bistven v določeni situaciji ali bistveno prihrani čas pred alternativami. -- To je napisano za Linux z izjemo sekcije "[Samo za OS X](#samo-za-os-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali MacOS (ali celo Cygwin). +- To je napisano za Linux z izjemo sekcije "[Samo za OS X](#samo-za-os-x)". Mnogi ostali elementi veljajo ali pa so lahko nameščeni na drugih Unix-ih ali OS X (ali celo Cygwin). - Poudarek je na interaktivnosti Bash-a, čeprav mnogo nasvetov velja za ostale lupine in splošno skriptanje Bash-a. - Vključuje tako "standardne" ukaze Unix-a kot tudi tiste, ki zahtevajo namestitev posebnih paketov -- dokler so dovolj pomembni, da zaslužijo vključitev. @@ -488,27 +488,27 @@ Nekaj primerov sestavljanja ukazov skupaj: ## Samo za OS X -To so elementi pomembni *samo* za MacOS. +To so elementi pomembni *samo* za OS X. -- Upravljanje paketov z `brew` (Homebrew) in/ali `port` (MacPorts). Te so lahko uporabljeni za namestitev mnogih zgornjih ukazov na MacOS. +- Upravljanje paketov z `brew` (Homebrew) in/ali `port` (MacPorts). Te so lahko uporabljeni za namestitev mnogih zgornjih ukazov na OS X. - Kopirajte izpis katerega koli ukaza na namizno aplikacijo s `pbcopy` in prilepite vnos iz ene s `pbpaste`. -- Da omogočite uporabo topke Option v Mac OS Terminalu kot tipka alt (kot je uporabljena v ukazih zgoraj kot **alt-b**, **alt-f** itd), odprite Preferences -> Profiles -> Keyboard in izberite "Use Option as Meta key". +- Da omogočite uporabo topke Option v OS X Terminalu kot tipka alt (kot je uporabljena v ukazih zgoraj kot **alt-b**, **alt-f** itd), odprite Preferences -> Profiles -> Keyboard in izberite "Use Option as Meta key". - Da odprete datoteko z namizno aplikacijo, uporabite `open` ali `open -a /Applications/Whatever.app`. - Spotlight: Poiščite datoteke z `mdfind` in izpišite meta podatke (kot so EXIF informacije fotografije) z `mdls`. -- Bodite pozorni, saj je MacOS osnovan na BSD Unix in mnogi ukazi (na primer `ps`, `ls`, `tail`, `awk`, `sed`) imajo mnoge subtilne različice iz Linux-a, na katerega je večinoma vplival System V-style Unix in GNU tools. Pogostokrat lahko poveste razliko tako, da opazite, da ima stran man naslov "BSD General Commands Manual." V nekaterih primerih se lahko namestijo tudi GNU različice (kot so `gawk` in `gsed` za GNU awk in sed). Če pišete skripte Bash za vse platforme, se izogibajte takim ukazom (na primer, z upoštevanjem Python ali `perl`) ali pazljivo testirajte. +- Bodite pozorni, saj je OS X osnovan na BSD Unix in mnogi ukazi (na primer `ps`, `ls`, `tail`, `awk`, `sed`) imajo mnoge subtilne različice iz Linux-a, na katerega je večinoma vplival System V-style Unix in GNU tools. Pogostokrat lahko poveste razliko tako, da opazite, da ima stran man naslov "BSD General Commands Manual." V nekaterih primerih se lahko namestijo tudi GNU različice (kot so `gawk` in `gsed` za GNU awk in sed). Če pišete skripte Bash za vse platforme, se izogibajte takim ukazom (na primer, z upoštevanjem Python ali `perl`) ali pazljivo testirajte. -- Da dobite informacije o izdaji MacOS, uporabite `sw_vers`. +- Da dobite informacije o izdaji OS X, uporabite `sw_vers`. ## Več virov - [awesome-shell](https://github.com/alebcay/awesome-shell): urejan seznam orodij lupine in virov. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Bolj poglobljen vodič za Mac OS ukazno vrstico. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Bolj poglobljen vodič za OS X ukazno vrstico. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) za pisanje boljših skript lupine. - [shellcheck](https://github.com/koalaman/shellcheck): lupinska skripta orodja statične analize. V osnovi, lint za bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Na žalost kompleksne podrobnosti, kako pravilno ravnati z imeni datotek v lupinskih skriptah. From ab4e476cbb92101c59f4132149c75bb609cc3ff8 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Mon, 18 Jan 2016 09:56:42 +0200 Subject: [PATCH 56/60] es: apply OS X patch. --- README-es.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-es.md b/README-es.md index 70f801c..868ddb4 100644 --- a/README-es.md +++ b/README-es.md @@ -36,7 +36,7 @@ pero se ha movido desde entonces a Github, donde personas más talentosas que el Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o OS X (o incluso Cygwin). - Se enfoca en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y al Bash scripting por lo general. - Incluye tanto comandos "estándar" Unix, así como aquellos que requieren la instalación especial de un paquete -- siempre que sea suficientemente importante para ameritar su inclusión. @@ -488,26 +488,26 @@ Algunos ejemplos de comandos reunidos: ## Solo para OS X -Estos son puntos relevantes *únicamente* para MacOS. +Estos son puntos relevantes *únicamente* para OS X. -- Administración de paquetes con `brew` (Homebrew) y/o `port` (MacPorts). Estos pueden ser utilizados para instalar en MacOS muchos de los comandos de arriba. +- Administración de paquetes con `brew` (Homebrew) y/o `port` (MacPorts). Estos pueden ser utilizados para instalar en OS X muchos de los comandos de arriba. - Copie la salida de cualquier comando en una aplicación de escritorio con `pbcopy` y pegue una entrada con `pbpaste`. -- Para activar la teacla Option en un Terminal Mac OS Terminal como una tecla alt (tal como se usan en los comandos más arriba como **alt-b**, **alt-f**, etc.), abre Preferencias -> Perfiles -> Teclado y selecciona "Usa Option como tecla Meta". +- Para activar la teacla Option en un OS X Terminal como una tecla alt (tal como se usan en los comandos más arriba como **alt-b**, **alt-f**, etc.), abre Preferencias -> Perfiles -> Teclado y selecciona "Usa Option como tecla Meta". - Para abrir un archivo con una aplicación de escritorio, use `open` o `open -a /Applications/Whatever.app`. - Spotlight: Busque archivos con `mdfind` y liste metadata (tal como información de foto EXIF) con `mdls`. -- Ten en cuenta que MacOS está basado en BSD Unix, y muchos comandos (por ejemplo `ps`, `ls`, `tail`, `awk`, `sed`) tiene sutiles variaciones en comparación con Linux, que está en gran parte influenciado por el sistema Unix V-style y herramientas GNU. Comunmente se puede diferenciar al notar que una página man tienen el encabezado "BSD General Commands Manual." En algunos casos versiones GNU pueden ser instaladas también (tales como `gawk` y `gsed` para GNU awk y sed). Si escribe Bash scripts multiplataforma, evite tales comandos (por ejemplo, considere Python o `perl`) o prueba cuidadosamente. +- Ten en cuenta que OS X está basado en BSD Unix, y muchos comandos (por ejemplo `ps`, `ls`, `tail`, `awk`, `sed`) tiene sutiles variaciones en comparación con Linux, que está en gran parte influenciado por el sistema Unix V-style y herramientas GNU. Comunmente se puede diferenciar al notar que una página man tienen el encabezado "BSD General Commands Manual." En algunos casos versiones GNU pueden ser instaladas también (tales como `gawk` y `gsed` para GNU awk y sed). Si escribe Bash scripts multiplataforma, evite tales comandos (por ejemplo, considere Python o `perl`) o prueba cuidadosamente. -- Para obtener la información de la versión del MacOS, usa `sw_vers`. +- Para obtener la información de la versión del OS X, usa `sw_vers`. ## Más recursos - [awesome-shell](https://github.com/alebcay/awesome-shell): Una lista curada de herramientas shell y recursos. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Una guía más detallada para la línea de comandos del Mac OS. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Una guía más detallada para la línea de comandos del OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) para escribir mejores script shell. - [shellcheck](https://github.com/koalaman/shellcheck): Una herramienta de análisis estadístico del script shell. Esencialmente, lint para bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Las menudencias tristemente complejas sobre cómo manejar nombres de archivos correctamente en shell scripts. From 67ba26064d22416ee7d231a11204c9b39242e009 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 18 Jan 2016 09:05:24 +0100 Subject: [PATCH 57/60] fr: Make some improvements --- README-fr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-fr.md b/README-fr.md index 54f7948..38f5a26 100644 --- a/README-fr.md +++ b/README-fr.md @@ -560,7 +560,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `lsb_release` : informations sur la distribution Linux. -- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et partitions). +- `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et de leurs partitions). - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. @@ -594,8 +594,8 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com ## Autres ressources -- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et ressources pour le shell. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): un guide plus approfondi sur la ligne de commande pour Mac OS. +- [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et de ressources pour le shell. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line) : un guide plus approfondi sur la ligne de commande pour Mac OS. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) : pour écrire de meilleurs scripts shell. - [shellcheck](https://github.com/koalaman/shellcheck) : un outil d'analyse statique des scripts shell. L'équivalent de lint pour bash, sh et zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html) : les points de détail, malheureusement compliqués, sur la manière de manipuler correctement les noms de fichiers dans les scripts shell. From 3b97f45dcff32e80ee572a128da549f5c5d4fc4c Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 11:01:43 -0800 Subject: [PATCH 58/60] fr language links. Follow up on #344. --- README-cs.md | 3 +-- README-es.md | 5 ++--- README-fr.md | 11 +++++------ README-it.md | 3 +-- README-ja.md | 3 +-- README-ko.md | 3 +-- README-pt.md | 3 +-- README-ru.md | 3 +-- README-sl.md | 3 +-- README-uk.md | 3 +-- README-zh.md | 3 +-- README.md | 2 +- 12 files changed, 17 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 9674dd3..a8e3aa9 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index 868ddb4..08af60b 100644 --- a/README-es.md +++ b/README-es.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # El Arte del Terminal @@ -27,7 +26,7 @@ Parte de esta: [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. +pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. [**Por favor contribuye**](/CONTRIBUTING.md) Si ves un error o algo que podría ser mejor! diff --git a/README-fr.md b/README-fr.md index 38f5a26..dff9889 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,7 +1,6 @@ 🌍 *[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - # L'art de la ligne de commande [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -52,7 +51,7 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib ## Notions de base -- Apprenez les bases de Bash. +- Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). @@ -108,7 +107,7 @@ Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` - Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). Vous pouvez alors y revenir plus tard à l'aide de la commande history. -- Utilisez `xargs` (ou `parallel`). +- Utilisez `xargs` (ou `parallel`). C'est très puissant. Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. @@ -328,7 +327,7 @@ Utilisez `iostat -mxz 15` pour des statistiques de base concernant le CPU, des s - Pour des informations sur les connexions réseaux, utilisez `netstat` et `ss`. -- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. +- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. Pour un aperçu plus étendu et détaillé, utilisez [`glances`](https://github.com/nicolargo/glances). - Pour connaître l'état de la mémoire, exécutez `free` et `vmstat` et comprenez leurs sorties. @@ -396,7 +395,7 @@ Cela peut être utile pour des répertoires remplis de fichiers de configuration find . -type f -ls ``` -- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. +- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_id` : ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn @@ -530,7 +529,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `dstat` : statistiques sur les ressources système. -- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. +- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. - `iostat` : statistiques sur l'usage du disque. diff --git a/README-it.md b/README-it.md index be9a9d6..742d5ff 100644 --- a/README-it.md +++ b/README-it.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 6ab6215..80d6be8 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 02f9ed0..10b41c7 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 1d95b0b..1565c29 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 47d7193..7f5077a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 08830a2..2a9bc09 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 1eeabce..d7738f4 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index c529b19..90d2acb 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # 命令行的艺术 diff --git a/README.md b/README.md index c62dd30..87b28cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line From 865e9d7ca9f7b30c27202cdd4cc0c29a014ee78e Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 19:20:51 -0800 Subject: [PATCH 59/60] Update roles and authors file. Add maintainers and translators for French. Fix two missing contributors that GitHub was omitting in API. --- AUTHORS.md | 16 ++++++++++------ admin/authors-info.yml | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 6f16f39..d0b473e 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -9,13 +9,13 @@ Contributors are listed in alphabetical order by GitHub login. * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) * [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) -* [Guo Chong (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ +* [Chong Guo (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ * [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) * [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[13+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) * [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) * [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) @@ -30,8 +30,10 @@ Contributors are listed in alphabetical order by GitHub login. * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) * [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _francescomalatesta_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) @@ -40,9 +42,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) * [Hyojin Kwak (hyojin)](https://github.com/hyojin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hyojin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahyojin) * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) -* [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) +* [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [116+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [124+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[22+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -60,18 +62,20 @@ Contributors are listed in alphabetical order by GitHub login. * [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera) * [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) * [Crisoforo Gaspar Hernández (mitogh)](https://github.com/mitogh) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mitogh)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amitogh) +* [miuc (miuc)](https://github.com/miuc) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=miuc)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amiuc) * [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) * [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translator and maintainer (pt)_ * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [30+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[21+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [34+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) * [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) +* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _rverchere_ * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) @@ -83,7 +87,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) * [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) -* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) +* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [Sungjin Kang (ujuc)](https://github.com/ujuc) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc) — _translator (ko)_ * [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translator and maintainer (ko)_ * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 0ca75fe..889b2e3 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -43,3 +43,5 @@ roles: stepan0904: translator and maintainer (uk) francescomalatesta: translator and maintainer (it) lsrom: translator and maintainer (cs) + ericguirbal: translator and maintainer (fr) + rverchere: translator (fr) From a86a78c0e1ca6734c0938f6b7af21115f51ea2fa Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 19:29:53 -0800 Subject: [PATCH 60/60] One more fix to authors. #352. --- AUTHORS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index d0b473e..386f711 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,7 +33,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) -* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _francescomalatesta_ +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) @@ -44,7 +44,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [124+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[22+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [125+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -75,7 +75,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) -* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _rverchere_ +* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _translator (fr)_ * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7)