From b5cdd0f700912e6847441cacdbc05fd84771193f Mon Sep 17 00:00:00 2001 From: Scott Griffin Date: Tue, 23 Jun 2015 23:00:16 -0700 Subject: [PATCH 001/337] brace expansion example. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0b7ef27..b484543 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,10 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. +- Shell brace expansion can help reduce having to re-type similar text. The command `echo foo{,bar,baz}` will expand to +`echo foo foobar foobaz`. This is helpful when copying/renaming files such as `cp somefile{,.bak}` which expands to +`cp somefile somefile.bak` or `mv some_{,absurdly_long_}filename` which expands to `mv some_filename some_absurdly_long_filename` + - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) From 24c17d60743316fc4d7453139cedca2443030b3e Mon Sep 17 00:00:00 2001 From: Marcel Steinbeck Date: Sat, 27 Jun 2015 09:30:34 +0200 Subject: [PATCH 002/337] added apg, closes #101 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8d9563f..ae0c127 100644 --- a/README.md +++ b/README.md @@ -433,6 +433,8 @@ 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" +- `apg`: generates several random passwords. + ## More resources From 809940da7fbb14dda7eb6d8a6782995276d3135c Mon Sep 17 00:00:00 2001 From: grossws Date: Thu, 9 Jul 2015 12:27:45 +0300 Subject: [PATCH 003/337] Add more binary viewers/editors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 327bdf6..7e7b306 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ Notes: - The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. -- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. +- For binary files, use `hd`, `hexdump` or `xxd` for simple hex dumps and `bvi` or `biew` for binary editing. - Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. @@ -372,7 +372,7 @@ A few examples of piecing together commands: - `pv`: monitor the progress of data through a pipe -- `hd` and `bvi`: dump or edit binary files +- `hd`, `hexdump`, `xxd`, `biew` and `bvi`: dump or edit binary files - `strings`: extract text from binary files From 8e29e5fc0c7802a76c253e273317213ef228301b Mon Sep 17 00:00:00 2001 From: Dmytro Danylevskyi Date: Fri, 10 Jul 2015 07:33:43 +0300 Subject: [PATCH 004/337] Add shyaml --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7d06371..549b87e 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,8 @@ Notes: - For JSON, use `jq`. +- For Yaml, use `shyaml`. + - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. - For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) is essential for other AWS-related tasks. From 3a26b207565c0452f2d953555f2dd600d529a240 Mon Sep 17 00:00:00 2001 From: Ivgeni Segal Date: Tue, 14 Jul 2015 11:35:46 -0700 Subject: [PATCH 005/337] Update README.md Added Mosh. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index af21393..79337b4 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,8 @@ Notes: - Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. A more minimal alternative for session persistence only is `dtach`. +- Use [`mosh`](https://mosh.mit.edu/) Mobile Shell to wrap your ssh sessions over a stateless UDP so that you never have to manually reconnect when on the road, or when your internet connection gets temporarilly dropped. + - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. - It can be useful to make a few optimizations to your ssh configuration; for example, this `~/.ssh/config` contains settings to avoid dropped connections in certain network environments, uses compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: From 67ab3a8352d770e63c05a4f7fe5e9733431f541d Mon Sep 17 00:00:00 2001 From: Chunyang Xu Date: Sun, 26 Jul 2015 02:37:48 +0800 Subject: [PATCH 006/337] zh: Update README-zh.md --- README-zh.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index 33f5ced..422c1c6 100644 --- a/README-zh.md +++ b/README-zh.md @@ -62,7 +62,7 @@ - 学习基本的网络管理:`ip` 或 `ifconfig`,`dig`。 -- 熟悉正则表达式,以及 `grep`/`egrep` 里不同参数的作用,例如 `-i`,`-o`,`-A`,和 `-B`。 +- 熟悉正则表达式,以及 `grep`/`egrep` 里不同参数的作用,例如 `-i`,`-o`,`-v`,`-A`,`-B` 和 `-C`。 - 学会使用 `apt-get`,`yum`,`dnf` 或 `pacman` (取决于你使用的 Linux 发行版)来查找或安装包。确保你的环境中有 `pip` 来安装基于 Python 的命令行工具 (部分程序使用 `pip` 来安装会很简单)。 @@ -99,6 +99,8 @@ - 有关打开套接字和文件,请参阅 `lsof`。 +- 使用 `uptime` 或 `w` 来查看系统已经运行多长时间。 + - 使用`alias`来创建常用命令的快捷形式。例如:`alias ll='ls -latr'`使你可以方便地执行`ls -latr`命令。 - 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。 @@ -249,7 +251,7 @@ - 了解如何运用 `gdb` 连接到一个运行着的进程并获取它的堆栈轨迹。 -- 学会使用 `/proc`。它在调试正在出现的问题的时候有时会效果惊人。比如:`/proc/cpuinfo`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/`,`/proc/xxx/smaps`。 +- 学会使用 `/proc`。它在调试正在出现的问题的时候有时会效果惊人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/`,`/proc/xxx/smaps`(这里的 `xxx` 表示进程的 id 或 pid)。 - 当调试一些之前出现的问题的时候,`sar` 非常有用。它展示了 cpu、内存以及网络等的历史数据。 @@ -354,6 +356,8 @@ - `stat`:文件信息 +- `time`:执行命令,并计算执行时间 + - `tac`:反向输出文件 - `shuf`:文件中随机选取几行 @@ -402,7 +406,11 @@ - [`glances`](https://github.com/nicolargo/glances):高层次的多子系统总览 -- `iostat`:CPU 和硬盘状态 +- `iostat`:硬盘使用状态 + +- `mpstat`: CPU 使用状态 + +- `vmstat`: 内存使用状态 - `htop`:top 的加强版 @@ -420,6 +428,8 @@ - `dmesg`:引导及系统错误信息 +- `sysctl`: 在内核运行时动态地查看和修改内核的运行参数 + - `hdparm`:SATA/ATA 磁盘更改及性能分析 - `lsb_release`:Linux 发行版信息 @@ -428,6 +438,8 @@ - `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB设备等 +- `lsmod` 和 `modifno`:列出内核模块,并显示其细节 + - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” ## 仅限 Mac 系统 From fd2bc5052262a331edaaf9463b20d6a59a2f8da6 Mon Sep 17 00:00:00 2001 From: Chunyang Xu Date: Mon, 27 Jul 2015 18:53:18 +0800 Subject: [PATCH 007/337] zh: Update translation I think "OS X" now is the official name of OS for Mac, according to https://en.wikipedia.org/wiki/OS_X --- README-zh.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README-zh.md b/README-zh.md index 422c1c6..e125835 100644 --- a/README-zh.md +++ b/README-zh.md @@ -11,7 +11,7 @@ - [系统调试](#系统调试) - [一行代码](#一行代码) - [冷门但有用](#冷门但有用) -- [仅限 Mac 系统](#仅限-mac-系统) +- [仅限 MacOS X 系统](#仅限-macos-x-系统) - [更多资源](#更多资源) - [免责声明](#免责声明) - [授权条款](#授权条款) @@ -32,7 +32,7 @@ 涵盖范围: - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到覆盖面广(尽量包括一切重要的内容),具体(给出最常见的具体的例子)以及简洁(避免一些不必要的东西以及一些偏题的可以在其他地方翻阅到文献的东西)。 每个小技巧在某个特定情境下都是基本的或能够显著地节约时间。 -- 本文为 Linux 所写,除了[仅限 Mac 系统](#仅限-mac-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 Mac 系统,甚至 Cygwin。 +- 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -442,9 +442,9 @@ - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” -## 仅限 Mac 系统 +## 仅限 MacOS X 系统 -以下是*仅限于* Mac 系统的技巧 +以下是*仅限于* MacOS 系统的技巧 - 用 `brew` (Homebrew)或者 `port` (MacPorts)进行包管理。这些可以用来在 Mac 系统上安装以上的大多数命令。 @@ -454,7 +454,7 @@ - Spotlight: 用 `mdfind` 搜索文件,用 `mdls` 列出元数据(例如照片的 EXIF 信息)。 -- 注意 Mac 系统是基于 BSD UNIX 的,许多命令(例如 `ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 "BSD General Commands Manual" 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如 `gawk` 和 `gsed` 对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者 `perl` )或者经过仔细的测试。 +- 注意 MacOS 系统是基于 BSD UNIX 的,许多命令(例如 `ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 "BSD General Commands Manual" 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如 `gawk` 和 `gsed` 对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者 `perl` )或者经过仔细的测试。 ## 更多资源 From 123293a0a0288368c2b723c401071a8ae56e2c54 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Wed, 29 Jul 2015 23:35:42 -0700 Subject: [PATCH 008/337] Add iostat example. Improve langauge. Fixes #231. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6b98611..f4ec7a5 100644 --- a/README.md +++ b/README.md @@ -229,9 +229,9 @@ Notes: - For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). -- To know disk/cpu/network status, use `iostat`, `netstat`, `top` (or the better `htop`), and (especially) `dstat`. Good for getting a quick idea of what's happening on a system. +- To know current disk/cpu/network status, the classic tools are `iostat`, `netstat`, and `top` (or the better `htop`). Use `iostat -mxz 15` for basic CPU and detailed per-partition disk stats and performance insight. -- For a more in-depth system overview, use [`glances`](https://github.com/nicolargo/glances). It presents you with several system level statistics in one terminal window. Very helpful for quickly checking on various subsystems. +- For a quick overview of what's happening on a system, `dstat` is especially useful. For broadest overview with details, use [`glances`](https://github.com/nicolargo/glances). - To know memory status, run and understand the output of `free` and `vmstat`. In particular, be aware the "cached" value is memory held by the Linux kernel as file cache, so effectively counts toward the "free" value. From c608c225f3786d48a3487c7abc266f15488f711a Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 30 Jul 2015 00:02:44 -0700 Subject: [PATCH 009/337] Add iotop. Put netstat + ss in their own item. Fixes #78 --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f4ec7a5..b398baa 100644 --- a/README.md +++ b/README.md @@ -229,7 +229,9 @@ Notes: - For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). -- To know current disk/cpu/network status, the classic tools are `iostat`, `netstat`, and `top` (or the better `htop`). Use `iostat -mxz 15` for basic CPU and detailed per-partition disk stats and performance insight. +- To know current cpu/disk status, the classic tools are `top` (or the better `htop`), `iostat`, and `iotop`. Use `iostat -mxz 15` for basic CPU and detailed per-partition disk stats and performance insight. + +- For network connection details, use `netstat` and `ss`. - For a quick overview of what's happening on a system, `dstat` is especially useful. For broadest overview with details, use [`glances`](https://github.com/nicolargo/glances). From ab3319f766f8df2496114d4d665376b3bd24e257 Mon Sep 17 00:00:00 2001 From: Xudong Zhang Date: Tue, 4 Aug 2015 10:22:04 +0800 Subject: [PATCH 010/337] Fix a typo. modifno should be modinfo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b398baa..e88677f 100644 --- a/README.md +++ b/README.md @@ -449,7 +449,7 @@ A few examples of piecing together commands: - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: hardware information, including CPU, BIOS, RAID, graphics, devices, etc. -- `lsmod` and `modifno`: List and show details of kernel modules. +- `lsmod` and `modinfo`: List and show details of kernel modules. - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" From 2cf2393063996626a135821775d7e05b36e05d66 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 3 Aug 2015 21:43:03 -0700 Subject: [PATCH 011/337] More detail on ctrl-r. Fixes #52. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b398baa..12f7ff7 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Notes: ## Everyday use -- In Bash, use **Tab** to complete arguments and **ctrl-r** to search through command history. +- In Bash, use **Tab** to complete arguments and **ctrl-r** to search through command history (after pressing, type to search, press **ctrl-r** repeatedly to cycle through more matches, press **Enter** to execute the found command, or hit the right arrow to put the result in the current line to allow editing). - In Bash, use **ctrl-w** to delete the last word, and **ctrl-u** to delete all the way back to the start of the line. Use **alt-b** and **alt-f** to move by word, **ctrl-a** to move cursor to beginning of line, **ctrl-e** to move cursor to end of line, **ctrl-k** to kill to the end of the line, **ctrl-l** to clear the screen. See `man readline` for all the default keybindings in Bash. There are a lot. For example **alt-.** cycles through previous arguments, and **alt-*** expands a glob. From 873363937ea4ece4192be893acc5ecd7b234f115 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Tue, 4 Aug 2015 14:47:29 +0200 Subject: [PATCH 012/337] sl: update translation# --- README-sl.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README-sl.md b/README-sl.md index 456924e..c7e8b87 100644 --- a/README-sl.md +++ b/README-sl.md @@ -70,7 +70,7 @@ Opombe: ## Vsakodnevna uporaba -- V Bash-u uporabite **Tab** za dokončanje argumentov in **ctrl-r**, da iščete skozi zgodovino ukazov. +- V Bash-u uporabite **Tab** za dokončanje argumentov in **ctrl-r**, da iščete skozi zgodovino ukazov (po pritiski, vtipkajte za iskanje, pritisnite **ctrl-r** s ponavljanjem za kroženje skozi več ujemanj, pritisnite **Enter**, da izvršite najdeni ukaz, ali pritisnite desno puščico, da date trenutni rezultat v trenutno vrstico in omogočite urejanje). - V Bash-u uporabite **ctrl-w**, da izbrišete zadnjo besedo in **ctrl-u**, da izbrišete vse do začetka vrstice. Uporabite **alt-b** in **alt-f**, da se premikate po besedah, **ctrl-a**, da premaknete kurzor na začetek vrstice, **ctrl-e**, da premaknete kurzor na konec vrstice, **ctrl-k**, da ubijete do začetka vrstice, **ctrl-l**, da počistite zaslon. Glejte `man readline` za vse privzete vezave tipk v Bash-u. Na voljo jih je veliko. Na primer **alt-.** kroži skozi prejšnje argumente in **alt-*** razširi glob. @@ -229,9 +229,11 @@ Opombe: - Za spletno razhroščevanje, sta priročna `curl` in `curl -I` ali pa njun ekvivalent `wget`, ali bolj moderen [`httpie`](https://github.com/jakubroztocil/httpie). -- Da izveste status diska/procesorja/omrežja, uporabite `iostat`, `netstat`, `top` (ali bolje `htop`) in (posebno) `dstat`. Dobro za dobiti hitro idejo, kaj se dogaja na sistemu. +- Da izveste trenutni status diska/procesorja/omrežja, so na voljo klasična orodja `top`, (ali bolje `htop`), `iostat` in `iotop` . Uporabite `iostat -mxz 15` za osnovno statistiko CPU in podrobno na particijo statistiko diska in vpogled v uspešnost. -- Za hiter podrobnejši pregled sistema uporabite [`glances`](https://github.com/nicolargo/glances). Predstavi vam nekaj statistik nivoja sistema v enem oknu terminala. Zelo uporabno za hitro preverjanje na različnih podsistemih. +- Za podrobnosti omrežne povezave uporabite `netstat` in `ss`. + +- Za hiter pregled, kaj se dogaja na sistemu, je `dstat` posebno uporaben. Za širši pregled s podrobnostmi uporabite [`glances`](https://github.com/nicolargo/glances). - Da izveste status spomina, poženite in razumite izpis `free` in `vmstat`. Še posebej bodite pozorni, da je vrednost "cached" držana v spominu s strani jedra Linux-a kot datoteka predpomnilnika, tako da efektivno šteje proti vrednosti "free". From a5f64eb5f28e24bd8261598aab4ec6a945266af9 Mon Sep 17 00:00:00 2001 From: aneasystone Date: Wed, 5 Aug 2015 15:12:11 +0800 Subject: [PATCH 013/337] Use `Tab` to list available commands --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a41294..32b7045 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Notes: ## Everyday use -- In Bash, use **Tab** to complete arguments and **ctrl-r** to search through command history. +- In Bash, use **Tab** to complete arguments or list all available commands and **ctrl-r** to search through command history. - In Bash, use **ctrl-w** to delete the last word, and **ctrl-u** to delete all the way back to the start of the line. Use **alt-b** and **alt-f** to move by word, **ctrl-a** to move cursor to beginning of line, **ctrl-e** to move cursor to end of line, **ctrl-k** to kill to the end of the line, **ctrl-l** to clear the screen. See `man readline` for all the default keybindings in Bash. There are a lot. For example **alt-.** cycles through previous arguments, and **alt-*** expands a glob. From dfda8cd6c862af0f9b82877a0e9d9f1670a94a66 Mon Sep 17 00:00:00 2001 From: Chujie Zeng Date: Mon, 10 Aug 2015 00:09:32 +0800 Subject: [PATCH 014/337] 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 e125835..24a50b8 100644 --- a/README-zh.md +++ b/README-zh.md @@ -438,7 +438,7 @@ - `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB设备等 -- `lsmod` 和 `modifno`:列出内核模块,并显示其细节 +- `lsmod` 和 `modinfo`:列出内核模块,并显示其细节 - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” From 93746b409e839f39581f397b00422e5b76853b07 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 10 Aug 2015 20:47:10 -0700 Subject: [PATCH 015/337] Link on filenames handling. Thanks to @mator. Fixes #71. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ac3b60..10ea84e 100644 --- a/README.md +++ b/README.md @@ -475,7 +475,8 @@ These are items relevant *only* on MacOS. - [awesome-shell](https://github.com/alebcay/awesome-shell): A curated list of shell tools and resources. - [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. +- [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. ## Disclaimer From f7755ef0d20112be07ad289025b42b83f7067a6b Mon Sep 17 00:00:00 2001 From: Uggla Date: Tue, 11 Aug 2015 13:30:24 +0200 Subject: [PATCH 016/337] Add vimdiff and sdiff command. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 10ea84e..8d0b553 100644 --- a/README.md +++ b/README.md @@ -207,7 +207,9 @@ Notes: - If you ever need to write a tab literal in a command line in Bash (e.g. for the -t argument to sort), press **ctrl-v** **[Tab]** or write `$'\t'` (the latter is better as you can copy/paste it). -- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. +- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` easier to read diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. + +- Use `vimdiff` to compare and edit files. Really efficient ! - For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. From 11bbb2bb9d1412b4971b784cba59f7da54977ebd Mon Sep 17 00:00:00 2001 From: Uggla Date: Tue, 11 Aug 2015 13:54:12 +0200 Subject: [PATCH 017/337] Fix for #146. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10ea84e..5e21d46 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Notes: - Learn about redirection of output and input using `>` and `<` and pipes using `|`. Know `>` overwrites the output file and `>>` appends. Learn about stdout and stderr. -- Learn about file glob expansion with `*` (and perhaps `?` and `{`...`}`) and quoting and the difference between double `"` and single `'` quotes. (See more on variable expansion below.) +- Learn about file glob expansion with `*` (and perhaps `?` and `[`...`]`) and quoting and the difference between double `"` and single `'` quotes. (See more on variable expansion below.) - Be familiar with Bash job management: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. From 4e794ecfde83b535b6871a449e34b07d89be2c60 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 11 Aug 2015 10:14:34 -0700 Subject: [PATCH 018/337] More on brace expansion. Updates #116. Thanks also to the suggestion in #1. --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 14126b9..1979b8f 100644 --- a/README.md +++ b/README.md @@ -115,9 +115,8 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. -- Shell brace expansion can help reduce having to re-type similar text. The command `echo foo{,bar,baz}` will expand to -`echo foo foobar foobaz`. This is helpful when copying/renaming files such as `cp somefile{,.bak}` which expands to -`cp somefile somefile.bak` or `mv some_{,absurdly_long_}filename` which expands to `mv some_filename some_absurdly_long_filename` +- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to +`cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: ```sh From f800f02ba004e1826005b463d6de45578d399396 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 11 Aug 2015 10:17:40 -0700 Subject: [PATCH 019/337] Edits to #259 for brevity. --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 540c9a5..74cc63e 100644 --- a/README.md +++ b/README.md @@ -210,9 +210,7 @@ Notes: - If you ever need to write a tab literal in a command line in Bash (e.g. for the -t argument to sort), press **ctrl-v** **[Tab]** or write `$'\t'` (the latter is better as you can copy/paste it). -- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` easier to read diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. - -- Use `vimdiff` to compare and edit files. Really efficient ! +- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` for a side-by-side diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. Use `vimdiff` to compare and edit files. - For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. From 54878c375bb556feebb330ba51947becf6b4e1d7 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 11 Aug 2015 23:37:21 -0700 Subject: [PATCH 020/337] Open command in editor. Thanks to #253. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0958f9e..6b76a5b 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,10 @@ Notes: - In Bash, use **ctrl-w** to delete the last word, and **ctrl-u** to delete all the way back to the start of the line. Use **alt-b** and **alt-f** to move by word, **ctrl-a** to move cursor to beginning of line, **ctrl-e** to move cursor to end of line, **ctrl-k** to kill to the end of the line, **ctrl-l** to clear the screen. See `man readline` for all the default keybindings in Bash. There are a lot. For example **alt-.** cycles through previous arguments, and **alt-*** expands a glob. -- Alternatively, if you love vi-style key-bindings, use `set -o vi`. + +- Alternatively, if you love vi-style key-bindings, use `set -o vi` (and `set -o emacs` to put it back). + +- For editing long commands, after setting your editor (for example `export EDITOR=vim`), **ctrl-x** **ctrl-e** will open the current command in an editor for multi-line editing. Or in vi style, **escape-v**. - To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument) and `!!` last command, though these are often easily replaced with **ctrl-r** and **alt-.**. From 5fef2d2bf64ffc9475d2bee035ab242d48e3f7c2 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 11 Aug 2015 23:46:17 -0700 Subject: [PATCH 021/337] Tweaks to #132. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67fbf47..9b854a4 100644 --- a/README.md +++ b/README.md @@ -395,6 +395,8 @@ A few examples of piecing together commands: - `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) +- `apg`: generates random passwords + - `7z`: high-ratio file compression - `ldd`: dynamic library info @@ -459,8 +461,6 @@ 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" -- `apg`: generates several random passwords. - ## MacOS X only From 96cbb88ffa4dc00a6b0a9567e84d0cf802296d21 Mon Sep 17 00:00:00 2001 From: Uggla Date: Wed, 12 Aug 2015 10:33:52 +0200 Subject: [PATCH 022/337] Add byobu command. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b854a4..e1c5285 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ Notes: - Use `man ascii` for a good ASCII table, with hex and decimal values. For general encoding info, `man unicode`, `man utf-8`, and `man latin1` are helpful. -- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. A more minimal alternative for session persistence only is `dtach`. +- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is `dtach`. - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. From cf2b1815a63420a76818846e627909989ee9e99e Mon Sep 17 00:00:00 2001 From: Hunter-Github Date: Wed, 12 Aug 2015 13:10:16 +0300 Subject: [PATCH 023/337] A reference to dateutils Adding date-processing utilites according to [#258](https://github.com/jlevy/the-art-of-command-line/issues/258) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9b854a4..3e2baa0 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,8 @@ Notes: - To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). +- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils). + - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. From 579cc225291754d40d085326fcede4e945007170 Mon Sep 17 00:00:00 2001 From: aneasystone Date: Thu, 13 Aug 2015 15:15:23 +0800 Subject: [PATCH 024/337] Cover inode --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a41294..84afca5 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Notes: - Know `ssh`, and the basics of passwordless authentication, via `ssh-agent`, `ssh-add`, etc. -- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. In addition, learn what an inode is, use `ls -i` or `df -i` to perform a deep exploration. - Basic network management: `ip` or `ifconfig`, `dig`. From 878379f868f49ce50daaa08855d40ac51da47b2d Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 14 Aug 2015 02:59:47 +0200 Subject: [PATCH 025/337] sl: update translation --- README-sl.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/README-sl.md b/README-sl.md index c7e8b87..c056705 100644 --- a/README-sl.md +++ b/README-sl.md @@ -53,7 +53,7 @@ Opombe: - Naučite se o preusmeritvi izpisa in vnosa z uporabo `>` in `<` ter uporabo cevi `|`. Vedite, da `>` prepiše izpis datoteke in `>>` ga pripne. Naučite se o stdout in stderr. -- Naučite se o razširitvi datotek glob z `*` (in mogoče `?` ter `{`...`}`) in citiranje ter razliko med dvojnim `"` in enojnim `'` citatom. (Poglejte več o razširitvi spremenljivk spodaj.) +- Naučite se o razširitvi datotek glob z `*` (in mogoče `?` ter `[`...`]`) in citiranje ter razliko med dvojnim `"` in enojnim `'` citatom. (Poglejte več o razširitvi spremenljivk spodaj.) - Seznanite se z upravljanjem nalog Bash-a: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` itd. @@ -70,11 +70,14 @@ Opombe: ## Vsakodnevna uporaba -- V Bash-u uporabite **Tab** za dokončanje argumentov in **ctrl-r**, da iščete skozi zgodovino ukazov (po pritiski, vtipkajte za iskanje, pritisnite **ctrl-r** s ponavljanjem za kroženje skozi več ujemanj, pritisnite **Enter**, da izvršite najdeni ukaz, ali pritisnite desno puščico, da date trenutni rezultat v trenutno vrstico in omogočite urejanje). +- V Bash-u uporabite **Tab** za dokončanje argumentov ali izpis vseh ukazov, ki so na voljo, in **ctrl-r**, da iščete skozi zgodovino ukazov (po pritiski, vtipkajte za iskanje, pritisnite **ctrl-r** s ponavljanjem za kroženje skozi več ujemanj, pritisnite **Enter**, da izvršite najdeni ukaz, ali pritisnite desno puščico, da date trenutni rezultat v trenutno vrstico in omogočite urejanje). - V Bash-u uporabite **ctrl-w**, da izbrišete zadnjo besedo in **ctrl-u**, da izbrišete vse do začetka vrstice. Uporabite **alt-b** in **alt-f**, da se premikate po besedah, **ctrl-a**, da premaknete kurzor na začetek vrstice, **ctrl-e**, da premaknete kurzor na konec vrstice, **ctrl-k**, da ubijete do začetka vrstice, **ctrl-l**, da počistite zaslon. Glejte `man readline` za vse privzete vezave tipk v Bash-u. Na voljo jih je veliko. Na primer **alt-.** kroži skozi prejšnje argumente in **alt-*** razširi glob. -- Alternativno, če imate radi vi-stilske vezave tipk, uporabite `set -o vi`. + +- Alternativno, če imate radi vi-stilske vezave tipk, uporabite `set -o vi` (in `set -o emacs` za povrnitev nazaj). + +- Za urejanje dolgih ukazov, po nastavitvi vašega urejevalnika (na primer `export EDITOR=vim`), **ctrl-x** **ctrl-e** bo odprlo trenutni ukaz v urejevalniku za več vrstično urejanje. Ali v stilu vi, **escape-v**. - Da vidite nedavne ukaze, `history`. Na voljo je tudi veliko okrajšav, kot je `!$` (zadnji argument) in `!!` zadnji ukaz, čeprav so te pogostokrat enostavno zamenjani s **ctrl-r** in **alt-.**. @@ -115,6 +118,9 @@ Opombe: - V Bash-u bodite pozorni, saj je veliko vrst razširjenih spremenljivk. Preverjanje, če spremenljivka obstaja: `${name:?error message}`. Na primer, če skripta Bash zahteva en argument, samo napišite `input_file=${1:?usage: $0 input_file}`. Aritmetična raširitev: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Obrezovanje nizov: `${var%suffix}` in `${var#prefix}`. Na primer, če je `var=foo.pdf`, potem `echo ${var%.pdf}.txt` izpiše `foo.txt`. +- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v +`cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). + - Izpis ukaza se lahko tretira kot datoteko preko `<(some command)`. Na primer, primerjajte lokalno `/etc/hosts` z oddaljeno: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) @@ -207,7 +213,7 @@ Opombe: - Če kadarkoli potrebujete zapisati tabulator dobesedno v ukazni vrstici v Bash-u (npr. za sortiranje argumenta -t), pritisnite **ctrl-v** **[Tab]** ali zapišite `$'\t'` (slednji je boljši, saj ga lahko kopirate in prilepite). -- Standardna orodja za popravljanje izvorne kode so `diff` in `patch`. Glejte tudi `diffstat` za povzetek statistike diff-a. Bodite pozorni, saj `diff -r` deluje za celotne direktorije. Uporabite `diff -r tree1 tree2 | diffstat` za povzetek sprememb. +- Standardna orodja za popravljanje izvorne kode so `diff` in `patch`. Glejte tudi `diffstat` za povzetek statistike diff-a in `sdiff` za diff drug ob drugem. Bodite pozorni, saj `diff -r` deluje za celotne direktorije. Uporabite `diff -r tree1 tree2 | diffstat` za povzetek sprememb. Uporabite `vimdiff` za primerjanje in urejanje datotek. - Pri binarnih datotekah uporabite `hd` za enostavne heksadecimalne izpise in `bvi` za binarno urejanje. @@ -222,6 +228,8 @@ Opombe: - Da razcepite datoteke na dele, glejte `split` (da razcepite po velikosti) in `csplit` (da razcepite po vzorcu). +- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils). + - Uporabite `zless`, `zmore`, `zcat` in `zgrep` za operiranje na kompresiranih datotekah. @@ -389,6 +397,8 @@ Nekaj primerov sestavljanja ukazov skupaj: - `units`: pretvorba enot in kalkulacije; pretvori furlonge (osmino milje) na štirinajst dni v dvajsetine točke na blink (glejte tudi `/usr/share/units/definitions.units`) +- `apg`: generira naključna gesla + - `7z`: kompresija datoteke visokega razmerja - `ldd`: informacije dinamične knjižnice @@ -475,7 +485,8 @@ To so elementi pomembni *samo* za MacOS. - [awesome-shell](https://github.com/alebcay/awesome-shell): urejan seznam orodij lupine in virov. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) za pisanje boljših skript lupine. -- [shellcheck](https://github.com/koalaman/shellcheck) - lupinska skripta orodja statične analize. V osnovi, lint za bash/sh/zsh. +- [shellcheck](https://github.com/koalaman/shellcheck): lupinska skripta orodja statične analize. V osnovi, lint za bash/sh/zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Na žalost kompleksne podrobnosti, kako pravilno ravnati z imeni datotek v lupinskih skriptah. ## Pogoji uporabe From 385b9b39ce10409045ad8f9b808d2ece180293c9 Mon Sep 17 00:00:00 2001 From: aneasystone Date: Sat, 15 Aug 2015 18:34:04 +0800 Subject: [PATCH 026/337] The easy way to redirect both standard output and standard error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a41294..519b8f0 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ Notes: - Know about "here documents" in Bash, as in `cat <logfile 2>&1`. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add `logfile 2>&1` or `some-command &>logfile`. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add ` Date: Mon, 17 Aug 2015 00:20:16 -0700 Subject: [PATCH 027/337] Cover set -v, set -u, and more on trap. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d7df0ca..bc5e9f8 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,11 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- In Bash scripts, use `set -x` for debugging output. Use strict modes whenever possible. Use `set -e` to abort on errors. Use `set -o pipefail` as well, to be strict about errors (though this topic is a bit subtle). For more involved scripts, also use `trap`. +- In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes whenever possible: Use `set -e` to abort on errors and `set -o pipefail` as to abort within pipes, too (though this topic is a bit subtle). Use `set -u` to detect unset variable usages. For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like so, which will make it detect and abort on common errors and print a message: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see last command above'" ERR +``` - In Bash scripts, subshells (written with parentheses) are convenient ways to group commands. A common example is to temporarily move to a different working directory, e.g. ```bash @@ -118,7 +122,7 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. -- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to +- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: From eb7972cfa97f7ef54e5b7c557c0deb686482fea4 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 17 Aug 2015 00:23:22 -0700 Subject: [PATCH 028/337] Improve last commit. --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bc5e9f8..2705c24 100644 --- a/README.md +++ b/README.md @@ -107,10 +107,10 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes whenever possible: Use `set -e` to abort on errors and `set -o pipefail` as to abort within pipes, too (though this topic is a bit subtle). Use `set -u` to detect unset variable usages. For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like so, which will make it detect and abort on common errors and print a message: +- In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use `set -e` to abort on errors (nonzero exit code). Use `set -u` to detect unset variable usages. Consider `set -o pipefail` too, to on errors within pipes, too (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message: ```bash set -euo pipefail - trap "echo 'error: Script failed: see last command above'" ERR + trap "echo 'error: Script failed: see failed command above'" ERR ``` - In Bash scripts, subshells (written with parentheses) are convenient ways to group commands. A common example is to temporarily move to a different working directory, e.g. @@ -122,8 +122,7 @@ Notes: - In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. -- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to -`cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). +- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). - The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: ```sh From 8c86fcfef9f396408d3538500ec4e6ddf48b8df3 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Tue, 18 Aug 2015 00:53:18 +0200 Subject: [PATCH 029/337] sl: Update translation --- README-sl.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README-sl.md b/README-sl.md index c056705..87bf63d 100644 --- a/README-sl.md +++ b/README-sl.md @@ -107,7 +107,11 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. -- V skriptah Bash uporabite `set -x` za razhroščevanje izpisa. Uporabite striktni način, kadarkoli je možno. Uporabite `set -e`, da prekinete na napakah. Uporabite tudi `set -o pipefail`, da ste striktni glede napak (čeprav je ta tema nekoliko subtilna). Za bolj vključene skripte uporabite tudi `trap`. +- V skriptah Bash uporabite `set -x` (ali varianto `set -v`, ki beleži dnevnik surovega izpisa, vključno z nerazširjenimi spremenljivkami in komentarji) za razhroščevanje izpisa. Uporabite striktni način razen, če imate dober razlog, da ga ne: Uporabite `set -e`, da preskočite napake (neničelna koda izhoda). Uporabite `set -u`, da zaznate uporabo nenastavljenih spremenljivk. Premislite tudi o `set -o pipefail`, da na napakah znotraj pip, (vendar preberite o tem več, če boste to uporabili, saj je ta tema nekoliko subtilna). Za bolj vključene skripte, uporabite tudi `trap` pri EXIT ali ERR. Uporabna navada je tako začeti skripto, kar bo naredilo, da lahko zazna ali prekliče na pogostih napakah in izpiše sporočilo: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` - V skriptah Bash so podlupine (napisane z oklepaji) priročen način za grupiranje ukazov. Skupen primer je začasno premakniti na različen delovni direktorij, npr. ```bash @@ -118,8 +122,7 @@ Opombe: - V Bash-u bodite pozorni, saj je veliko vrst razširjenih spremenljivk. Preverjanje, če spremenljivka obstaja: `${name:?error message}`. Na primer, če skripta Bash zahteva en argument, samo napišite `input_file=${1:?usage: $0 input_file}`. Aritmetična raširitev: `i=$(( (i + 1) % 5 ))`. Sekvence: `{1..10}`. Obrezovanje nizov: `${var%suffix}` in `${var#prefix}`. Na primer, če je `var=foo.pdf`, potem `echo ${var%.pdf}.txt` izpiše `foo.txt`. -- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v -`cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). +- Lupinska razširitev zavitih oklepajev z `{`...`}` lahko pomaga zmanjšati potrebo po ponovnem vpisovanju podobnega teksta in avtomatizira kombiniranje elementov. To je v pomoč v primerih kot je `mv foo.{txt,pdf} some-dir` (ki premakne obe datoteki), `cp somefile{,.bak}` (kar razširi v `cp somefile somefile.bak`) ali `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (kar razširi vse možne kombinacije in ustvari drevo direktorijev). - Izpis ukaza se lahko tretira kot datoteko preko `<(some command)`. Na primer, primerjajte lokalno `/etc/hosts` z oddaljeno: ```sh @@ -128,7 +131,7 @@ Opombe: - Spoznajte t.i. "here" dokumente v Bash-u, kot pri `cat <logfile 2>&1`. Pogosto zagotavlja, da ukaz ne pusti ročaja odprte datoteke za standardni vnos, kar ga veže na terminal v katerem se nahajate, je tudi dobra praksa, da dodate `logfile 2>&1` ali `some-command &>logfile`. Pogosto zagotavlja, da ukaz ne pusti ročaja odprte datoteke za standardni vnos, kar ga veže na terminal v katerem se nahajate, je tudi dobra praksa, da dodate ` Date: Sat, 29 Aug 2015 14:22:12 +0900 Subject: [PATCH 030/337] add Japanese translation --- README-ja.md | 452 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 452 insertions(+) create mode 100644 README-ja.md diff --git a/README-ja.md b/README-ja.md new file mode 100644 index 0000000..bdc35bd --- /dev/null +++ b/README-ja.md @@ -0,0 +1,452 @@ +原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) + +# The Art of Command Line + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [メタ情報](#meta) +- [基本](#basics) +- [日常的に使うもの](#everyday-use) +- [ファイルとデータの処理](#processing-files-and-data) +- [システムのデバッグ](#system-debugging) +- [ワンライナー](#one-liners) +- [目立たないが便利なもの](#obscure-but-useful) +- [さらなるリソース](#more-resources) +- [免責事項](#disclaimer) + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/cowsay.png) + +コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるでしょう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものです。ここでは、Linuxでコマンドラインを使う上で便利だと思ったメモやTipsの数々を挙げてみます。あるものは基礎的ですが、非常に詳しいもの、洗練されたもの、曖昧なものもあります。このページはそんなに長いものではないですが、ここに書いてあることの全てを使ったり思い出すことができれば、かなり詳しくなれるでしょう。 + +ここに書いてあることの多くは、[元々](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)[Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know)に[書かれて](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)いたものが多いですが、私よりももっと優れた人たちがすぐに改善案を出すことができるGithubに置くのがよいのではと思ったのです(訳注 : 原文はGithub上にあります)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストをください!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認してください) + +## メタ情報 + +対象 : + +- このガイドは、初心者向けでも経験者向きでもあります。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしています。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるでしょう。 +- Linux向けに書いています。多くはMacOS(あるいはCygwin)でも使えますが、全部ではありません。 +- インタラクティブなBashを使うことを想定していますが、多くの項目は他のシェルやBashのスクリプトでも使えるでしょう。 + +注意 : + +- 1ページ内に収めるために、内容には暗黙的に書かれていることがあります。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるでしょう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使いましょう。 +- コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。 + +## 基本 + +- 基本的なBashを学ぼう。実際のところ、`man bash`は結構簡単に理解できるしそんなに長くないので、これで一通りのことは分かる。それ以外のシェルもよいが、Bashは強力だし、常に使用可能であるという利点もある(自分のPCに入れてしまったと言ってzshやfishなど*だけ*を学んでしまうと、既存のサーバを触らなくてはならない時などに制約が出てしまう)。 + +- テキストエディタのどれか最低1つに習熟しよう。ターミナル内で適当にものを書くにあたって他に全く代替品がないという点で、理想的にはVim(`vi`)がよいだろう(通常はEmacsや高機能なIDEや最新のかっこいいエディタをメインに使っていたとしても)。 + +- `man`でのドキュメントの読み方を知ろう(知りたがりのために書くと、`man man`でセクション番号が分かる。例えば1は「一般的な」コマンド、5はファイルやそのお作法、8は管理についてといった具合)。`apropos`でmanページを探そう。コマンドによっては実行可能ファイルではなくBashのビルトインコマンドであることを理解し、`help`や`help -d`でヘルプが見られることを知ろう。 + +- `>`や`<`、`|`を使ったパイプによる入出力のリダイレクションを学ぼう。stdout(標準出力)とstderr(標準エラー出力)を学ぼう。 + +- `*`(または`?`や`{`...`}`)を使ったファイルグロブ展開、クォーテーション、ダブルクォート`"`とシングルクォート`'`の違いを学ぼう(詳しくはこの後の変数展開の項を参照)。 + +- `&`、**ctrl-z**、**ctrl-c**、`jobs`、`fg`、`bg`、`kill`など、Bashのジョブ管理について詳しくなろう。 + +- `ssh`について知るとともに、`ssh-agent`や`ssh-add`を使ったパスワードなしの認証の基本について理解しよう。 + +- ファイル管理について。`ls`や`ls -l`(特に、`ls -l`の各列が何を意味するか理解)、`less`、`head`、`tail`、`tail -f`(または`less +F`)、`ln`と`ln -s`(ハードリンクとソフトリンクの違いとそれぞれの利点の理解)、`chown`と`chmod`、`du`(ディスク使用量まとめを簡単に見るなら`du -sk *`)。ファイルシステム管理については、`df`、`mount`、`fdisk`、`mkfs`、`lsblk`。 + +- 基本的なネットワーク管理について。`ip`あるいは`ifconfig`、`dig`。 + +- 正規表現について詳しく知ろう。`grep`や`egrep`の色々なフラグも合わせて。`-i`、`-o`、`-A`、`-B`といったオプションは知っておいて損はない。 + +- `apt-get`、`yum`、`dnf`、`pacman`(ディストリビューションによって違う)といったコマンドでパッケージを探したりインストールする方法を学ぼう。Pythonベースのコマンドラインツールをインストールするのに、`pip`も必要だ(後に出てくるいくつかのコマンドは`pip`でインストールするのが一番簡単)。 + + +## 日常的に使うもの + +- Bashでは、引数を補完するのに**タブ**を使い、コマンド履歴から検索するのに**ctrl-r**を使う。 + +- Bashでは、最後の単語を削除するのには**ctrl-w**、行頭まで全て削除するには**ctrl-u**を使う。単語ごとに移動するには**alt-b**または**alt-f**、行末まで削除するには**ctrl-k**、画面のクリアは**ctrl-l**。Bashにおけるデフォルトのキー割り当てを全て見るには``man readline`を参照。たくさん出てくる。例えば、**alt-.**は前の引数を順番に表示し、**alt-***はグロブを展開する。 + +- vi風のキー割り当てが好きなら、`set -o vi`を実行しよう。 + +- 最近実行したコマンドを確認するなら`history`。**ctrl-r**や**alt-.**で用は足りるだろうが、`!$`(直前の引数)や`!!`(直前のコマンド)といった省略形もたくさんある。 + +- 前のワーキングディレクトリに戻るなら`cd -` + +- 途中までコマンドを入力したけれど心変わりした時は、**alt-#**を打つと行頭に`#`が挿入され、コメントとして入力される(**ctrl-a**、**#**、**enter**でも同じ)。これは後でコマンド履歴から検索できる。 + +- `xargs`(または`parallel`)を使おう。非常に強力。行ごとにいくつのアイテムを実行するか(`-L`)や、並列度(`-P`)も制御できる。正しく実行されるか定かでないなら、まず`xargs echo`してみればよい。`-I{}`も便利。例えば以下の通り。 + + ```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p`はプロセスツリーを表示するのに便利。 + +- `pgrep`や`pkill`で、プロセス名で検索したりシグナルを送れる(`-f`も便利)。 + +- プロセスに遅れる色々なシグナルを知っておこう。例えば、プロセスをサスペンドするには`kill -STOP [pid]`を使う。全種類見るなら、`man 7 signal`。 + +- バックグラウンドプロセスをずっと実行し続けたいなら`nohup`あるいは`disown`を使おう。 + +- `netstat -lntp`や`ss -plat`で、どんなプロセスがリッスンしているか確認しよう(UDPなら`-u`を付ける)。 + +- 開かれているソケットやファイルを見るには`lsof`も参照。 + +- Bashスクリプトでは、`set -x`でデバッグ出力を出せる。可能なら厳格モードを使い、エラーが起きたら強制終了するよう`set -e`する。パイプのエラーも厳格に扱うために`set -o pipefail`も使おう(これはちょっと微妙かも)。より複雑なスクリプトなら、`trap`も使おう。 + +- Bashスクリプトでは、コマンドのグループを作るのにサブシェル(丸括弧で囲まれた部分)が便利。一時的にワーキングディレクトリを移動するというよくある例。 + +```bash + # カレントディレクトリで何か実行 + (cd /some/other/dir && other-command) + # 元のディレクトリで作業続行 +``` + +- Bashでは、たくさんの変数展開の種類があることを覚えておこう。変数が存在するかチェックするなら、`${name:?error message}`。例えば、Bashスクリプトが1つの引数を取る必要があるなら、`input_file=${1:?usage: $0 input_file}`とだけ書けばよい。算術式の展開は、`i=$(( (i + 1) % 5 ))`。シーケンスは`{1..10}`。文字列のトリミングは`${var%suffix}`と`${var#prefix}`。例えば`var=foo.pdf`の時、`echo ${var%.pdf}.txt`とすると`foo.txt`が出力に。 + +- コマンドの出力を`<(some command)`のようにしてファイルのように扱える。例えば、ローカルとリモートのの`/etc/hosts`を比較するなら以下のようになる。 + +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- `cat <logfile 2>&1`で標準出力と標準エラー出力の両方をリダイレクトできる。コマンドが標準入力に対してファイルハンドルを開きっぱなしにせず、ログインしているターミナルにひもづけておくため、`; ::Any-NFC; ' < input.txt > output.txt +``` + +- ファイルを分割するなら`split`(サイズで分割)と`csplit`(パターンで分割)。 + +- 圧縮ファイルの操作は`zless`、`zmore`、`zcat`、`zgrep`。 + +## システムのデバッグ + +- Webのデバッグなら`curl`や`curl -l`が便利で、`wget`も同様、よりモダンなのは[`httpie`](https://github.com/jakubroztocil/httpie)。 + +- ディスクやCPU、ネットワークのステータスを知るには`iostat`、`netstat`、`top`(あるいは`htop`の方がよい)、(一番は)`dstat`。システムで何が起きているのか素早く知るにはよい。 + +- 更に詳しいシステムの全体像を見るには、[`glances`](https://github.com/nicolargo/glances)を使おう。ひとつのターミナル内で、いくつかのシステムレベルの統計情報を表示してくれる。複数のサブシステムを素早くチェックするのに非常に便利。 + +- メモリのステータスを知るには、`free`あるいは`vmstat`を実行し、その出力の意味を理解しよう。特に、"cached"の値はLinuxカーネルにファイルキャッシュとして保持されているメモリ量であり、"free"の値を見る際に考慮すべきであることに注意しよう。 + +- Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。 + +- 改良版tracerouteとして`mtr`を使ってネットワークの問題を調査しよう。 + +- ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 + +- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、`iftop`あるいは`nethogs`を試そう。 + +- `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 + +- より確実なネットワークのデバッグは`wireshark`、`tshark`、`ngrep`。 + +- `strace`と`ltrace`について知っておこう。プログラムの実行に失敗したりハングしたりクラッシュしたりして、その理由が分からない、あるいはパフォーマンスに関する一般的情報を知りたいなら、このツールが役立つはずだ。プロファイリングのオプション(`-c`)や起動中のプロセスにアタッチする機能(`-p`)も覚えておこう。 + +- 共有ライブラリをチェックするなら`ldd`を覚えておこう。 + +- 起動中のプロセスに`gdb`で接続し、そのスタックトレースを取る方法を知ろう。 + +- `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps`。 + +- 過去に何か問題が起きたことの原因を探るなら、`sar`がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 + +- さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux))、 +[`sysdig`](https://github.com/draios/sysdig)。 + +- どのディストリビューションを使っているか確認しよう。多くのディストリビューションでは`lsb_release -a` + +- 何かいつもと違うおかしなこと(大抵ハードウェアかドライバ関連の問題だ)が起きていたら、`dmesg`を実行しよう。 + +## ワンライナー + +コマンドをまとめて使う例をいくつか。 + +- `sort`や`uniq`を使ってテキストファイルの共通部分、結合、差異を求める時に特に便利なのが以下のやり方。`a`と`b`はそれぞれ内容に重複のないテキストファイルとする。この方法は高速で、数GB程度までの任意のファイルサイズで動作する(`/tmp`が小さなルートパーティションにある場合は`-T`オプションをつける必要があるが、ソートはメモリ内で行われるとは限らない)。上述の`LC_ALL`と`sort`の`-u`オプションも参照のこと。 + +```sh + cat a b | sort | uniq > c # cはaとbの和集合 + cat a b | sort | uniq -d > c # cはaとbの共通部分 + cat a b b | sort | uniq -u > c # cはaとbの差異 +``` + +- コンフィグが含まれている`/sys`や`/proc`や`/etc/`のようなディレクトリ内の全てのファイルの中身全部を確認するには`grep . *`を使おう。 + +- テキストファイルの3列目を全て足し合わせるには以下で(Pythonで同じことをやるに比べて3倍速く3分の1の長さで書ける)。 + +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- ファイルツリーのサイズやデータを確認したいなら、以下は再帰的な`ls -l`と同じだが`ls -lR`より見やすい。 + +```sh + find . -type f -ls +``` + +- 事情が許すなら`xargs`や`parallel`を使おう。行あたりいくつのアイテムを実行するか(`-L`)や並列度(`-P`)は制御できるのにも注意。正しく使えているか心配な時には、xargs echoをまずやってみよう。また、`-I{}`も便利だ。以下の例をみてみよう。 + +```sh + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- Webサーバのログのようなテキストファイルがあり、各行には例えばURLの中に出てくる`acct_id`のような特定の値が現れるとしよう。`acct_id`が何回リクエストされているかを集計するには、 + +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- このドキュメントからランダムに項目を抜き出すには以下の関数を実行しよう(Markdownをパースし、アイテムを抽出する)。 + +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + +## 目立たないが便利なもの + +- `expr`: 算術演算、論理演算、または正規表現の評価を実行 + +- `m4`: シンプルなマクロプロセッサ + +- `yes`: 文字列をたくさん表示 + +- `cal`: いい感じのカレンダー + +- `env`: コマンドを実行(スクリプト内で重宝する) + +- `printenv`: 環境変数を表示する(デバッグやスクリプト内での使用に便利) + +- `look`: 文字列で始まる英単語(またはファイル内の行)を見つける + +- `cut `、 `paste`、 `join`: データの操作 + +- `fmt`: テキストの段落をフォーマットする + +- `pr`: テキストをページとカラムにフォーマットする + +- `fold`: テキストの行を分割 + +- `column`: テキストをカラムあるいはテーブルにフォーマット + +- `expand` と `unexpand`: タブとスペースの相互変換 + +- `nl`: 行数を表示 + +- `seq`: 数字を表示 + +- `bc`: 計算機 + +- `factor`: 整数を因数分解 + +- `gpg`: 暗号化とファイルのサイニング + +- `toe`: terminfoのエントリのテーブルを表示 + +- `nc`: ネットワークのデバッグとデータ転送 + +- `socat`: ソケットリレーとTCPポートのフォワーダ(`netcat`と同等) + +- `slurm`: ネットワークトラフィックの可視化 + +- `dd`: データをファイルあるいはデバイス間で移動 + +- `file`: ファイルの種類を特定 + +- `tree`: ディレクトリとサブディレクトリをツリーで表示。`ls`に似ているが再帰的に動く + +- `stat`: ファイルの情報 + +- `tac`: ファイルを逆から表示 + +- `shuf`: ファイルからランダムに選んだ行を表示 + +- `comm`: ソート済みファイルの行を比較 + +- `pv`: パイプ経由でデータの進行状況をモニタリング + +- `hd` および `bvi`: バイナリファイルのダンプと編集 + +- `strings`: バイナリファイルからテキストを抽出 + +- `tr`: 文字の置き換えと操作 + +- `iconv` あるいは `uconv`: 文字エンコーディングの変換 + +- `split ` と `csplit`: ファイルを分割 + +- `units`: 単位の変換と計算。2週間あたりのハロン(訳注 : 長さの単位)からまばたきごとのトゥウィップまで( `/usr/share/units/definitions.units`も参照のこと) + +- `7z`: 圧縮率の高いファイル圧縮 + +- `ldd`: 動的ライブラリの情報 + +- `nm`: オブジェクトファイルからシンボルを表示 + +- `ab`: Webサーバのベンチーマーク + +- `strace`: システムコールのデバッグ + +- `mtr`: ネットワークデバッグのためのより高機能なtraceroute + +- `cssh`: ビジュアルな並列シェル + +- `rsync`: ファイルやフォルダをSSH経由で同期 + +- `wireshark` と `tshark`: パケットキャプチャとネットワークデバッギング + +- `ngrep`: ネットワーク層のgrep + +- `host` と `dig`: DNS名前解決 + +- `lsof`:プロセスのファイルディスクリプタとソケット情報 + +- `dstat`: 便利なシステム情報 + +- [`glances`](https://github.com/nicolargo/glances): 高レベルに複数のサブシステムの概要を把握 + +- `iostat`: CPUとディスクの使用状況 + +- `htop`: topの改良版 + +- `last`: ログイン履歴 + +- `w`: 誰がログインしているか + +- `id`: ユーザやグループの情報 + +- `sar`: システム統計情報の履歴 + +- `iftop` または `nethogs`: ソケットあるいはプロセスごとのネットワーク使用量 + +- `ss`: ソケットの統計情報 + +- `dmesg`: 起動時とシステムのエラーメッセージ + +- `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 + +- `lsb_release`: Linuxディストリビューション情報 + +- `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー + +- `lshw` と `lspci`: RAIDやグラフィックなどを含めたハードウェア情報 + +- `fortune`、 `ddate`、`sl`: んー、あー、これは蒸気機関車やZippyの引用句が「便利」だと思うかどうかによる + +## さらなるリソース + +- [awesome-shell](https://github.com/alebcay/awesome-shell): シェルのツールやリソースのまとめ +- よりよいシェルスクリプトを書くには[Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) + +## 免責事項 + +ごく一部の例外はありますが、コードは誰でも読めるように書かれています。力には責任が伴います。Bashで*できる*からといって、そうすべき必要があるという意味ではありません! ;) + +## ライセンス + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +このドキュメントは[Creative Commons Attribution-ShareAlike 4.0 International Licene](http://creativecommons.org/licenses/by-sa/4.0/)でライセンスされます。 From 57f3609cc3234bf5b7c969b7b97626417e3d3901 Mon Sep 17 00:00:00 2001 From: doublemarket Date: Sat, 29 Aug 2015 14:31:39 +0900 Subject: [PATCH 031/337] add links to other languages --- README-ja.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index bdc35bd..ce539c9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,4 +1,6 @@ -原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) +[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] + +原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) # The Art of Command Line From 48c5e178bd87792300dce0e88e0fe16a58143cb2 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Sun, 13 Sep 2015 09:19:01 +0300 Subject: [PATCH 032/337] es: updating translation 'daily use' --- README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index e212b80..e4b348b 100644 --- a/README-es.md +++ b/README-es.md @@ -53,7 +53,7 @@ Notas: - Aprende sobre redirección de salida `>`, entrada `<` y pipes utilizando `|`. Conozca que `>` sobrescribe el archivo de salida y `>>` añade. Aprende sobre stdout y stderr. -- Aprende sobre expansión de archivos glob con `*` (y tal vez `?` y `{`...`}`) y quoting y la diferencia entre comillas dobles `"` y simples `'`. (Ver más en expansión de variables más abajo.) +- Aprende sobre expansión de archivos glob con `*` (y tal vez `?` y `[`...`]`) y quoting y la diferencia entre comillas dobles `"` y simples `'`. (Ver más en expansión de variables más abajo.) - Familiarízate con la administración de trabajo en Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. @@ -70,7 +70,7 @@ Notas: ## De uso diario -- En Bash, se usa **Tab** para completar los argumentos y **ctrl-r** para buscar a través del historial de comandos. +- En Bash, se usa **Tab** para completar los argumentos o lista todos los comandos disponibles y **ctrl-r** para buscar a través del historial de comandos (despues de presionar, escribe la búsqueda, presiona **ctrl-r** repetidamente para hacer un ciclo a través de más coincidencias, presiona **Enter** para ejecurar el comando encontrado, o presiona la flecha derecha para poner el resultado en la línea actual y editar). - En Bash, se usa **ctrl-w** para borrar la última palabra, y **ctrl-u** para borrar todo hacia atrás hasta el inicio de la línea. Se usa **alt-b** y **alt-f** para moverse entre palabras, **ctrl-a** para mover el cursor al principio de la línea, **ctrl-e** para mover el cursor al final de la línea, **ctrl-k** para eliminar hasta el final de la línea, **ctrl-l** para limpiar la pantalla. Ver `man readline` para todos los atajos de teclado por defecto en Bash. Son una gran cantidad. Por ejemplo **alt-.** realiza un ciclo a través de los comandos previos, y **alt-*** expande un glob. From b7a8898a8ec2544bf1017c21e560d76c61ab7ccd Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Sun, 13 Sep 2015 10:29:36 +0300 Subject: [PATCH 033/337] es: update until line 110. --- README-es.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index e4b348b..b4d4fdd 100644 --- a/README-es.md +++ b/README-es.md @@ -74,7 +74,9 @@ Notas: - En Bash, se usa **ctrl-w** para borrar la última palabra, y **ctrl-u** para borrar todo hacia atrás hasta el inicio de la línea. Se usa **alt-b** y **alt-f** para moverse entre palabras, **ctrl-a** para mover el cursor al principio de la línea, **ctrl-e** para mover el cursor al final de la línea, **ctrl-k** para eliminar hasta el final de la línea, **ctrl-l** para limpiar la pantalla. Ver `man readline` para todos los atajos de teclado por defecto en Bash. Son una gran cantidad. Por ejemplo **alt-.** realiza un ciclo a través de los comandos previos, y **alt-*** expande un glob. -- Alternativamente, si amas los atajos de teclado vi-style, usa `set -o vi`. +- Alternativamente, si amas los atajos de teclado vi-style, usa `set -o vi`. (y `set -o emacs` para regresar a la anterior). + +- Para editar largos comandos, después de configurar to editor (por ejemplo `export EDITOR=vim`), **ctrl-x** **ctrl-e** se abrirá el comando actual en un editor para editar multiples líneas. O en estilo vi, **escape-v**. - Para ver los últimos comandos, `history`. También existen abreviaciones, tales como, `!$` (último argumento) y `!!` último comando, aunque son fácilmente remplazados con **ctrl-r** y **alt-.**. @@ -104,7 +106,11 @@ Notas: - Usa `alias` para crear atajos para comandos comúnmente usados. Por ejemplo, `alias ll="las -latr"` crea el alias `ll` -- En Bash scripts, usa `set -x` para depurar la salida. Usa el modo estricto cuando se posible. Usa `set -e` para abortar en caso de errores. Usa `set -o pipefail` también, para ser estrictos sobre los errores (aunque este tema es un poco delicado). Para scripts más complejos, usa también `trap`. +- En Bash scripts, usa `set -x` (o su variantes `set -v`, que registra las entradas sin procesar, incluyendo variables sin expander y comantarios) para depurar la salida. Usa el modo estricto al menos que tengas una buena razón para no hacerlo: Usa `set -e` para abortar en caso de errores (códigos de salida distintos a cero). Usa `set -u` para detectar uso de variables no definidas. Considera `set -o pipefail` también, para los errores con pipes, también (estudiar mas sobre este como un tema delicado). Para scripts más complejos, usa también `trap`. en EXIT o ERR. Un hábito útil es para comenzar un script como este, el cual detectará y abortará con errores comunes e imprimirá un mensaje: +```bash + set -euo pipefail + trap "echo 'error: Falló del Script: ver arriba comando que falló'" ERR +``` - En Bash scripts, subshells (escritos con paréntesis) son maneras convenientes para agrupar los comandos. Un ejemplo común es temporalmente moverse hacia un directorio de trabajo diferente, Ej. ```bash From 901c4e23bc3c97cca758ce3f8830a7ddf966c708 Mon Sep 17 00:00:00 2001 From: Kit Chan Date: Sun, 20 Sep 2015 22:54:58 -0700 Subject: [PATCH 034/337] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2705c24..ca0edd5 100644 --- a/README.md +++ b/README.md @@ -376,6 +376,10 @@ A few examples of piecing together commands: - `time`: execute and time a command +- `lockfile`: create semaphore file that can only be removed by `rm -f` + +- `logrotate`: rotate, compress and mail logs. + - `watch`: run a command repeatedly, showing results and/or highlighting changes - `tac`: print files in reverse From baa0b9c731f7138c1fcdb9fe8eec368e4f48f895 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:43:04 -0700 Subject: [PATCH 035/337] Tweak language for #273. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f795f0c..9c9af7c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Notes: - Know `ssh`, and the basics of passwordless authentication, via `ssh-agent`, `ssh-add`, etc. -- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. In addition, learn what an inode is, use `ls -i` or `df -i` to perform a deep exploration. +- Basic file management: `ls` and `ls -l` (in particular, learn what every column in `ls -l` means), `less`, `head`, `tail` and `tail -f` (or even better, `less +F`), `ln` and `ln -s` (learn the differences and advantages of hard versus soft links), `chown`, `chmod`, `du` (for a quick summary of disk usage: `du -hs *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Learn what an inode is (`ls -i` or `df -i`). - Basic network management: `ip` or `ifconfig`, `dig`. From 1d44566903252c2cf1da7b9c66d83e74061bdeb3 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:46:38 -0700 Subject: [PATCH 036/337] Updates for #181. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 284c62b..7c67397 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ Notes: - For JSON, use [`jq`](http://stedolan.github.io/jq/). -- For Yaml, use `shyaml`. +- For YAML, use [`shyaml`](https://github.com/0k/shyaml). - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. From 9cb359aa94c74cfcd1ca77c772136ff36de01780 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:51:59 -0700 Subject: [PATCH 037/337] ru: Heading typo. Fixes #168. --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 46b6401..61a28bb 100644 --- a/README-ru.md +++ b/README-ru.md @@ -12,7 +12,7 @@ - [Системный дебаггинг](#Системный-дебаггинг) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [MacOS X only](#Macos-x-only) +- [MacOS X only](#macos-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) From bcb9b06a0c0cfaf02b110bd8bbc620c21f9e374d Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 22 Sep 2015 19:57:04 -0700 Subject: [PATCH 038/337] Updates to #205. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c67397..64f4bc6 100644 --- a/README.md +++ b/README.md @@ -137,8 +137,6 @@ Notes: - Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is `dtach`. -- Use [`mosh`](https://mosh.mit.edu/) Mobile Shell to wrap your ssh sessions over a stateless UDP so that you never have to manually reconnect when on the road, or when your internet connection gets temporarilly dropped. - - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. - It can be useful to make a few optimizations to your ssh configuration; for example, this `~/.ssh/config` contains settings to avoid dropped connections in certain network environments, uses compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: @@ -154,6 +152,8 @@ Notes: - A few other options relevant to ssh are security sensitive and should be enabled with care, e.g. per subnet or host or in trusted networks: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Consider [`mosh`](https://mosh.mit.edu/) an an alternative to ssh that uses UDP, avoiding dropped connections and adding convenience on the road (requires server-side setup). + - To get the permissions on a file in octal form, which is useful for system configuration but not available in `ls` and easy to bungle, use something like ```sh stat -c '%A %a %n' /etc/timezone From ac86b5e586f71ff2ff3750f56112743be31bb700 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 23 Sep 2015 12:40:35 +0200 Subject: [PATCH 039/337] sl: update Slovenian translation --- README-sl.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README-sl.md b/README-sl.md index 87bf63d..6decdb8 100644 --- a/README-sl.md +++ b/README-sl.md @@ -59,7 +59,7 @@ Opombe: - Spoznajte `ssh` in osnove avtentikacije brez gesla, preko `ssh-agent`, `ssh-add` itd. -- Osnovno upravljanje datotek: `ls` in `ls -l` (še posebej se naučite, kaj vsak stolpec v `ls -l` pomeni), `less`, `head`, `tail` in `tail -f` (ali celo boljše, `less +F`), `ln` in `ln -s` (naučite se razlike in prednosti trdih in mehkih povezav), `chown`, `chmod`, `du` (za hiter povzetek uporabe diska: `du -hs *`). Za upravljanje datotečnega sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Osnovno upravljanje datotek: `ls` in `ls -l` (še posebej se naučite, kaj vsak stolpec v `ls -l` pomeni), `less`, `head`, `tail` in `tail -f` (ali celo boljše, `less +F`), `ln` in `ln -s` (naučite se razlike in prednosti trdih in mehkih povezav), `chown`, `chmod`, `du` (za hiter povzetek uporabe diska: `du -hs *`). Za upravljanje datotečnega sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Naučite se, kaj je inode (`ls -i` or `df -i`). - Osnovno upravljanje omrežja: `ip` or `ifconfig`, `dig`. @@ -135,7 +135,7 @@ Opombe: - Uporabite `man ascii` za dobro tabelo ASCII s heksadecimalnimi in decimalnimi vrednostmi. Za splošne informacije enkodiranja so priročni `man unicode`, `man utf-8` in `man latin1`. -- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. Bolj minimalna alternativa za samo obstojnost sej je `dtach`. +- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. `byobu` lahko poveča t.i. screen ali tmux s ponujanjem več informacij in enostavnejšim upravljanjem. Bolj minimalna alternativa za samo obstojnost sej je `dtach`. - V ssh je poznavanje, kako usmeriti tunel z `-L` ali `-D` (in občasno `-R`) je uporaben, npr. za dostopanje do spletnih strani iz oddaljenega strežnika. @@ -152,6 +152,8 @@ Opombe: - Nekaj ostalih opcij relevantnih za ssh je varnostno občutljivih in bi morale biti omogočene s pazljivostjo, npr. na podomrežju ali gostitelju ali v zaupljivih omrežjih: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Premislite o [`mosh`](https://mosh.mit.edu/) kot alternativi za ssh, ki uporablja UDP, da se izognete padlim povezavam in dodate priročnost, ko ste na poti (zahteva nastavitev strežniške strani). + - Da dobite pravice na datoteki v osmiškem zapisu, ki je uporaben za nastavitve sistema vendar ni na voljo pri `ls` in enostaven za mešanje, uporabite nekaj takega kot je ```sh stat -c '%A %a %n' /etc/timezone @@ -181,6 +183,8 @@ Opombe: - Za JSON, use [`jq`](http://stedolan.github.io/jq/). +- Za YAML, uporabite [`shyaml`]((https://github.com/0k/shyaml). + - Za Excel ali CSV datoteke, [csvkit](https://github.com/onyxfish/csvkit) ponuja `in2csv`, `csvcut`, `csvjoin`, `csvgrep` itd. - Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) je bistven za druga AWS-povezana opravila. @@ -376,6 +380,10 @@ Nekaj primerov sestavljanja ukazov skupaj: - `time`: izvrši in da ukaz v čas +- `lockfile`: ustvari semaforno datoteko, ki je lahko odstranjena samo z `rm -f` + +- `logrotate`: rotiranje, kompresiranje in pošiljanje dnevnikov po e-pošti. + - `watch`: večkrat požene ukaz in prikazuje rezultate in/ali poudari spremembe - `tac`: izpiše datoteke v obratnem redu From 4b5e02023b1d4c119cf0d106658e582fe7834314 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 24 Sep 2015 14:22:12 -0700 Subject: [PATCH 040/337] Add saws. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 64f4bc6..945748b 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,7 @@ Notes: - For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. -- For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) is essential for other AWS-related tasks. +- For Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) is faster. Amazon's [`aws`](https://github.com/aws/aws-cli) and the improved [`saws`](https://github.com/donnemartin/saws) are essential for other AWS-related tasks. - Know about `sort` and `uniq`, including uniq's `-u` and `-d` options -- see one-liners below. See also `comm`. From 8493487551acbbcd69ad698b2a974fc184fa3048 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 25 Sep 2015 01:50:13 +0200 Subject: [PATCH 041/337] sl: update translation --- README-sl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-sl.md b/README-sl.md index 6decdb8..6520b89 100644 --- a/README-sl.md +++ b/README-sl.md @@ -187,7 +187,7 @@ Opombe: - Za Excel ali CSV datoteke, [csvkit](https://github.com/onyxfish/csvkit) ponuja `in2csv`, `csvcut`, `csvjoin`, `csvgrep` itd. -- Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) je bistven za druga AWS-povezana opravila. +- Za Amazon S3 je priročen [`s3cmd`](https://github.com/s3tools/s3cmd) in [`s4cmd`](https://github.com/bloomreach/s4cmd) je hitrejši. Amazon-ov [`aws`](https://github.com/aws/aws-cli) in izboljšan [`saws`](https://github.com/donnemartin/saws) sta bistvena za druga AWS-povezana opravila. - Naučite se o `sort` in `uniq` vključno z uniq-ovima opcijama `-u` in `-d` -- glejte spodaj sekcijo v eni vrstici. Glejte tudi `comm`. From f5b99f85f7ae3391ceff751be56153c5e5b2f1f0 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Wed, 30 Sep 2015 01:29:11 -0700 Subject: [PATCH 042/337] Track and ackowledge authors. This is my best effort at tracking roles from GitHub history, and assembling them with a new script, "ghizmo assemble-authors". Please let me know if you've been missed! --- AUTHORS.md | 87 ++++++++++++++++++++++++++++++++++++++++++ README.md | 5 ++- admin/authors-info.yml | 32 ++++++++++++++++ 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 AUTHORS.md create mode 100644 admin/authors-info.yml diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 0000000..9e8450f --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,87 @@ +# Authors + +This work is the result of the effort of many people around the world. +Contributors are listed in alphabetical order by GitHub id. +This file is maintained only in English. + + +* [Guo Chong (Armour)](https://github.com/Armour) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour)] — _translator (zh)_ +* [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf)] — _translator (es)_ +* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux)] +* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges)] +* [Vincent Wong (EaterOA)](https://github.com/EaterOA) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA)] +* [Hunter-Github](https://github.com/Hunter-Github) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github)] +* [曾楚杰 (Psycho7)](https://github.com/Psycho7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7)] — _translator and maintainer (zh)_ +* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL)] +* [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436)] — _translator (ko)_ +* [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty)] +* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra)] +* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun)] — _translator and maintainer (ko)_ +* [Antonio Ossa (aaossa)](https://github.com/aaossa) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa)] — _translator (es)_ +* [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan)] +* [Semir Patel (analogue)](https://github.com/analogue) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue)] +* [Desmond Stonie (aneasystone)](https://github.com/aneasystone) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone)] +* [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth)] +* [Bryce J. (bj1)](https://github.com/bj1) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1)] +* [Arturo Fernandez (bsnux)](https://github.com/bsnux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux)] +* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex)] +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo)] — _translator and maintainer (es)_ +* [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl)] +* [Corey "See More" Richardson (cmr)](https://github.com/cmr) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr)] +* [Chris Rhodes (crr0004)](https://github.com/crr0004) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004)] +* [Chelsea Voss (csvoss)](https://github.com/csvoss) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss)] +* [Daniel t. (danasmera)](https://github.com/danasmera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera)] +* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi)] +* [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] +* [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] +* [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] +* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] +* [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ +* [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] +* [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ +* [grossws (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] +* [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] +* [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ +* [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] +* [Alan Brogan (jalanb)](https://github.com/jalanb) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb)] +* [Joshua Levy (jlevy)](https://github.com/jlevy) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy)] — _original author and maintainer_ +* [Jesse Sightler (jsight)](https://github.com/jsight) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight)] +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub)] +* [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit)] +* [Colin Chan (kalgynirae)](https://github.com/kalgynirae) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae)] +* [Michail Kargakis (kargakis)](https://github.com/kargakis) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis)] +* [kstn (kastian)](https://github.com/kastian) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian)] — _translator (ru)_ +* [Kesu J (kesu)](https://github.com/kesu) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu)] +* [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13)] +* [Pavel Zhukov (landgraf)](https://github.com/landgraf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf)] +* [Matjaž Lipuš (matjaz)](https://github.com/matjaz) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz)] +* [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera)] +* [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7)] +* [Harry Moreno (morenoh149)](https://github.com/morenoh149) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149)] +* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques)] — _translator and maintainer (pt)_ +* [Oleg Berman (olegberman)](https://github.com/olegberman) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman)] — _translator and maintainer (ru)_ +* [osmero](https://github.com/osmero) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero)] — _translator (ru)_ +* [Serg Petrov (p12se)](https://github.com/p12se) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se)] +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot)] — _translator and maintainer (sl)_ +* [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane)] +* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808)] +* [Kit Chan (shukitchan)](https://github.com/shukitchan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan)] +* [Simarpreet Singh (simar7)](https://github.com/simar7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7)] +* [spmbt (spmbt)](https://github.com/spmbt) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt)] — _translator (ru)_ +* [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam)] — _translator (zh)_ +* [taxusyew](https://github.com/taxusyew) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew)] +* [Sungjin Kang (ujuc)](https://github.com/ujuc) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc)] — _translator (ko)_ +* [Joe Block (unixorn)](https://github.com/unixorn) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn)] +* [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva)] — _translator (pt)_ +* [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx)] +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro)] +* [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang)] — _translator (zh)_ +* [Alex F. (youmee)](https://github.com/youmee) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee)] +* [Zack Piper (zackp30)](https://github.com/zackp30) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30)] +* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd)] + +If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. + + + +(This file was auto-generated by [ghizmo assemble-authors](https://github.com/jlevy/ghizmo).) \ No newline at end of file diff --git a/README.md b/README.md index 945748b..9df04bb 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,14 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that I've found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot. +Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that we've found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot. +This work is the result of [many authors and translators](AUTHORS.md). Much of this [originally](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [appeared](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) on [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -but given the interest there, it seems it's worth using Github, where people more talented than I can readily suggest improvements. If you see an error or something that could be better, please submit an issue or PR! (Of course please review the meta section and existing PRs/issues first.) +but given the interest there, it seemed worth using GitHub, where people more talented than the original author could readily suggest improvements. If you see an error or something that could be better, please submit an issue or PR! (Of course please review the meta section and existing PRs/issues first.) ## Meta diff --git a/admin/authors-info.yml b/admin/authors-info.yml new file mode 100644 index 0000000..a7b4a63 --- /dev/null +++ b/admin/authors-info.yml @@ -0,0 +1,32 @@ +# This file is used to configure the "ghizmo assemble-authors" command. + +header: | + This work is the result of the effort of many people around the world. + Contributors are listed in alphabetical order by GitHub id. + This file is maintained only in English. + +footer: | + If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. + +roles: + jlevy: original author and maintainer + ceoaliongroo: translator and maintainer (es) + aaossa: translator (es) + BishopWolf: translator (es) + Ungsik-Yun: translator and maintainer (ko) + Snowcat8436: translator (ko) + ujuc: translator (ko) + hunkim: translator (ko) + niltonvasques : translator and maintainer (pt) + vcvpaiva: translator (pt) + olegberman: translator and maintainer (ru) + spmbt: translator (ru) + osmero: translator (ru) + grigory-rechistov: translator (ru) + kastian: translator (ru) + githubashto: translator (ru) + peterkokot: translator and maintainer (sl) + Psycho7: translator and maintainer (zh) + xuchunyang: translator (zh) + stevenlordiam: translator (zh) + Armour: translator (zh) From 3c35319413c2e45b8f4af6b2a94b98f569964172 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 1 Oct 2015 09:37:03 -0700 Subject: [PATCH 043/337] ja: Add links and new translator/maintainer. Following #283. --- AUTHORS.md | 3 ++- README-es.md | 4 +++- README-ja.md | 4 +++- README-ko.md | 4 +++- README-pt.md | 4 +++- README-ru.md | 4 +++- README-sl.md | 4 +++- README-zh.md | 4 +++- README.md | 4 +++- admin/authors-info.yml | 1 + 10 files changed, 27 insertions(+), 9 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 9e8450f..b3cdfe9 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -35,11 +35,12 @@ This file is maintained only in English. * [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] * [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] +* [doublemarket (doublemarket)](https://github.com/doublemarket) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket)] — _translator and maintainer (ja)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] * [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ * [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ -* [grossws (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] +* [Konstantin Gribov (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] * [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] * [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ * [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] diff --git a/README-es.md b/README-es.md index e212b80..ac0e7ba 100644 --- a/README-es.md +++ b/README-es.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # El Arte del Terminal diff --git a/README-ja.md b/README-ja.md index ce539c9..2e5a31f 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index aec2dd1..d576ce3 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 70e79b4..fc066e0 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 61a28bb..644896a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 6520b89..be6d3c6 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # Umetnost ukazne vrstice diff --git a/README-zh.md b/README-zh.md index e125835..b595d98 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # 命令行的艺术 diff --git a/README.md b/README.md index 9df04bb..29271c3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +] # The Art of Command Line diff --git a/admin/authors-info.yml b/admin/authors-info.yml index a7b4a63..8ef5bef 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -13,6 +13,7 @@ roles: ceoaliongroo: translator and maintainer (es) aaossa: translator (es) BishopWolf: translator (es) + doublemarket: translator and maintainer (ja) Ungsik-Yun: translator and maintainer (ko) Snowcat8436: translator (ko) ujuc: translator (ko) From efd60f49e775a4debb675e93212d5ba9d79258e5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 3 Oct 2015 14:16:06 -0700 Subject: [PATCH 044/337] A few fixups to author tracking. Sort case-insensitively. Track commits/issues. Drop gitter-badger robot. Improves #289. --- AUTHORS.md | 155 +++++++++++++++++++++-------------------- admin/authors-info.yml | 9 ++- 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index b3cdfe9..17819c4 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,85 +1,86 @@ # Authors This work is the result of the effort of many people around the world. -Contributors are listed in alphabetical order by GitHub id. -This file is maintained only in English. +Contributors are listed in alphabetical order by GitHub login. -* [Guo Chong (Armour)](https://github.com/Armour) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour)] — _translator (zh)_ -* [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf)] — _translator (es)_ -* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux)] -* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges)] -* [Vincent Wong (EaterOA)](https://github.com/EaterOA) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA)] -* [Hunter-Github](https://github.com/Hunter-Github) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github)] -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7)] — _translator and maintainer (zh)_ -* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL)] -* [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436)] — _translator (ko)_ -* [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty)] -* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra)] -* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun)] — _translator and maintainer (ko)_ -* [Antonio Ossa (aaossa)](https://github.com/aaossa) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa)] — _translator (es)_ -* [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan)] -* [Semir Patel (analogue)](https://github.com/analogue) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue)] -* [Desmond Stonie (aneasystone)](https://github.com/aneasystone) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone)] -* [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth)] -* [Bryce J. (bj1)](https://github.com/bj1) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1)] -* [Arturo Fernandez (bsnux)](https://github.com/bsnux) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux)] -* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex)] -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo)] — _translator and maintainer (es)_ -* [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl)] -* [Corey "See More" Richardson (cmr)](https://github.com/cmr) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr)] -* [Chris Rhodes (crr0004)](https://github.com/crr0004) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004)] -* [Chelsea Voss (csvoss)](https://github.com/csvoss) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss)] -* [Daniel t. (danasmera)](https://github.com/danasmera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera)] -* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi)] -* [Dave Loyall (daveloyall)](https://github.com/daveloyall) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall)] -* [James Luck (delucks)](https://github.com/delucks) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks)] -* [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin)] -* [doublemarket (doublemarket)](https://github.com/doublemarket) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket)] — _translator and maintainer (ja)_ -* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin)] -* [githubashto](https://github.com/githubashto) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto)] — _translator (ru)_ -* [The Gitter Badger (gitter-badger)](https://github.com/gitter-badger) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=gitter-badger), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agitter-badger)] -* [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov)] — _translator (ru)_ -* [Konstantin Gribov (grossws)](https://github.com/grossws) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws)] -* [Beau Hastings (hastinbe)](https://github.com/hastinbe) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe)] -* [Sung Kim (hunkim)](https://github.com/hunkim) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim)] — _translator (ko)_ -* [Ivgeni Segal (isegal)](https://github.com/isegal) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal)] -* [Alan Brogan (jalanb)](https://github.com/jalanb) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb)] -* [Joshua Levy (jlevy)](https://github.com/jlevy) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy)] — _original author and maintainer_ -* [Jesse Sightler (jsight)](https://github.com/jsight) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight)] -* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub)] -* [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit)] -* [Colin Chan (kalgynirae)](https://github.com/kalgynirae) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae)] -* [Michail Kargakis (kargakis)](https://github.com/kargakis) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis)] -* [kstn (kastian)](https://github.com/kastian) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian)] — _translator (ru)_ -* [Kesu J (kesu)](https://github.com/kesu) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu)] -* [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13)] -* [Pavel Zhukov (landgraf)](https://github.com/landgraf) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf)] -* [Matjaž Lipuš (matjaz)](https://github.com/matjaz) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz)] -* [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera)] -* [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7)] -* [Harry Moreno (morenoh149)](https://github.com/morenoh149) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149)] -* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques)] — _translator and maintainer (pt)_ -* [Oleg Berman (olegberman)](https://github.com/olegberman) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman)] — _translator and maintainer (ru)_ -* [osmero](https://github.com/osmero) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero)] — _translator (ru)_ -* [Serg Petrov (p12se)](https://github.com/p12se) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se)] -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot)] — _translator and maintainer (sl)_ -* [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane)] -* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808)] -* [Kit Chan (shukitchan)](https://github.com/shukitchan) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan)] -* [Simarpreet Singh (simar7)](https://github.com/simar7) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7)] -* [spmbt (spmbt)](https://github.com/spmbt) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt)] — _translator (ru)_ -* [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam)] — _translator (zh)_ -* [taxusyew](https://github.com/taxusyew) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew)] -* [Sungjin Kang (ujuc)](https://github.com/ujuc) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc)] — _translator (ko)_ -* [Joe Block (unixorn)](https://github.com/unixorn) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn)] -* [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva)] — _translator (pt)_ -* [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx)] -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro)] -* [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang)] — _translator (zh)_ -* [Alex F. (youmee)](https://github.com/youmee) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee)] -* [Zack Piper (zackp30)](https://github.com/zackp30) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30)] -* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) [[commits](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd), [issues](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd)] +* [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ +* [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) +* [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) +* [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) +* [Guo Chong (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ +* [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) +* [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ +* [Bryce J. (bj1)](https://github.com/bj1) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1) +* [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) +* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[11+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) +* [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) +* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) +* [Chris Rhodes (crr0004)](https://github.com/crr0004) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004) +* [Chelsea Voss (csvoss)](https://github.com/csvoss) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss) +* [Daniel t. (danasmera)](https://github.com/danasmera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera) +* [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi) +* [Dave Loyall (daveloyall)](https://github.com/daveloyall) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall) +* [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges) +* [James Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) +* [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) +* [doublemarket (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ +* [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) +* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) +* [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ +* [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ +* [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) +* [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) +* [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ +* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) +* [Ivgeni Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) +* [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [102+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) +* [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) +* [Colin Chan (kalgynirae)](https://github.com/kalgynirae) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae) +* [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) +* [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ +* [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) +* [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13) +* [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) +* [Matjaž Lipuš (matjaz)](https://github.com/matjaz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz) +* [Mayra Cabrera (mayra-cabrera)](https://github.com/mayra-cabrera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=mayra-cabrera)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amayra-cabrera) +* [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) +* [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) +* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translator and maintainer (pt)_ +* [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ +* [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ +* [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[18+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [16+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) +* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) +* [Saksham Sharma (saksham0808)](https://github.com/saksham0808) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808) +* [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) +* [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) +* [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ +* [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) +* [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ +* [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ +* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) +* [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) +* [Sungjin Kang (ujuc)](https://github.com/ujuc) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc) — _translator (ko)_ +* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translator and maintainer (ko)_ +* [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) +* [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ +* [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) +* [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang) — _translator (zh)_ +* [Alex F. (youmee)](https://github.com/youmee) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee) +* [Zack Piper (zackp30)](https://github.com/zackp30) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30) +* [Xudong Zhang (zxdvd)](https://github.com/zxdvd) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd) + +Numbers link to commits/issues. +For simplicity, this file is maintained only in English. If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 8ef5bef..77c54cd 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -2,12 +2,17 @@ header: | This work is the result of the effort of many people around the world. - Contributors are listed in alphabetical order by GitHub id. - This file is maintained only in English. + Contributors are listed in alphabetical order by GitHub login. footer: | + Numbers link to commits/issues. + For simplicity, this file is maintained only in English. + If you see inaccuracies or omissions, please file an issue, or edit the authors-info.yml file, regenerate, and file a PR. +exclude: + gitter-badger + roles: jlevy: original author and maintainer ceoaliongroo: translator and maintainer (es) From d9cf3251f082aeaf460d7379b41ffa3277cb2a5d Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 5 Oct 2015 17:39:16 +0200 Subject: [PATCH 045/337] sl: update translation --- README-sl.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README-sl.md b/README-sl.md index be6d3c6..655b40f 100644 --- a/README-sl.md +++ b/README-sl.md @@ -21,13 +21,14 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -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 sem jo našel 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. +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) 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 ljudje bolj talentirani kot jaz lahko bralno 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 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.) ## Meta @@ -224,7 +225,7 @@ Opombe: - Standardna orodja za popravljanje izvorne kode so `diff` in `patch`. Glejte tudi `diffstat` za povzetek statistike diff-a in `sdiff` za diff drug ob drugem. Bodite pozorni, saj `diff -r` deluje za celotne direktorije. Uporabite `diff -r tree1 tree2 | diffstat` za povzetek sprememb. Uporabite `vimdiff` za primerjanje in urejanje datotek. -- Pri binarnih datotekah uporabite `hd` za enostavne heksadecimalne izpise in `bvi` za binarno urejanje. +- Pri binarnih datotekah uporabite `hd`, `hexdump` ali `xxd` za enostavne heksadecimalne izpise in `bvi` ali `biew` za binarno urejanje. - `strings` (plus `grep` itd.) vam omogoča najti bite v tekstu tudi za binarne datoteke. @@ -396,7 +397,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `pv`: nadzira napredek podatkov skozi cev -- `hd` in `bvi`: izvrže ali uredi binarne datoteke +- `hd`, `hexdump`, `xxd`, `biew` in `bvi`: izvrže ali uredi binarne datoteke - `strings`: izvleče tekst iz binarnih datotek From d9c87962399f90aa85363ca3496d0b2affd4af51 Mon Sep 17 00:00:00 2001 From: Michael Diamond Date: Mon, 5 Oct 2015 18:43:26 -0400 Subject: [PATCH 046/337] Tweak the language for the grep . * tip. The previous text didn't highlight why this is more useful than, say `cat *` or `vi *`. Personally, I still don't think it's that useful, but this seems a little clearer, at least. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cebd78..242c604 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,7 @@ A few examples of piecing together commands: cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Use `grep . *` to visually examine all contents of all files in a directory, e.g. for directories filled with config settings, like `/sys`, `/proc`, `/etc`. +- Use `grep . * | less` to quickly examine the contents of all files in a directory - each line is paired with the filename. This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. - Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python): From b564befde5655c81f0a0cc3d3bfb740f52e3f2ae Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 5 Oct 2015 21:16:37 -0700 Subject: [PATCH 047/337] Add another example of head And tweak language of #292. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 242c604..80ea240 100644 --- a/README.md +++ b/README.md @@ -295,7 +295,7 @@ A few examples of piecing together commands: cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Use `grep . * | less` to quickly examine the contents of all files in a directory - each line is paired with the filename. This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. +- Use `grep . *` to quickly examine the contents of all files in a directory (so each line is paired with the filename), or `head -100 *` (so each file has a heading). This can be useful for directories filled with config settings like those in `/sys`, `/proc`, `/etc`. - Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python): From f537d1e0cf92fdbc95bc68a3f5c5ae6a9677f91e Mon Sep 17 00:00:00 2001 From: Chujie Zeng Date: Tue, 6 Oct 2015 21:21:44 +0800 Subject: [PATCH 048/337] Fix typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80ea240..f18189f 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ Notes: - A few other options relevant to ssh are security sensitive and should be enabled with care, e.g. per subnet or host or in trusted networks: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- Consider [`mosh`](https://mosh.mit.edu/) an an alternative to ssh that uses UDP, avoiding dropped connections and adding convenience on the road (requires server-side setup). +- Consider [`mosh`](https://mosh.mit.edu/) an alternative to ssh that uses UDP, avoiding dropped connections and adding convenience on the road (requires server-side setup). - To get the permissions on a file in octal form, which is useful for system configuration but not available in `ls` and easy to bungle, use something like ```sh @@ -371,7 +371,7 @@ A few examples of piecing together commands: - `socat`: socket relay and tcp port forwarder (similar to `netcat`) -- [`slurm`](https://github.com/mattthias/slurm): network trafic visualization +- [`slurm`](https://github.com/mattthias/slurm): network traffic visualization - `dd`: moving data between files or devices From b06fff3307cac596ec52822de80f369b076fb05b Mon Sep 17 00:00:00 2001 From: Chujie Zeng Date: Tue, 6 Oct 2015 21:22:01 +0800 Subject: [PATCH 049/337] zh: Sync with English --- README-zh.md | 66 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/README-zh.md b/README-zh.md index 3ac0f3d..eb27bae 100644 --- a/README-zh.md +++ b/README-zh.md @@ -35,7 +35,7 @@ - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到覆盖面广(尽量包括一切重要的内容),具体(给出最常见的具体的例子)以及简洁(避免一些不必要的东西以及一些偏题的可以在其他地方翻阅到文献的东西)。 每个小技巧在某个特定情境下都是基本的或能够显著地节约时间。 - 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 -- 本文关注于交互式 Bash,尽管很多技巧适用于其他 shell 或 Bash 脚本。 +- 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 注意事项: @@ -48,40 +48,42 @@ - 学习 Bash 的基础知识。具体来说,输入 `man bash` 并至少全文浏览一遍; 它很简单并且不长。其他的 shell 可能很好用,但 Bash 功能强大且几乎所有情况下都是可用的 ( *只*学习 zsh,fish 或其他的 shell 的话,在你自己的电脑上会显得很方便,但在很多情况下会限制你,比如当你需要在服务器上工作时)。 -- 学习并掌握至少一个基于文本的编辑器。通常 Vim (`vi`) 会是你最好的选择。 +- 学习并掌握至少一个基于文本的编辑器。通常 Vim (`vi`) 会是你最好的选择,因为在终端里进行随机编辑 Vim 真的毫无敌手,哪怕是 Emacs、某大型 IDE 甚至时下非常流行的编辑器。 - 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。 - 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件未添加。了解标准输出 stdout 和标准错误 stderr。 -- 学会使用通配符 `*` (或许再算上 `?` 和 `{`...`}`) 和引用以及引用中 `'` 和 `"` 的区别。 +- 学会使用通配符 `*` (或许再算上 `?` 和 `[`...`]`) 和引用以及引用中 `'` 和 `"` 的区别。 - 熟悉 Bash 任务管理工具:`&`,**ctrl-z**,**ctrl-c**,`jobs`,`fg`,`bg`,`kill` 等。 -- 了解 `ssh`,以及基本的无密码认证,`ssh-agent`,`ssh-add` 等。 +- 了解 `ssh`,以及学会通过使用 `ssh-agent`,`ssh-add` 等命令来实现基本的无密码认证。 -- 学会基本的文件管理:`ls` 和 `ls -l` (了解 `ls -l` 中每一列代表的意义),`less`,`head`,`tail` 和 `tail -f` (甚至 `less +F`),`ln` 和 `ln -s` (了解硬链接与软链接的区别),`chown`,`chmod`,`du` (硬盘使用情况概述:`du -hk *`)。 关于文件系统的管理,学习 `df`,`mount`,`fdisk`,`mkfs`,`lsblk`。 +- 学会基本的文件管理:`ls` 和 `ls -l` (了解 `ls -l` 中每一列代表的意义),`less`,`head`,`tail` 和 `tail -f` (甚至 `less +F`),`ln` 和 `ln -s` (了解硬链接与软链接的区别),`chown`,`chmod`,`du` (硬盘使用情况概述:`du -hk *`)。 关于文件系统的管理,学习 `df`,`mount`,`fdisk`,`mkfs`,`lsblk`。知道 inode 是什么(与 `ls -i` 和 `df -i` 等命令相关)。 - 学习基本的网络管理:`ip` 或 `ifconfig`,`dig`。 -- 熟悉正则表达式,以及 `grep`/`egrep` 里不同参数的作用,例如 `-i`,`-o`,`-v`,`-A`,`-B` 和 `-C`。 +- 熟悉正则表达式,以及 `grep`/`egrep` 里不同参数的作用,例如 `-i`,`-o`,`-v`,`-A`,`-B` 和 `-C`,这些参数是值得学习并掌握的。 -- 学会使用 `apt-get`,`yum`,`dnf` 或 `pacman` (取决于你使用的 Linux 发行版)来查找或安装包。确保你的环境中有 `pip` 来安装基于 Python 的命令行工具 (部分程序使用 `pip` 来安装会很简单)。 +- 学会使用 `apt-get`,`yum`,`dnf` 或 `pacman` (取决于你使用的 Linux 发行版)来查找或安装软件包。并确保你的环境中有 `pip` 来安装基于 Python 的命令行工具 (接下来提到的部分程序使用 `pip` 来安装会很方便)。 ## 日常使用 - 在 Bash 中,可以使用 **Tab** 自动补全参数,使用 **ctrl-r** 搜索命令行历史。 -- 在 Bash 中,使用 **ctrl-w** 删除你键入的最后一个单词,使用 **ctrl-u** 删除整行,使用 **alt-b** 和 **alt-f** 按单词移动,使用 **ctrl-k** 从光标处删除到行尾,使用 **ctrl-l** 清屏。键入 `man readline` 查看 Bash 中的默认快捷键,内容很多。例如 **alt-.** 循环地移向前一个参数,以及 **alt-*** 展开通配符。 +- 在 Bash 中,可以使用 **ctrl-w** 删除你键入的最后一个单词,使用 **ctrl-u** 删除整行,使用 **alt-b** 和 **alt-f** 以单词为单位移动光标,使用 **ctrl-a** 将光标移至行首,使用 **ctrl-e** 将光标移至行尾,使用 **ctrl-k** 删除光标至行尾的所有内容,使用 **ctrl-l** 清屏。键入 `man readline` 查看 Bash 中的默认快捷键,内容很多。例如 **alt-.** 循环地移向前一个参数,以及 **alt-*** 展开通配符。 -- 你喜欢的话,可以键入 `set -o vi` 来使用 vi 风格的快捷键。 +- 你喜欢的话,可以键入 `set -o vi` 来使用 vi 风格的快捷键,而 `set -o emacs` 可以把它改回来。 + +- 为了方便地键入长命令,在设置你的编辑器后(例如 `export EDITOR=vim`),键入 **ctrl-x** **ctrl-e** 会打开一个编辑器来编辑当前命令。在 vi 模式下则键入 **escape-v** 实现相同的功能。 - 键入 `history` 查看命令行历史记录。其中有许多缩写,例如 `!$`(最后键入的参数)和 `!!`(最后键入的命令),尽管通常被 **ctrl-r** 和 **alt-.** 取代。 - 回到上一个工作路径:`cd -` -- 如果你输入命令的时候改变了主意,按下 **alt-#** 在行首添加 `#`(将你输入的命令视为注释),并回车。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。 +- 如果你输入命令的时候改变了主意,按下 **alt-#** 来在行首添加 `#`,或者依次按下 **ctrl-a**, **#**, **enter**。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。 - 使用 `xargs` ( 或 `parallel`)。他们非常给力。注意到你可以控制每行参数个数(`-L`)和最大并行数(`-P`)。如果你不确定它们是否会按你想的那样工作,先使用 `xargs echo` 查看一下。此外,使用 `-I{}` 会很方便。例如: ```bash @@ -91,7 +93,7 @@ - `pstree -p` 有助于展示进程树。 -- 使用 `pgrep` 和 `pkill` 根据名字查找进程或发送信号。 +- 使用 `pgrep` 和 `pkill` 根据名字查找进程或发送信号(`-f` 参数通常有用)。 - 了解你可以发往进程的信号的种类。比如,使用 `kill -STOP [pid]` 停止一个进程。使用 `man 7 signal` 查看详细列表。 @@ -105,7 +107,11 @@ - 使用`alias`来创建常用命令的快捷形式。例如:`alias ll='ls -latr'`使你可以方便地执行`ls -latr`命令。 -- 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。 +- 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -u` 来检查是否使用了未赋值的变量,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` - 在 Bash 脚本中,子 shell(使用括号`(...)`)是一种便捷的方式去组织参数。一个常见的例子是临时地移动工作路径,代码如下: ```bash @@ -116,6 +122,8 @@ - 在 Bash 中,注意到其中有许多形式的扩展。检查变量是否存在:`${name:?error message}`。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。 截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 +- 使用括号扩展(`{`...`}`)可以减少不必要的重复输入相似文本以及文本组合。 + - 通过使用 `<(some command)` 可以将输出视为文件。例如,对比本地文件 `/etc/hosts` 和一个远程文件: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) @@ -144,6 +152,8 @@ - 部分其他的关于 ssh 的选项是安全敏感且应当小心启用的。例如在可信任的网络中:`StrictHostKeyChecking=no`,`ForwardAgent=yes` +- 考虑使用 [`mosh`](https://mosh.mit.edu/) 作为 ssh 的替代品,它使用 UDP 协议。 + - 获取文件的八进制格式权限,使用类似如下的代码: ```sh stat -c '%A %a %n' /etc/timezone @@ -174,7 +184,7 @@ - Excel 或 CSV 文件的处理,[csvkit](https://github.com/onyxfish/csvkit) 提供了 `in2csv`,`csvcut`,`csvjoin`,`csvgrep` 等工具。 -- 关于 Amazon S3,[`s3cmd`](https://github.com/s3tools/s3cmd) 很方便而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 更快。Amazon 官方的 [`aws`](https://github.com/aws/aws-cli) 是其他 AWS 相关工作的基础。 +- 关于 Amazon S3,[`s3cmd`](https://github.com/s3tools/s3cmd) 很方便而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 更快。Amazon 官方的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础。 - 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,详见后文一行代码节。另外可以了解一下 `comm`。 @@ -186,7 +196,7 @@ - 了解语言环境对许多命令行工具的微妙影响,包括排序的顺序和性能。大多数 Linux 的安装过程会将 `LANG` 或其他有关的变量设置为符合本地的设置。意识到当你改变语言环境时,排序的结果可能会改变。明白国际化可能会时 sort 或其他命令运行效率下降*许多倍*。某些情况下(例如集合运算)你可以放心的使用 `export LC_ALL=C` 来忽略掉国际化并使用基于字节的顺序。 -- 了解 `awk` 和 `sed` 关于数据的简单处理的用法。例如,将文本文件中第三列的所有数字求和:`awk '{ x += $3 } END { print x }'`. 这可能比同等作用的 Python 代码块三倍且代码量少三倍。 +- 了解 `awk` 和 `sed` 关于数据的简单处理的用法。例如,将文本文件中第三列的所有数字求和:`awk '{ x += $3 } END { print x }'`. 这可能比同等作用的 Python 代码快三倍且代码量少三倍。 - 替换一个或多个文件中出现的字符串: ```sh @@ -201,7 +211,7 @@ repren --full --preserve-case --from foo --to bar . ``` -- 使用 `shuf` 从一个文件中随机选取行。 +- 使用 `shuf` 从一个文件中随机选取多行。 - 了解 `sort` 的参数。处理数字方面,使用 `-n` 或者 `-h` 来处理可读性数字(例如 `du -h` 的输出)。明白键的工作原理(`-t` 和 `-k`)。例如,注意到你需要 `-k1,1` 来仅按第一个域来排序,而 `-k1` 意味着按整行排序。稳定排序(`sort -s`)在某些情况下很有用。例如,以第二个域为主关键字,第一个域为次关键字进行排序,你可以使用 `sort -k1,1 | sort -s -k2,2`。 @@ -231,6 +241,8 @@ - 使用 `iostat`、`netstat`、`top` (`htop` 更佳)和 `dstat` 去获取硬盘、cpu 和网络的状态。熟练掌握这些工具可以使你快速的对系统的当前状态有一个大概的认识。 +- 使用 `netstat` 和 `ss` 查看网络连接的细节。 + - 若要对系统有一个深度的总体认识,使用 [`glances`](https://github.com/nicolargo/glances)。它在一个终端窗口中向你提供一些系统级的数据。这对于快速的检查各个子系统非常有帮助。 - 若要了解内存状态,运行并理解 `free` 和 `vmstat` 的输出。尤其注意“cached”的值,它指的是 Linux 内核用来作为文件缓存的内存大小,因此它与空闲内存无关。 @@ -259,7 +271,7 @@ - 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 -- 查看你当前使用的系统,使用 `uname` 或者 `uname -a` (Unix/kernel 信息) or `lsb_release -a` (Linux 发行版信息)。 +- 查看你当前使用的系统,使用 `uname` , `uname -a` (Unix/kernel 信息) 或者 `lsb_release -a` (Linux 发行版信息)。 - 无论什么东西工作得很欢乐时试试 `dmesg`(可能是硬件或驱动问题)。 @@ -340,7 +352,7 @@ - `factor`:分解因数 -- `gpg`:加密并签名文件 +- [`gpg`](https://gnupg.org/):加密并签名文件 - `toe`:terminfo entries 列表 @@ -348,7 +360,7 @@ - `socat`:套接字代理,与 `netcat` 类似 -- `slurm`:网络可视化 +- [`slurm`](https://github.com/mattthias/slurm):网络可视化 - `dd`:文件或设备间传输数据 @@ -360,6 +372,12 @@ - `time`:执行命令,并计算执行时间 +- `lockfile`:使文件只能通过 `rm -f` 移除 + +- `logrotate`: 切换、压缩以及发送日志文件 + +- `watch`:重复运行同一个命令,展示结果并高亮有更改的部分 + - `tac`:反向输出文件 - `shuf`:文件中随机选取几行 @@ -368,7 +386,7 @@ - `pv`:监视通过管道的数据 -- `hd` 和 `bvi`:保存或编辑二进制文件 +- `hd`,`hexdump`,`xxd`,`biew` 和 `bvi`:保存或编辑二进制文件 - `strings`:从二进制文件中抽取文本 @@ -378,8 +396,12 @@ - `split` 和 `csplit`:分割文件 +- `sponge`:在写入前读取所有输入,在读取文件后再向同一文件写入时比较有用,例如 `grep -v something some-file | sponge some-file` + - `units`:将一种计量单位转换为另一种等效的计量单位(参阅 `/usr/share/units/definitions.units`) +- `apg`:随机生成密码 + - `7z`:高比例的文件压缩 - `ldd`:动态库信息 @@ -452,6 +474,8 @@ - 用 `pbcopy` 复制任何命令的输出到桌面应用,用 `pbpaste` 粘贴输入。 +- 在终端中将 Option 键视为 alt 键,Preferences -> Profiles -> Keyboard 勾选上 "Use Option as Meta key"。 + - 用 `open` 或者 `open -a /Applications/Whatever.app` 使用桌面应用打开文件。 - Spotlight: 用 `mdfind` 搜索文件,用 `mdls` 列出元数据(例如照片的 EXIF 信息)。 @@ -462,7 +486,9 @@ ## 更多资源 - [awesome-shell](https://github.com/alebcay/awesome-shell):一份精心组织的命令行工具及资源的列表。 -- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):为了编写更好的脚本文件。 +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):为了编写更好的脚本文件。. +- [shellcheck](https://github.com/koalaman/shellcheck):一个 shell 脚本分析工具,基本上等同于 bash/sh/zsh 的 lint。 +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):在 shell 脚本里正确处理文件名的好工具。 ## 免责声明 From 7b85fba0bdf1033b66ffc54ce16484dc50cc5b61 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Wed, 7 Oct 2015 09:15:23 -0700 Subject: [PATCH 050/337] More info on rsync And a useful tip for deleting files quickly. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index f18189f..b50166c 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,11 @@ Notes: repren --full --preserve-case --from foo --to bar . ``` +- As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + - Use `shuf` to shuffle or select random lines from a file. - Know `sort`'s options. For numbers, use `-n`, or `-h` for handling human-readable numbers (e.g. from `du -h`). Know how keys work (`-t` and `-k`). In particular, watch out that you need to write `-k1,1` to sort by only the first field; `-k1` means sort according to the whole line. Stable sort (`sort -s`) can be useful. For example, to sort first by field 2, then secondarily by field 1, you can use `sort -k1,1 | sort -s -k2,2`. From b909256a2e73926dbcb4911c6d33a0e1a4cd85d4 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 8 Oct 2015 11:02:40 +0800 Subject: [PATCH 051/337] typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 会时 sort ==> 会使 sort --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index eb27bae..8194748 100644 --- a/README-zh.md +++ b/README-zh.md @@ -194,7 +194,7 @@ - 了解如何使用 `tee` 将标准输入复制到文件甚至标准输出,例如 `ls -al | tee file.txt`。 -- 了解语言环境对许多命令行工具的微妙影响,包括排序的顺序和性能。大多数 Linux 的安装过程会将 `LANG` 或其他有关的变量设置为符合本地的设置。意识到当你改变语言环境时,排序的结果可能会改变。明白国际化可能会时 sort 或其他命令运行效率下降*许多倍*。某些情况下(例如集合运算)你可以放心的使用 `export LC_ALL=C` 来忽略掉国际化并使用基于字节的顺序。 +- 了解语言环境对许多命令行工具的微妙影响,包括排序的顺序和性能。大多数 Linux 的安装过程会将 `LANG` 或其他有关的变量设置为符合本地的设置。意识到当你改变语言环境时,排序的结果可能会改变。明白国际化可能会使 sort 或其他命令运行效率下降*许多倍*。某些情况下(例如集合运算)你可以放心的使用 `export LC_ALL=C` 来忽略掉国际化并使用基于字节的顺序。 - 了解 `awk` 和 `sed` 关于数据的简单处理的用法。例如,将文本文件中第三列的所有数字求和:`awk '{ x += $3 } END { print x }'`. 这可能比同等作用的 Python 代码快三倍且代码量少三倍。 From 539313fb5b26ebb5e31f7bda20996b34efe4b274 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Thu, 8 Oct 2015 18:10:29 +0200 Subject: [PATCH 052/337] sl: update translation up to 7b85fba0 --- README-sl.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README-sl.md b/README-sl.md index 655b40f..9f60914 100644 --- a/README-sl.md +++ b/README-sl.md @@ -217,6 +217,11 @@ Opombe: repren --full --preserve-case --from foo --to bar . ``` +- Kot pravi stran vodiča, je `rsync` resnično hiter in izredno vsestransko orodje kopiranja datotek. Znano je po sinhronizaciji med napravami vendar je enakovredno uporaben tudi lokalno. Je tudi eden izmed [najhitrejših načinov](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) za izbris velikega števila datotek: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + - Uporabite `shuf` za naključno mešanje ali izbiro naključnih vrstic iz datoteke. - Poznajte opcije za `sort`. Za številke uporabite `-n` ali `-h` za upravljanje številk človeku prijaznih za branje (npr. iz `du -h`). Vedite, kako delujejo ključi (`-t` in `-k`). Še posebej pazite, da morate zapisati `-k1,1`, da razvrstite samo po prvem polju; `-k1` pomeni razvrščanje glede na celotno vrstico. Stabilno razvrščanje (`sort -s`) je lahko uporabno. Na primer, da sortirate najprej po polju 2 in nato po polju 1, lahko uporabite `sort -k1,1 | sort -s -k2,2`. @@ -295,7 +300,7 @@ Nekaj primerov sestavljanja ukazov skupaj: cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Uporabite `grep . *`, da vizualno preučite vse vsebine vseh datotek v direktoriju, npr. za direktorije napolnjene s konfiguracijskimi nastavitvami, kot so `/sys`, `/proc`, `/etc`. +- Uporabite `grep . *`, da hitro preučite vsebine vseh datotek v direktoriju (vsaka vrstica ima par z imenom datoteke) ali `head -100 *` (da iima vsaka datoteka glavo). To je lahko uporabno za direktorije napolnjene s konfiguracijskimi nastavitvami, kot so tiste v `/sys`, `/proc`, `/etc`. - Povzetje vseh številk v tretjem stolpcu tekstovne datoteke (to je verjetno 3X hitrejše in 3X manj kode kot Python-ov ekvivalent): From fd559e2de47ba9a8a0e46d61ddb7f01380221af9 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 8 Oct 2015 14:08:10 -0700 Subject: [PATCH 053/337] MacOS: sw_vers --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b50166c..db996db 100644 --- a/README.md +++ b/README.md @@ -499,6 +499,8 @@ These are items relevant *only* on MacOS. - 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. +- To get MacOS release information, use `sw_vers`. + ## More resources From 29dcb0ef2b4c50b0d400e42dd327037fbdd3c726 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Thu, 8 Oct 2015 23:18:10 +0200 Subject: [PATCH 054/337] sl: sync translation with English version up to fd559e2de47ba9a8a0e46d61ddb7f01380221af9 --- README-sl.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README-sl.md b/README-sl.md index 9f60914..ee114e6 100644 --- a/README-sl.md +++ b/README-sl.md @@ -499,6 +499,8 @@ To so elementi pomembni *samo* za MacOS. - 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. +- Da dobite informacije o izdaji MacOS, uporabite `sw_vers`. + ## Več virov From 0260ae53160b1217c6eac57f42078004123946fe Mon Sep 17 00:00:00 2001 From: TAKAGI Masahiro Date: Fri, 9 Oct 2015 08:49:07 +0900 Subject: [PATCH 055/337] ja: Tweak the tone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「です・ます」->「だ・である」 --- README-ja.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-ja.md b/README-ja.md index 2e5a31f..f112d89 100644 --- a/README-ja.md +++ b/README-ja.md @@ -20,21 +20,21 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/cowsay.png) -コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるでしょう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものです。ここでは、Linuxでコマンドラインを使う上で便利だと思ったメモやTipsの数々を挙げてみます。あるものは基礎的ですが、非常に詳しいもの、洗練されたもの、曖昧なものもあります。このページはそんなに長いものではないですが、ここに書いてあることの全てを使ったり思い出すことができれば、かなり詳しくなれるでしょう。 +コマンドラインで流れるように操作ができるということは、軽く見られたり他人から理解されないスキルだとみなされることもあるだろう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、エンジニアとしてのあなたの柔軟性や生産性を改善してくれるものだ。ここでは、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上にあります)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストをください!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認してください) +ここに書いてあることの多くは、[元々](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)[Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know)に[書かれて](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)いたものが多いが、私よりももっと優れた人たちがすぐに改善案を出すことができるGithubに置くのがよいのではと思った(訳注 : 原文はGithub上にある)。間違いやもっとこうした方がよいという点があれば、イシューを登録するかプルリクエストを送ってほしい!(もちろん、メタ情報の項や既存のプルリクエスト、イシューをまず確認しよう) ## メタ情報 対象 : -- このガイドは、初心者向けでも経験者向きでもあります。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしています。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるでしょう。 -- Linux向けに書いています。多くはMacOS(あるいはCygwin)でも使えますが、全部ではありません。 -- インタラクティブなBashを使うことを想定していますが、多くの項目は他のシェルやBashのスクリプトでも使えるでしょう。 +- このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。 +- Linux向けに書いている。多くはMacOS(あるいはCygwin)でも使えるが、全部ではない。 +- インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。 注意 : -- 1ページ内に収めるために、内容には暗黙的に書かれていることがあります。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるでしょう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使いましょう。 +- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使おう。 - コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。 ## 基本 @@ -447,10 +447,10 @@ ## 免責事項 -ごく一部の例外はありますが、コードは誰でも読めるように書かれています。力には責任が伴います。Bashで*できる*からといって、そうすべき必要があるという意味ではありません! ;) +ごく一部の例外はありますが、コードは誰でも読めるように書かれている。力には責任が伴う。Bashで*できる*からといって、そうすべき必要があるという意味ではない! ;) ## ライセンス [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) -このドキュメントは[Creative Commons Attribution-ShareAlike 4.0 International Licene](http://creativecommons.org/licenses/by-sa/4.0/)でライセンスされます。 +このドキュメントは[Creative Commons Attribution-ShareAlike 4.0 International Licene](http://creativecommons.org/licenses/by-sa/4.0/)でライセンスされる。 From 4d81736d74780d38c04beb306fea6a58ef3101f7 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 20 Oct 2015 18:16:53 -0700 Subject: [PATCH 056/337] Add link to awesome-osx-command-line --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index db996db..61afbe5 100644 --- a/README.md +++ b/README.md @@ -505,6 +505,7 @@ These are items relevant *only* on MacOS. ## 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 - [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 a3bca687c9e6e87a8c19a48c973d17fcf33708a7 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Thu, 22 Oct 2015 21:40:06 +0200 Subject: [PATCH 057/337] sl: update translation --- README-sl.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-sl.md b/README-sl.md index ee114e6..96cf4f1 100644 --- a/README-sl.md +++ b/README-sl.md @@ -505,6 +505,7 @@ To so elementi pomembni *samo* za MacOS. ## 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. - [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 f8e645bfc8c5cc8db4d5b5f9916ba9be25fd4dbe Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Sat, 24 Oct 2015 19:08:39 +0300 Subject: [PATCH 058/337] es: update language translation. --- README-es.md | 62 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/README-es.md b/README-es.md index b4d4fdd..b5a7b39 100644 --- a/README-es.md +++ b/README-es.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) ] # El Arte del Terminal @@ -19,13 +19,14 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -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 encontré útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta 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 [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, parece que vale la pena usar Github, donde existen personas más talentosas que fácilmente pueden sugerir mejoras. Si ve un error o algo que podría ser mejor, por favor, crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el 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.) ## Meta @@ -59,7 +60,7 @@ Notas: - Conoce `ssh` y lo básico de autenticación sin contraseña, vía `ssh-agent`, `ssh-add`, etc. -- Administración de archivos básica: `ls` y `ls -l` (en particular, aprende el significado de cada columna en `ls -l`), `less`, `head`, `tail` y `tail -f` (o incluso mejor, `less +F`), `ln` y `ln -s` (aprende las diferencias y ventajas entre enlaces hard y soft), `chown`, `chmod`, `du` (para un resumen rápido del uso del disco: `du -hs *`). Para administración de archivos de sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Administración de archivos básica: `ls` y `ls -l` (en particular, aprende el significado de cada columna en `ls -l`), `less`, `head`, `tail` y `tail -f` (o incluso mejor, `less +F`), `ln` y `ln -s` (aprende las diferencias y ventajas entre enlaces hard y soft), `chown`, `chmod`, `du` (para un resumen rápido del uso del disco: `du -hs *`). Para administración de archivos de sistema, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Aprenda que un inode es `ls -i` or `df -i`). - Administración básica de redes: `ip` o `ifconfig`, `dig`. @@ -121,6 +122,8 @@ Notas: - En Bash, considera que hay muchas formas de expansión de variables. Verificar la existencia de una variable: `${name:?error message}`. Por ejemplo, si un script Bash requiere un único argumento, solo escribe `input_file=${1:?usage: $0 input_file}`. Expansión aritmética: `i=$(( (i + 1) % 5 ))`. Secuencias: `{1..10}`. Reducción de cadenas de texto: `${var%suffix}` y `${var#prefix}`. Por ejemplo si `var=foo.pdf`, entonces `echo ${var%.pdf}.txt` imprime `foo.txt`. +- Utilizando la expansión de corchetes `{`...`}` puede reducir el tener que retipear un texto similar y automatizar conbinaciones de elementos. Esto es útil en ejemplos como `mv foo.{txt,pdf} some-dir` (el cual mueve ambos archivos), `cp somefile{,.bak}` (el cual se expandirá a `cp somefile somefile.bak`) o `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (el cual se expandirá en todas las posibles conbinaciones y creará un árbol de directorios). + - La salida de un comando puede ser tratado como un archivo por medio de `<(some command)`. Por ejemplo, comparar el `/etc/hosts` local con uno remoto: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) @@ -128,11 +131,11 @@ Notas: - Conocer acerca de "here documents" en Bash, como también de `cat <logfile 2>&1`. Frecuentemente, para garantizar que un comando no haya dejado abierto un archivo para controlar la entrada estándar vinculada al terminal en el que te encuentras y también como buena práctica puedes agregar `logfile 2>&1` o `some-command &>logfile`. Frecuentemente, para garantizar que un comando no haya dejado abierto un archivo para controlar la entrada estándar vinculada al terminal en el que te encuentras y también como buena práctica puedes agregar ` c # c es el conjunto diferencia a - b ``` -- Usa `grep . *` para examinar visualmente todo el contenido de todos los archivos de un directorio, Ej. para directorios llenos con ajustes de configuración, como `/sys`, `/proc`, `/etc`. +- Usa `grep . *` para rápidamente examinar el contenido de todos los archivos de un directorio (para que cada línea este emparejada con con el nombre de archivo), o `head -100 *` (para que cada archivo tenga un encabezado). Esto puede se útil para directorios llenos con ajustes de configuración como aquellos en `/sys`, `/proc`, `/etc`. - 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): @@ -299,6 +315,8 @@ Algunos ejemplos de comandos reunidos: cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` +- Para monitorear continuamente los cambios, usa `watch`, Ej. verificar los cambios de archivos en un directorio con `watch -d -n 2 'ls -rt1h | tail'` o para configuraciones de red mientras solucionas problemas con la configuración wifi `watch -d -n 2 ifconfig`. + - Ejecuta esta función para obtener un consejo aleatorio desde este documento (analiza el Markdown y extrae un elemento): ```sh function taocl() { @@ -335,7 +353,7 @@ Algunos ejemplos de comandos reunidos: - `fold`: ajusta de líneas de texto -- `column`: formatea el texto en columnas o tablas +- `column`: formatea campos de texto alineados, en columnas de ancho fijo o tablas - `expand` y `unexpand`: conversión entre tabuladores y espacios @@ -367,6 +385,12 @@ Algunos ejemplos de comandos reunidos: - `time`: ejecuta y calcula el tiempo de ejecución de un comando +- `lockfile`: crea un archivo semáforo que puedes solo ser removido con `rm -f` + +- `logrotate`: rota, comprime y registra correos electrónicos. + +- `watch`: ejecuta un comando repetidamente, mostrando resultados y/o resaltando cambios + - `tac`: imprime archivos en forma inversa - `shuf`: selección aleatoria de líneas de un archivo @@ -375,7 +399,7 @@ Algunos ejemplos de comandos reunidos: - `pv`: monitorea el progreso de datos a través de un tubo -- `hd` y `bvi`: descarga o edita archivos binarios +- `hd`, `hexdump`, `xxd`, `bview` y `bvi`: descarga o edita archivos binarios - `strings`: extrae texto desde archivos binarios @@ -389,6 +413,8 @@ Algunos ejemplos de comandos reunidos: - `units`: unidades de conversión y cálculos; convierte furlongs por fortnight a twips por blink (ver también `/usr/share/units/definitions.units`) +- `apg`: genera contraseñas aleatorias. + - `7z`: compresión de archivos de alto nivel - `ldd`: información de librería dinámica @@ -449,7 +475,7 @@ Algunos ejemplos de comandos reunidos: - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: información de hardware, incluyendo CPU, BIOS, RAID, gráficos, dispositivos, etc -- `lsmod` y `modifno`: lista y muestra detalles de los módulos del kernel +- `lsmod` y `modinfo`: lista y muestra detalles de los módulos del kernel - `fortune`, `ddate`, y `sl`: um, bien, depende de si considera las locomotoras de vapor y citas Zippy "útiles" @@ -462,17 +488,23 @@ Estos son puntos relevantes *únicamente* para MacOS. - 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 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. +- Para obtener la información de la versión del MacOS, 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. - [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. ## Advertencia From ffecca12187e3fd1dbc5e32e574da1c1c646bb17 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Sat, 24 Oct 2015 19:17:04 +0300 Subject: [PATCH 059/337] es: check the aligment of the language line. --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 61afbe5..e7407e1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) -] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)] # The Art of Command Line From 6b59c87ac904cc5e39d9e894210e37474ceeb19b Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:33:04 +0300 Subject: [PATCH 060/337] + me to autors --- AUTHORS.md | 1 + admin/authors-info.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index 17819c4..4522912 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -78,6 +78,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](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 (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 77c54cd..30438d6 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,3 +36,4 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) + stepan0904: translator (ua) From 3f3a22dbe5a4f9df3e85411f6fbdba1cc6faeed9 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:33:52 +0300 Subject: [PATCH 061/337] + ua --- README-es.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-ua.md | 0 README-zh.md | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 README-ua.md diff --git a/README-es.md b/README-es.md index eedd008..00ce770 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ja.md b/README-ja.md index 2e5a31f..c9fd8ae 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.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 d576ce3..5f78304 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-pt.md b/README-pt.md index fc066e0..659586a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ru.md b/README-ru.md index 644896a..335f7c4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-sl.md b/README-sl.md index 96cf4f1..562c239 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ua.md b/README-ua.md new file mode 100644 index 0000000..e69de29 diff --git a/README-zh.md b/README-zh.md index eb27bae..2d04cf1 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] From b227f199b4d864bd79e514a2f3e7946d9fcd67a9 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:34:23 +0300 Subject: [PATCH 062/337] + title --- README-ua.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README-ua.md b/README-ua.md index e69de29..d79f92b 100644 --- a/README-ua.md +++ b/README-ua.md @@ -0,0 +1,8 @@ +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.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) + From c211dde2994aa2fe13910418e8c8c2d47a0c5a2e Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:34:47 +0300 Subject: [PATCH 063/337] content list --- README-ua.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README-ua.md b/README-ua.md index d79f92b..7eeca48 100644 --- a/README-ua.md +++ b/README-ua.md @@ -6,3 +6,29 @@ [![Вступайте в англомовний чат проекту 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) + +- [Опис](#Опис) +- [Основи](#Основи) +- [Щоденне використання](#Щоденне-використання) +- [Обробка файлів та інформації](#Обробка-файлів-та-інформації) +- [Дебаггінг](#Дебаггінг) +- [Одним рядком](#Одним-рядком) +- [Складно але корисно](#Складно-але-корисно) +- [Тільки для MacOS X](#Тільки-для-MacOS-X) +- [Інші джерела](#Інші-джерела) +- [Декламація](#Декламація) + + +## Опис + +##Основи +##Щоденне-використання +##Обробка-файлів-та-інформації +##Дебаггінг +##Одним-рядком +##Складно-але-корисно +##Тільки-для-MacOS-X +##Інші-джерела +##Декламація + + From 0937ce7751f5562735e483288ef3886962a2258a Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:35:27 +0300 Subject: [PATCH 064/337] introduction --- README-ua.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README-ua.md b/README-ua.md index 7eeca48..6406185 100644 --- a/README-ua.md +++ b/README-ua.md @@ -19,6 +19,14 @@ - [Декламація](#Декламація) +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшує Вашу продуктивність в роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в 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 (Звичайно перевіривши уже існуючі) + + ## Опис ##Основи From 174e91a0b0a3746c33243fc76bc5c66353372c9e Mon Sep 17 00:00:00 2001 From: stepan Date: Fri, 23 Oct 2015 23:09:58 +0300 Subject: [PATCH 065/337] + description --- README-ua.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README-ua.md b/README-ua.md index 6406185..b768ad6 100644 --- a/README-ua.md +++ b/README-ua.md @@ -29,8 +29,23 @@ ## Опис +Основне: + +- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). +- Сфокусована на інтерактивному Баші, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Баш-скриптів. +- Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. + +Нотатки: + +- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(|)) і т.д. + + ##Основи + ##Щоденне-використання + ##Обробка-файлів-та-інформації ##Дебаггінг ##Одним-рядком From 2d6eafff867365b98c0540525b366ecfd734127f Mon Sep 17 00:00:00 2001 From: stepan Date: Fri, 23 Oct 2015 23:10:18 +0300 Subject: [PATCH 066/337] fix mac os links --- README-ua.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README-ua.md b/README-ua.md index b768ad6..e3332fe 100644 --- a/README-ua.md +++ b/README-ua.md @@ -14,7 +14,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [Тільки для MacOS X](#Тільки-для-MacOS-X) +- [MacOS only](#Macos-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) @@ -47,11 +47,17 @@ ##Щоденне-використання ##Обробка-файлів-та-інформації + ##Дебаггінг + ##Одним-рядком + ##Складно-але-корисно -##Тільки-для-MacOS-X + +##Macos-only + ##Інші-джерела + ##Декламація From 3169fdb63e853dfd8bcb02553e12d3e92f78a434 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:15:22 +0300 Subject: [PATCH 067/337] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index e3332fe..d08039d 100644 --- a/README-ua.md +++ b/README-ua.md @@ -33,7 +33,7 @@ - Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). - Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). -- Сфокусована на інтерактивному Баші, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Баш-скриптів. +- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. Нотатки: From f05cec378a1263384f158c4b965d006c01b499fb Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:16:08 +0300 Subject: [PATCH 068/337] base --- README-ua.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README-ua.md b/README-ua.md index d08039d..75761c4 100644 --- a/README-ua.md +++ b/README-ua.md @@ -44,6 +44,19 @@ ##Основи +- Вивчіть основи 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`. +- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. +- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через` pip`). + + ##Щоденне-використання ##Обробка-файлів-та-інформації From 31f106e85c0cb63aff31253dc88914a4ef602c20 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:19:04 +0300 Subject: [PATCH 069/337] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index 75761c4..987f517 100644 --- a/README-ua.md +++ b/README-ua.md @@ -14,7 +14,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [MacOS only](#Macos-only) +- [MacOS only](#macos-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) From 6c92d100d4a42b654c0fe61e0fbd1a9647ed2d92 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:27:50 +0300 Subject: [PATCH 070/337] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index 987f517..c087a74 100644 --- a/README-ua.md +++ b/README-ua.md @@ -39,7 +39,7 @@ Нотатки: - Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. -- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(|)) і т.д. +- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. ##Основи From 8c292ed00d8dfff65ca82d8d81a5e4b779423893 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 02:02:36 +0300 Subject: [PATCH 071/337] for every day usage part 1 --- README-ua.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README-ua.md b/README-ua.md index c087a74..5c529b8 100644 --- a/README-ua.md +++ b/README-ua.md @@ -59,6 +59,42 @@ ##Щоденне-використання +- Використовуйте клавішу таб в 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{}` - корисно. Приклади: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` +- `pstree -p` - допоможе побачити дерево процесів. +- Використовуйте `pgrep` і `pkill` для того, щоб знаходити або слати сигнали до процесів по імені (`-f` корисна опція). +- Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`. +- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійн виконувався у фоні. +- Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP). +- Зверніть увагу на `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 +``` +- У Bash-скриптах підоболочки(subshells) - зручний спосіб групувати команди. Один із найпоширеніших прикладів - тимчасово пересунутися в іншу робочу директорію: +```bash + # Do something in current dir + (cd / some / other / dir && other-command) + # Continue in original dir +``` +- У Bash багато типів простору змінних. Перевірити, чи існує змінна - `${name:? Error message}`. Наприклад, якщо Bash-скрипту потрібен всього один аргумент, просто напишіть `input_file=${1:?usage: $0 input_file}`. Арифметична область видимості: `i=$(( (i + 1) % 5 ))`. Послідовності: `{1..10}`. Обрізка рядків: `${var%suffix}` і `${var#prefix}`. Наприклад, якщо `var=foo.pdf` тоді `echo ${var%.pdf}.txt` виведе `foo.txt`. +- Фігурні скобки, використовуючи `{`...`}` може зменшити необхідність повторно вводити той самий текст і автоматизувати. Це корисно в такому прикладі як `mv foo.{txt,pdf} some-dir` (який пересуває обидва файла), `cp somefile{,.bak}` (який розширюється у `cp somefile somefile.bak`) або `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (яка розширює всі можливі комбінації і створює дерево деректорій). + + ##Обробка-файлів-та-інформації ##Дебаггінг From f03b6ca3f09e7fa5f7fa4da0f117f96b8cd1247b Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 21:07:13 +0200 Subject: [PATCH 072/337] * --- AUTHORS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4522912..727b3a4 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -78,7 +78,7 @@ Contributors are listed in alphabetical order by GitHub login. * [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) -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](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 (ua)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[0](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. From 00584d40c71c8ebcefe6926fca38ff92c6bd8d92 Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 21:09:18 +0200 Subject: [PATCH 073/337] for every day usage part 2 --- README-ua.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README-ua.md b/README-ua.md index 5c529b8..5333f51 100644 --- a/README-ua.md +++ b/README-ua.md @@ -93,6 +93,36 @@ ``` - У Bash багато типів простору змінних. Перевірити, чи існує змінна - `${name:? Error message}`. Наприклад, якщо Bash-скрипту потрібен всього один аргумент, просто напишіть `input_file=${1:?usage: $0 input_file}`. Арифметична область видимості: `i=$(( (i + 1) % 5 ))`. Послідовності: `{1..10}`. Обрізка рядків: `${var%suffix}` і `${var#prefix}`. Наприклад, якщо `var=foo.pdf` тоді `echo ${var%.pdf}.txt` виведе `foo.txt`. - Фігурні скобки, використовуючи `{`...`}` може зменшити необхідність повторно вводити той самий текст і автоматизувати. Це корисно в такому прикладі як `mv foo.{txt,pdf} some-dir` (який пересуває обидва файла), `cp somefile{,.bak}` (який розширюється у `cp somefile somefile.bak`) або `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (яка розширює всі можливі комбінації і створює дерево деректорій). +- Вивід будь-якої команди можна обробити як файл наступним чином `<(some command)`. Наприклад, порівняння локального файлу `/etc/hosts з віддаленим: +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` +- Знайте про *heredoc* -сінтаксис в Bash: `cat << EOF ...`. +- У Bash перенаправляйте стандартні потоки виводу(output) та помилок, ось так: `some-command >logfile 2>&1`. Найчастіше, для того, щоб переконається, що команда не залишить відкритим файл, прив'язавши його до відкритого терміналу, вважається хорошою практикою додавати ` Date: Sun, 25 Oct 2015 22:29:46 +0200 Subject: [PATCH 074/337] + works with files --- README-ua.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README-ua.md b/README-ua.md index 5333f51..e94f0d2 100644 --- a/README-ua.md +++ b/README-ua.md @@ -127,6 +127,52 @@ ##Обробка-файлів-та-інформації +- Для того, щоб знайти файл в поточній директорії, зробіть `find. -iname '*something*'`. Для того, щоб шукати файл по всій системі, використовуйте `locate something` (але не забувайте, що `updatedb` міг ще не проіндексувати нещодавно створені файли). +- Для пошуку по вмісту або фалах (більш детально зробити пошук допоможе `grep -r`) використовуйте [`ag`](https://github.com/ggreer/the_silver_searcher). +- Для конвертації HTML в текст: `lynx -dump -stdin` +- Для конвертації різних типів розмітки (HTML, Markdown та ін.) попроробуйте [`pandoc`](http://pandoc.org/). +- Якщо потрібно працювати з XML, є стара, але хороша утиліта - `xmlstarlet`. +- Для роботи з JSON використовуйте [`jq`](http://stedolan.github.io/jq/). +- Для YAML використовуйте [`shyaml`](https://github.com/0k/shyaml). +- Для Excel і CSV файлів [csvkit](https://github.com/onyxfish/csvkit) надає `in2csv`,` csvcut`, `csvjoin`,` csvgrep` і т.д. +- Для Amazon S3 [`s3cmd`](https://github.com/s3tools/s3cmd) є зручним і [`s4cmd`](https://github.com/bloomreach/s4cmd) є швидшим. Для решти сервісів Амазону використовуйте стандартний [`aws`](https://github.com/aws/aws-cli) і удосконалений [`saws`](https://github.com/donnemartin/saws). +- Знайте про `sort` і `uniq`, включаючи опції `-u` і `-d`, дивіться приклади нижче. Ще спробуйте `comm`. +- Знайте про `cut`, `paste`, і `join` для роботи з текстовими файлами. Багато людей використовують `cut`, забувши про `join`. +- Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`). +- Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`. +- Не забувайте, що Ваша місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для Вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. +- Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. +- Щоб замінити всі знаходження підрядка в одному або декількох файлах: +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` +- Щоб перейменувати відразу багато файлів за шаблоном, використовуйте `rename`. Для складних перейменувань може допомогти [`repren`](https://github.com/jlevy/repren): +```sh + # Recover backup files foo.bak -> foo: + rename 's/\.bak$//' *.bak + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . +``` +- Як говорить man сторінка, `rsync` дійсно є швидким і універсальним інструментом копіювання файлів, для синхронізації між машинами, але в рівній мірі корисні на локальному рівні. Також [швидке рішення](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) що б видалити велику кількість файлів: +```sh + mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` +- Використовуйте `shuf`, щоб перемішати або вибрати випадкові рядки з файлу. +- Знайте опції для команди `sort`. Для чисел використовуйте `-n` або `-h`, для роботи з числами (наприклад `du -h`). Знайте як працюють ключі (`-t` і `-k`). Зокрема, не забувайте, що вам потрібно писати `-k1,1` для того, щоб впорядкувати тільки перше поле; `-k1` - це означає сортування враховуючи цілий рядок. Може бути корисною (`sort -s`). Наприклад для того, щоб відсортувати найважливіше по другому полю, а другорядне по першому, можна використовувати `sort -k1,1 | sort -s -k2,2`. +- Якщо вам коли-небудь доведеться написати код символу табуляції в терміналі, наприклад, для сортування за табуляції з прапором -t, використовуйте скорочення **ctrl-v** **[Tab]** або напишіть `$'\t'`. Останнє краще, тому що його можна скопіювати/вставити. +- Стандартні інструменти для виправлення вихідного коду це `diff` і` patch`. Також зверніть увагу на `diffstat` для перегляду статистики diff і `sdiff` для крок за кроком diff. Запамятайте `diff -r` працює рекурсивно по всій директорії. Використовуйте `diff -r tree1 tree2 | diffstat` для повного зведення змін. Використовуйте `vimdiff` порівняти і редагувати файли. +- Для бінарних файлів використовуйте `hd`, `hexdump` або `xxd` для простих hex-дампом, і` bvi` або `biew` для зміни бінарників. +- Також для бінарних файлів, `strings` (plus `grep`, etc.) дозволить Вам знайти біти тексту. +- Щоб подивитися різницю в бінарниках (дельта-кодування): `xdelta3`. +- Для конвертування кодувань використовуйте `iconv`. Для більш складних завдань - `uconv`, він підтримує деякі складні фічі Юникода. Наприклад, ця команда переводить рядки з файлу в нижній регістр і прибирає наголоси (наприклад в іспанській мові) +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` +- Для того, щоб розбити файл на шматки, використовуйте `split` (розбиває на шматки за розміром), або `csplit` (за шаблоном або по регулярному виразу). +- Для дати і часу використовуйте `dateadd`, `datediff`, `strptime` ще можете знайти на [`dateutils`](http://www.fresse.org/dateutils). +- Використовуйте `zless`,` zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. + + ##Дебаггінг ##Одним-рядком From 9e242fbec57dc094f8a36510b8d6533a3483e744 Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 23:07:53 +0200 Subject: [PATCH 075/337] + debuging --- README-ua.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-ua.md b/README-ua.md index e94f0d2..3182dbd 100644 --- a/README-ua.md +++ b/README-ua.md @@ -175,6 +175,26 @@ ##Дебаггінг +- Дле веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). +- Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`,` netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. +- Для інформації про мережу використовуйте `netstat` і `ss`. +- Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. +- Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. +- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі. +- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. +- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. +- додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. +- Для більш серйозного дебаггінга мережі використовуйте `wireshark`,` tshark`, і `ngrep`. +- Знайте про `strace` і` ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість дебаггінга (`-c`) і можливість причепитися до процесу по pid (` -p`). +- `ldd` для перевірки системних бібліотек. +- Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. +- Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). +- Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. +- Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)), і [`sysdig`](https://github.com/draios/sysdig). +- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` або `lsb_release -a`. +- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це може бути проблеми із залізом або драйверами). + + ##Одним-рядком ##Складно-але-корисно From a96d61eec22974bdbbd647b0d9ba9484495025a8 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 26 Oct 2015 00:57:56 +0200 Subject: [PATCH 076/337] one line --- README-ua.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/README-ua.md b/README-ua.md index 3182dbd..4fb2f29 100644 --- a/README-ua.md +++ b/README-ua.md @@ -197,6 +197,43 @@ ##Одним-рядком +Кілька прикладів склеювання команд: +- Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort` /`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежена пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше: +```sh + cat a b | sort | uniq > c # c is a union b + cat a b | sort | uniq -d > c # c is a intersect b + cat a b b | sort | uniq -u > c # c is set difference a - b +``` +- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`,` / proc`, `/ etc`. +- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні): +```sh + awk '{ x += $3 } END { print x }' myfile +``` +- Якщо вам потрібно подивитися розміри/дати файлів в дереві, це як рекурсивний `ls -l` але легше прочитати це `ls -lR`: +```sh + find . -type f -ls +``` +- Скажемо що у нас є якийсь текстовий файл, наприклад лог веб сервера і на якихось рядках з'являється значення, рядки з яким нам цікаві. Наприклад, `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 {}` - корисна штука. Приклади: +```sh + find. -name '* .py' | xargs grep some_function + cat hosts | xargs -I {} ssh root @ {} hostname +``` +- Запустіть цю функцію, щоб отримати випадкову вибірку із цього документа: +```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 + } +``` + + ##Складно-але-корисно ##Macos-only From d5806c6e0ee9a222734cc33caf326c752cac69ee Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:03 +0200 Subject: [PATCH 077/337] + usefull --- README-ua.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/README-ua.md b/README-ua.md index 4fb2f29..e35269f 100644 --- a/README-ua.md +++ b/README-ua.md @@ -236,6 +236,82 @@ ##Складно-але-корисно +- `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів +- `m4`: простий макро-процесор +- `yes`: безкінечно виводить рядок +- `cal`: хороший календар +- `env`: виводить змінні середовища (корисно в Bash-скриптах) +- `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) +- `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках +- `cut`, `paste` і` join`: маніпуляції з даними +- `fmt`: форматування параграфів у тексті +- `pr`: відформатовує текст в сторінки/колонки +- `fold`: (обернути) обмежити довжину рядків у файлі +- `column`: форматувати текст в колонки або таблиці +- `expand` і` unexpand`: конвертація між табами і пробілами +- `nl`: додає номери до рядків +- `seq`: вивести послідовність чисел +- `bc`: калькулятор +- `factor`: піднести число в степінь +- [`gpg`](https://gnupg.org/): зашифрувати і підписати файли +- `toe`: таблиця терміналів terminfo з описом +- `nc`: дебаггінг мережі і передачі даних +- `socat`: перемикач сокетів і перенаправлення tcp-портів (схоже на `netcat`) +- [`slurm`](https://github.com/mattthias/slurm): візуалізація трафіку мережі +- `dd`: перенесення інформації між файлами фбо пристроями +- `file`: визначає тип файлу +- `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно +- `stat`: інформація про файл +- `time`: execute and time a commands +- `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` +- `logrotate`: змінити, зжати і відправити лаги. +- `watch`: запустити команду повторно, показуючи результати і/або виділення змін +- `tac`: вивести файли посимвольно навпаки ("тівирп") +- `shuf`: випадкова вибірка рядків з файлу +- `comm`: порядково порівняти відсортовані файли +- `pv`: моніторинг прогресу проходження інформації через пайп +- `hd`, `hexdump`, `xxd`, `biew` і `bvi`: дамп і редагування бінарних файлів +- `strings`: витягнути текст із бінарних файлів +- `tr`: маніпуляція з char (символьним типом) +- `iconv` або `uconv`: конвертація кодувань +- `split` і `csplit`: розбити файли +- `sponge`: прочитати весь інпут перед тим, як його записати. Корисно, коли читаєш з того ж файлу, куди записуєш. Наприклад, ось так: `grep -v something some-file | sponge some-file` +- `units`: конвертер. Метри в кілометри, версти в п'яді (дивіться `/usr/share/units/definitions.units`) +- `apg`: генерація паролів +- `7z`: архіватор з високим ступенем стиснення +- `ldd`: показує залежності програми від системних бібліотек +- `nm`: symbols from object files +- `ab`: бенчмаркінг веб-серверів +- `strace`: дебагінг системних викликів +- `mtr`: трасування для дебаггінга мережі +- `cssh`: графічний конкурент Shel +- `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі +- `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі +- `ngrep`: grep для шару мережі (network layer) +- `host` і `dig`: пошук DNS +- `lsof`: процесинг дескрипторів і інформація по сокетах +- `dstat`: корисна статистика ОС +- [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам +- `iostat`: статистика використання жорсткого диска +- `mpstat`: статистика використання CPU +- `vmstat`: статистика використання оперативної пам'яті +- `htop`: вдосконалена версія `top` +- `last`: історія входів у систему +- `w`: хто є залогіненим +- `id`: інформація про користувача/групу +- `sar`: historic system stats +- `iftop` або` nethogs`: використання мережі конкретним сокетом або процесом +- `ss`: статистика сокетів +- `dmesg`: помилки завантаження і помилки системи +- `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене +- `hdparm`: маніпуляція/налаштування SATA/ATA диску +- `lsb_release`: інформація про дистрибутив Linux +- `lsblk`: cписок блокових пристроїв комп'ютера: дерево ваших дисків і логічних дисків +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: інформація про апаратне забезпечення, включає CPU, BIOS, RAID, графічну карту і т.д. +- `lsmod` і `modinfo`: показує список і детальну інформацію модулів ядра. +- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" + + ##Macos-only ##Інші-джерела From e6d6c730ab691a08cefd7098e71f2cc36ff23634 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:13 +0200 Subject: [PATCH 078/337] * --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7407e1..86c7c38 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)], [Українська](README-ua.md)] # The Art of Command Line From a15102dfd1f5f3671cfcc3f18f39f4287f0a0bd9 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:33 +0200 Subject: [PATCH 079/337] macos only --- README-ua.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-ua.md b/README-ua.md index e35269f..ae51c6b 100644 --- a/README-ua.md +++ b/README-ua.md @@ -314,6 +314,15 @@ ##Macos-only +Деякі речі, які підходять *тільки* для Мака. + +- Система управління пакетами - `brew` (Homebrew) і `port` (MacPorts) можуть бути використані для того, щоб встановити більшість програм, згаданих у цьому документі. +- Копіюйте вивід будь-якої консольної команди до графічної за допомогою `pbcopy` і вставляйте вивід за допомогою `pbpaste`. +- Щоб відкрити файл або десктопну програму, використовуйте `open` або `open -a /Applications/Whatever.app`. +- Spotlight: Шукає файли в консолі, через `mdfind`, і дивиться метадані (наприклад EXIF ​​інформацію із фотографії) із `mdls`. +- Не забувайте, що MacOS створений на основі BSD Unix і багато команд (наприклад `ps`, `ls`, `tail`, `awk`, `sed`) мають невеликі відмінності від лінуксових. Це обумовлено впливом `UNIX System V` і `GNU Tools`. Різницю можна помітити, побачивши заголовок "BSD General Commands Manual." Інколи на MacOS можна поставити GNU-версії програм, наприклад `gawk` і `gsed`. Коли пишете кросплатформені Bash-скрипти, намагайтеся уникати використовувати команди, які можуть відрізнятися (наприклад, краще використовуйте Python або `perl`), або ретельно все перевіряйте. + + ##Інші-джерела ##Декламація From 52bd821a2f161b01a05f1d5287f83435dcff235b Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:55 +0200 Subject: [PATCH 080/337] + others source --- README-ua.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README-ua.md b/README-ua.md index ae51c6b..eb5a489 100644 --- a/README-ua.md +++ b/README-ua.md @@ -325,6 +325,12 @@ ##Інші-джерела +- [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. +- [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 67f92e80f68069f6db57d28849fa29e0780a21ac Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:40:21 +0200 Subject: [PATCH 081/337] + declamation --- README-ua.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-ua.md b/README-ua.md index eb5a489..11b91fb 100644 --- a/README-ua.md +++ b/README-ua.md @@ -333,4 +333,7 @@ ##Декламація +За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. +Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) + From 7c58e983383ab089687c37b75dee516477743d90 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:41:18 +0200 Subject: [PATCH 082/337] + license --- README-ua.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README-ua.md b/README-ua.md index 11b91fb..c20d476 100644 --- a/README-ua.md +++ b/README-ua.md @@ -337,3 +337,8 @@ Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) +## Лицензія + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Ця работа і переклад на Українську мову розповсюджується за ліцензією [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From eac3b7bc266dc94d7b1397744c5bb3ed070a693f Mon Sep 17 00:00:00 2001 From: rahul kavale Date: Thu, 29 Oct 2015 23:57:53 +0530 Subject: [PATCH 083/337] Added timeout command --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e7407e1..4576a0d 100644 --- a/README.md +++ b/README.md @@ -386,6 +386,8 @@ A few examples of piecing together commands: - `time`: execute and time a command +- `timeout`: execute a command for specified amount of time and stop the process when the specified amount of time completes. + - `lockfile`: create semaphore file that can only be removed by `rm -f` - `logrotate`: rotate, compress and mail logs. From 96ecd31c47ed438ce9f95b28a4f4417bd0f8b818 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 1 Nov 2015 19:26:29 -0800 Subject: [PATCH 084/337] Clarify rename command. Fixes #296. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e7407e1..656f628 100644 --- a/README.md +++ b/README.md @@ -207,12 +207,12 @@ Notes: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- To rename many files at once according to a pattern, use `rename`. For complex renames, [`repren`](https://github.com/jlevy/repren) may help. +- To rename many files and/or search and search and replace within files, try [`repren`](https://github.com/jlevy/repren). The `rename` command also does renames on some Linux distributions (but it is less consistently available). ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files foo.bak -> foo: + rename 's/\.bak$//' *.bak ``` - As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: From 122a25db8c164ba6df7213cc442a2a1f0899b0ee Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 10:20:25 -0800 Subject: [PATCH 085/337] More fixups on repren and rename. Re #296. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 218ab42..d5f74d3 100644 --- a/README.md +++ b/README.md @@ -207,11 +207,13 @@ Notes: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- To rename many files and/or search and search and replace within files, try [`repren`](https://github.com/jlevy/repren). The `rename` command also does renames on some Linux distributions (but it is less consistently available). +- To rename multiple files and/or search and replace within files, try [`repren`](https://github.com/jlevy/repren). (In some cases the `rename` command also allows multiple renames, but be careful as its functionality is not the same on all Linux distributions.) ```sh # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . - # Recover backup files foo.bak -> foo: + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: rename 's/\.bak$//' *.bak ``` From 24510aab57a49742c55fd17576c3355c33dd1b4c Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:06:54 +0200 Subject: [PATCH 086/337] - typo --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index c20d476..b817b12 100644 --- a/README-ua.md +++ b/README-ua.md @@ -264,7 +264,7 @@ - `stat`: інформація про файл - `time`: execute and time a commands - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` -- `logrotate`: змінити, зжати і відправити лаги. +- `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін - `tac`: вивести файли посимвольно навпаки ("тівирп") - `shuf`: випадкова вибірка рядків з файлу From fdf6fed6b05f3f307cea29c4ef754f5485ae68a3 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:07:03 +0200 Subject: [PATCH 087/337] + timeout --- README-ua.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-ua.md b/README-ua.md index b817b12..fa75fb7 100644 --- a/README-ua.md +++ b/README-ua.md @@ -263,6 +263,7 @@ - `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно - `stat`: інформація про файл - `time`: execute and time a commands +- `timeout`: зупиняє коменду після того як завершиться вказаний чав в аргументі - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` - `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін From 434dace89b0a9f934c578dacfc97d7a60269aa00 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:10:17 +0200 Subject: [PATCH 088/337] rename --- README-ua.md => README-uk.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README-ua.md => README-uk.md (100%) diff --git a/README-ua.md b/README-uk.md similarity index 100% rename from README-ua.md rename to README-uk.md From 2b8e74cc24c3308affb22e5539bb198dfafc63ad Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:15:43 +0200 Subject: [PATCH 089/337] sort --- README-es.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 +- 9 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README-es.md b/README-es.md index 00ce770..3c4fa6c 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ja.md b/README-ja.md index c9fd8ae..6c348b9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index 5f78304..1b1e820 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-pt.md b/README-pt.md index 659586a..1372a51 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ru.md b/README-ru.md index 335f7c4..1743d93 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-sl.md b/README-sl.md index 562c239..dc2d310 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-uk.md b/README-uk.md index fa75fb7..4d350a7 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) -] +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)] # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index 2d04cf1..6be9d9a 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README.md b/README.md index 86c7c38..59b0a58 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)], [Українська](README-ua.md)] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)]] # The Art of Command Line From efdc807dc313bf674ce9549b843cfbc9909e8960 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 18:25:20 -0800 Subject: [PATCH 090/337] Update author roles and stats. Add uk maintainer. Run "ghizmo assemble-authors". --- AUTHORS.md | 16 +++++++++------- admin/authors-info.yml | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 727b3a4..3d4ce01 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -14,7 +14,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Bryce J. (bj1)](https://github.com/bj1) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1) * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[11+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [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)_ * [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) @@ -24,8 +24,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi) * [Dave Loyall (daveloyall)](https://github.com/daveloyall) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall) * [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges) -* [James Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) +* [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)_ * [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) @@ -35,9 +36,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ * [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) -* [Ivgeni Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) +* [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) — [102+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [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_ * [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) @@ -55,8 +56,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[18+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [16+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [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)_ +* [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) @@ -65,6 +67,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [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)_ * [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) @@ -78,7 +81,6 @@ Contributors are listed in alphabetical order by GitHub login. * [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) -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[0](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 30438d6..023f5af 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,4 +36,4 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translator (ua) + stepan0904: translator and maintaner (uk) From cdf9ee30cbb6d8e0fa718ca89323b82b18dc93d5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 18:27:06 -0800 Subject: [PATCH 091/337] Typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 666e78b..3933df4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)]] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] # The Art of Command Line From f57d4237462d97b8a54470cafbcdf04afab97f88 Mon Sep 17 00:00:00 2001 From: frankenbot Date: Mon, 2 Nov 2015 21:13:11 -0800 Subject: [PATCH 092/337] Update redirects --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3933df4..f160541 100644 --- a/README.md +++ b/README.md @@ -243,14 +243,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). -- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils). +- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils/). - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. ## System debugging -- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). +- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jkbrzt/httpie). - To know current cpu/disk status, the classic tools are `top` (or the better `htop`), `iostat`, and `iotop`. Use `iostat -mxz 15` for basic CPU and detailed per-partition disk stats and performance insight. @@ -282,7 +282,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - When debugging why something went wrong in the past, `sar` can be very helpful. It shows historic statistics on CPU, memory, network, etc. -- For deeper systems and performance analyses, look at `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), and [`sysdig`](https://github.com/draios/sysdig). +- For deeper systems and performance analyses, look at `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), and [`sysdig`](https://github.com/draios/sysdig). - Check what OS you're on with `uname` or `uname -a` (general Unix/kernel info) or `lsb_release -a` (Linux distro info). From d2c2853d98fb1ae62eadc17d62892fa3d04ae60f Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Tue, 3 Nov 2015 10:03:26 +0200 Subject: [PATCH 093/337] es: update spanish translation at 03-11-2015 --- README-es.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README-es.md b/README-es.md index eedd008..75fe37b 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] @@ -208,12 +208,14 @@ Notas: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- Para renombrar varios archivos a la vez de acuerdo a un patrón, usa `rename`. Para renombramientos complejos, [`repren`](https://github.com/jlevy/repren) puede ayudar. +- Para renombrar multiples y/o buscar y remplazar dentro de archivos, intenta [`repren`](https://github.com/jlevy/repren). (En algunos casos el comando `rename` también permite multiples renombramientos, pero sea cuidadoso ya que esta funcionalidad no es igual en todas las distribuciones de Linux.) ```sh - # Recuperar archivos de respaldo foo.bak -> foo: - rename 's/\.bak$//' *.bak # Renombramiento completo de archivos, carpetas y contenidos foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recuperar archivos de respaldo cualquier.bak -> cualquier: + repren --renames --from '.*)\.bak' --to '\1' *.bak + # Igual que arriba, utilizando rename, si esta disponible: + rename 's/\.bak$//' *.bak ``` - Como dice la página de man, `rsync` es una muy rápida y extraordinariamente versatil herramienta de copiado. Esta se conoce por la sincronización entre máquinas pero es igualmente útil localmente. Esta también se encuentra entre las [formas más rápidas](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) para borrar un gran número de archivos: @@ -387,6 +389,8 @@ Algunos ejemplos de comandos reunidos: - `time`: ejecuta y calcula el tiempo de ejecución de un comando +- `timeout`: ejecuta un comando especificando una cantidad de tiempo y deteniendo el proceso cuando la cantidad de tiempo especificado se completa. + - `lockfile`: crea un archivo semáforo que puedes solo ser removido con `rm -f` - `logrotate`: rota, comprime y registra correos electrónicos. From 5a6b66715c456b4670fcb4aeb08db57e1bbba752 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Tue, 3 Nov 2015 10:05:11 +0200 Subject: [PATCH 094/337] Merge branch 'jlevy/master' Conflicts: README-es.md --- AUTHORS.md | 15 +- README-es.md | 10 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 344 +++++++++++++++++++++++++++++++++++++++++ README-zh.md | 2 +- README.md | 12 +- admin/authors-info.yml | 1 + 11 files changed, 371 insertions(+), 23 deletions(-) create mode 100644 README-uk.md diff --git a/AUTHORS.md b/AUTHORS.md index 17819c4..3d4ce01 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -14,7 +14,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Bryce J. (bj1)](https://github.com/bj1) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1) * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[11+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [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)_ * [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) @@ -24,8 +24,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi) * [Dave Loyall (daveloyall)](https://github.com/daveloyall) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall) * [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges) -* [James Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) +* [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)_ * [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) @@ -35,9 +36,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ * [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) -* [Ivgeni Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) +* [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) — [102+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [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_ * [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) @@ -55,8 +56,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[18+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [16+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [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)_ +* [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) @@ -65,6 +67,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [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)_ * [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) diff --git a/README-es.md b/README-es.md index 75fe37b..3156061 100644 --- a/README-es.md +++ b/README-es.md @@ -208,14 +208,12 @@ Notas: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- Para renombrar multiples y/o buscar y remplazar dentro de archivos, intenta [`repren`](https://github.com/jlevy/repren). (En algunos casos el comando `rename` también permite multiples renombramientos, pero sea cuidadoso ya que esta funcionalidad no es igual en todas las distribuciones de Linux.) +- Para renombrar varios archivos a la vez de acuerdo a un patrón, usa `rename`. Para renombramientos complejos, [`repren`](https://github.com/jlevy/repren) puede ayudar. ```sh + # Recuperar archivos de respaldo foo.bak -> foo: + rename 's/\.bak$//' *.bak # Renombramiento completo de archivos, carpetas y contenidos foo -> bar: repren --full --preserve-case --from foo --to bar . - # Recuperar archivos de respaldo cualquier.bak -> cualquier: - repren --renames --from '.*)\.bak' --to '\1' *.bak - # Igual que arriba, utilizando rename, si esta disponible: - rename 's/\.bak$//' *.bak ``` - Como dice la página de man, `rsync` es una muy rápida y extraordinariamente versatil herramienta de copiado. Esta se conoce por la sincronización entre máquinas pero es igualmente útil localmente. Esta también se encuentra entre las [formas más rápidas](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) para borrar un gran número de archivos: @@ -389,8 +387,6 @@ Algunos ejemplos de comandos reunidos: - `time`: ejecuta y calcula el tiempo de ejecución de un comando -- `timeout`: ejecuta un comando especificando una cantidad de tiempo y deteniendo el proceso cuando la cantidad de tiempo especificado se completa. - - `lockfile`: crea un archivo semáforo que puedes solo ser removido con `rm -f` - `logrotate`: rota, comprime y registra correos electrónicos. diff --git a/README-ja.md b/README-ja.md index 2e5a31f..6c348b9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index d576ce3..1b1e820 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-pt.md b/README-pt.md index fc066e0..1372a51 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ru.md b/README-ru.md index 644896a..1743d93 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-sl.md b/README-sl.md index 96cf4f1..dc2d310 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-uk.md b/README-uk.md new file mode 100644 index 0000000..4d350a7 --- /dev/null +++ b/README-uk.md @@ -0,0 +1,344 @@ +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) + + +- [Опис](#Опис) +- [Основи](#Основи) +- [Щоденне використання](#Щоденне-використання) +- [Обробка файлів та інформації](#Обробка-файлів-та-інформації) +- [Дебаггінг](#Дебаггінг) +- [Одним рядком](#Одним-рядком) +- [Складно але корисно](#Складно-але-корисно) +- [MacOS only](#macos-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. Деякі з них - прості й очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все це знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! + +Ця робота є результатом [багатьох авторів і перекладачів](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 (Звичайно перевіривши уже існуючі) + + +## Опис + +Основне: + +- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). +- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Bash-скриптів. +- Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. + +Нотатки: + +- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. + + +##Основи + +- Вивчіть основи 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`. +- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. +- Навчіться використовувати системами управління пакетами `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-*** максимально розширює аргументи. +- Якщо Вам подобаються шорткати 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{}` - корисно. Приклади: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` +- `pstree -p` - допоможе побачити дерево процесів. +- Використовуйте `pgrep` і `pkill` для того, щоб знаходити або слати сигнали до процесів по імені (`-f` корисна опція). +- Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`. +- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійн виконувався у фоні. +- Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP). +- Зверніть увагу на `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 +``` +- У Bash-скриптах підоболочки(subshells) - зручний спосіб групувати команди. Один із найпоширеніших прикладів - тимчасово пересунутися в іншу робочу директорію: +```bash + # Do something in current dir + (cd / some / other / dir && other-command) + # Continue in original dir +``` +- У Bash багато типів простору змінних. Перевірити, чи існує змінна - `${name:? Error message}`. Наприклад, якщо Bash-скрипту потрібен всього один аргумент, просто напишіть `input_file=${1:?usage: $0 input_file}`. Арифметична область видимості: `i=$(( (i + 1) % 5 ))`. Послідовності: `{1..10}`. Обрізка рядків: `${var%suffix}` і `${var#prefix}`. Наприклад, якщо `var=foo.pdf` тоді `echo ${var%.pdf}.txt` виведе `foo.txt`. +- Фігурні скобки, використовуючи `{`...`}` може зменшити необхідність повторно вводити той самий текст і автоматизувати. Це корисно в такому прикладі як `mv foo.{txt,pdf} some-dir` (який пересуває обидва файла), `cp somefile{,.bak}` (який розширюється у `cp somefile somefile.bak`) або `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (яка розширює всі можливі комбінації і створює дерево деректорій). +- Вивід будь-якої команди можна обробити як файл наступним чином `<(some command)`. Наприклад, порівняння локального файлу `/etc/hosts з віддаленим: +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` +- Знайте про *heredoc* -сінтаксис в Bash: `cat << EOF ...`. +- У Bash перенаправляйте стандартні потоки виводу(output) та помилок, ось так: `some-command >logfile 2>&1`. Найчастіше, для того, щоб переконається, що команда не залишить відкритим файл, прив'язавши його до відкритого терміналу, вважається хорошою практикою додавати ` foo: + rename 's/\.bak$//' *.bak + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . +``` +- Як говорить man сторінка, `rsync` дійсно є швидким і універсальним інструментом копіювання файлів, для синхронізації між машинами, але в рівній мірі корисні на локальному рівні. Також [швидке рішення](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) що б видалити велику кількість файлів: +```sh + mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` +- Використовуйте `shuf`, щоб перемішати або вибрати випадкові рядки з файлу. +- Знайте опції для команди `sort`. Для чисел використовуйте `-n` або `-h`, для роботи з числами (наприклад `du -h`). Знайте як працюють ключі (`-t` і `-k`). Зокрема, не забувайте, що вам потрібно писати `-k1,1` для того, щоб впорядкувати тільки перше поле; `-k1` - це означає сортування враховуючи цілий рядок. Може бути корисною (`sort -s`). Наприклад для того, щоб відсортувати найважливіше по другому полю, а другорядне по першому, можна використовувати `sort -k1,1 | sort -s -k2,2`. +- Якщо вам коли-небудь доведеться написати код символу табуляції в терміналі, наприклад, для сортування за табуляції з прапором -t, використовуйте скорочення **ctrl-v** **[Tab]** або напишіть `$'\t'`. Останнє краще, тому що його можна скопіювати/вставити. +- Стандартні інструменти для виправлення вихідного коду це `diff` і` patch`. Також зверніть увагу на `diffstat` для перегляду статистики diff і `sdiff` для крок за кроком diff. Запамятайте `diff -r` працює рекурсивно по всій директорії. Використовуйте `diff -r tree1 tree2 | diffstat` для повного зведення змін. Використовуйте `vimdiff` порівняти і редагувати файли. +- Для бінарних файлів використовуйте `hd`, `hexdump` або `xxd` для простих hex-дампом, і` bvi` або `biew` для зміни бінарників. +- Також для бінарних файлів, `strings` (plus `grep`, etc.) дозволить Вам знайти біти тексту. +- Щоб подивитися різницю в бінарниках (дельта-кодування): `xdelta3`. +- Для конвертування кодувань використовуйте `iconv`. Для більш складних завдань - `uconv`, він підтримує деякі складні фічі Юникода. Наприклад, ця команда переводить рядки з файлу в нижній регістр і прибирає наголоси (наприклад в іспанській мові) +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` +- Для того, щоб розбити файл на шматки, використовуйте `split` (розбиває на шматки за розміром), або `csplit` (за шаблоном або по регулярному виразу). +- Для дати і часу використовуйте `dateadd`, `datediff`, `strptime` ще можете знайти на [`dateutils`](http://www.fresse.org/dateutils). +- Використовуйте `zless`,` zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. + + +##Дебаггінг + +- Дле веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). +- Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`,` netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. +- Для інформації про мережу використовуйте `netstat` і `ss`. +- Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. +- Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. +- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі. +- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. +- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. +- додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. +- Для більш серйозного дебаггінга мережі використовуйте `wireshark`,` tshark`, і `ngrep`. +- Знайте про `strace` і` ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість дебаггінга (`-c`) і можливість причепитися до процесу по pid (` -p`). +- `ldd` для перевірки системних бібліотек. +- Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. +- Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). +- Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. +- Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)), і [`sysdig`](https://github.com/draios/sysdig). +- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` або `lsb_release -a`. +- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це може бути проблеми із залізом або драйверами). + + +##Одним-рядком + +Кілька прикладів склеювання команд: +- Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort` /`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежена пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше: +```sh + cat a b | sort | uniq > c # c is a union b + cat a b | sort | uniq -d > c # c is a intersect b + cat a b b | sort | uniq -u > c # c is set difference a - b +``` +- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`,` / proc`, `/ etc`. +- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні): +```sh + awk '{ x += $3 } END { print x }' myfile +``` +- Якщо вам потрібно подивитися розміри/дати файлів в дереві, це як рекурсивний `ls -l` але легше прочитати це `ls -lR`: +```sh + find . -type f -ls +``` +- Скажемо що у нас є якийсь текстовий файл, наприклад лог веб сервера і на якихось рядках з'являється значення, рядки з яким нам цікаві. Наприклад, `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 {}` - корисна штука. Приклади: +```sh + find. -name '* .py' | xargs grep some_function + cat hosts | xargs -I {} ssh root @ {} hostname +``` +- Запустіть цю функцію, щоб отримати випадкову вибірку із цього документа: +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + + +##Складно-але-корисно + +- `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів +- `m4`: простий макро-процесор +- `yes`: безкінечно виводить рядок +- `cal`: хороший календар +- `env`: виводить змінні середовища (корисно в Bash-скриптах) +- `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) +- `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках +- `cut`, `paste` і` join`: маніпуляції з даними +- `fmt`: форматування параграфів у тексті +- `pr`: відформатовує текст в сторінки/колонки +- `fold`: (обернути) обмежити довжину рядків у файлі +- `column`: форматувати текст в колонки або таблиці +- `expand` і` unexpand`: конвертація між табами і пробілами +- `nl`: додає номери до рядків +- `seq`: вивести послідовність чисел +- `bc`: калькулятор +- `factor`: піднести число в степінь +- [`gpg`](https://gnupg.org/): зашифрувати і підписати файли +- `toe`: таблиця терміналів terminfo з описом +- `nc`: дебаггінг мережі і передачі даних +- `socat`: перемикач сокетів і перенаправлення tcp-портів (схоже на `netcat`) +- [`slurm`](https://github.com/mattthias/slurm): візуалізація трафіку мережі +- `dd`: перенесення інформації між файлами фбо пристроями +- `file`: визначає тип файлу +- `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно +- `stat`: інформація про файл +- `time`: execute and time a commands +- `timeout`: зупиняє коменду після того як завершиться вказаний чав в аргументі +- `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` +- `logrotate`: змінити, зжати і відправити логи. +- `watch`: запустити команду повторно, показуючи результати і/або виділення змін +- `tac`: вивести файли посимвольно навпаки ("тівирп") +- `shuf`: випадкова вибірка рядків з файлу +- `comm`: порядково порівняти відсортовані файли +- `pv`: моніторинг прогресу проходження інформації через пайп +- `hd`, `hexdump`, `xxd`, `biew` і `bvi`: дамп і редагування бінарних файлів +- `strings`: витягнути текст із бінарних файлів +- `tr`: маніпуляція з char (символьним типом) +- `iconv` або `uconv`: конвертація кодувань +- `split` і `csplit`: розбити файли +- `sponge`: прочитати весь інпут перед тим, як його записати. Корисно, коли читаєш з того ж файлу, куди записуєш. Наприклад, ось так: `grep -v something some-file | sponge some-file` +- `units`: конвертер. Метри в кілометри, версти в п'яді (дивіться `/usr/share/units/definitions.units`) +- `apg`: генерація паролів +- `7z`: архіватор з високим ступенем стиснення +- `ldd`: показує залежності програми від системних бібліотек +- `nm`: symbols from object files +- `ab`: бенчмаркінг веб-серверів +- `strace`: дебагінг системних викликів +- `mtr`: трасування для дебаггінга мережі +- `cssh`: графічний конкурент Shel +- `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі +- `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі +- `ngrep`: grep для шару мережі (network layer) +- `host` і `dig`: пошук DNS +- `lsof`: процесинг дескрипторів і інформація по сокетах +- `dstat`: корисна статистика ОС +- [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам +- `iostat`: статистика використання жорсткого диска +- `mpstat`: статистика використання CPU +- `vmstat`: статистика використання оперативної пам'яті +- `htop`: вдосконалена версія `top` +- `last`: історія входів у систему +- `w`: хто є залогіненим +- `id`: інформація про користувача/групу +- `sar`: historic system stats +- `iftop` або` nethogs`: використання мережі конкретним сокетом або процесом +- `ss`: статистика сокетів +- `dmesg`: помилки завантаження і помилки системи +- `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене +- `hdparm`: маніпуляція/налаштування SATA/ATA диску +- `lsb_release`: інформація про дистрибутив Linux +- `lsblk`: cписок блокових пристроїв комп'ютера: дерево ваших дисків і логічних дисків +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: інформація про апаратне забезпечення, включає CPU, BIOS, RAID, графічну карту і т.д. +- `lsmod` і `modinfo`: показує список і детальну інформацію модулів ядра. +- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" + + +##Macos-only + +Деякі речі, які підходять *тільки* для Мака. + +- Система управління пакетами - `brew` (Homebrew) і `port` (MacPorts) можуть бути використані для того, щоб встановити більшість програм, згаданих у цьому документі. +- Копіюйте вивід будь-якої консольної команди до графічної за допомогою `pbcopy` і вставляйте вивід за допомогою `pbpaste`. +- Щоб відкрити файл або десктопну програму, використовуйте `open` або `open -a /Applications/Whatever.app`. +- Spotlight: Шукає файли в консолі, через `mdfind`, і дивиться метадані (наприклад EXIF ​​інформацію із фотографії) із `mdls`. +- Не забувайте, що MacOS створений на основі BSD Unix і багато команд (наприклад `ps`, `ls`, `tail`, `awk`, `sed`) мають невеликі відмінності від лінуксових. Це обумовлено впливом `UNIX System V` і `GNU Tools`. Різницю можна помітити, побачивши заголовок "BSD General Commands Manual." Інколи на MacOS можна поставити GNU-версії програм, наприклад `gawk` і `gsed`. Коли пишете кросплатформені Bash-скрипти, намагайтеся уникати використовувати команди, які можуть відрізнятися (наприклад, краще використовуйте Python або `perl`), або ретельно все перевіряйте. + + +##Інші-джерела + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. +- [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. + + +##Декламація + +За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. +Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) + + +## Лицензія + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Ця работа і переклад на Українську мову розповсюджується за ліцензією [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). diff --git a/README-zh.md b/README-zh.md index eb27bae..6be9d9a 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README.md b/README.md index e7407e1..3933df4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] # The Art of Command Line @@ -207,12 +207,14 @@ Notes: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- To rename many files at once according to a pattern, use `rename`. For complex renames, [`repren`](https://github.com/jlevy/repren) may help. +- To rename multiple files and/or search and replace within files, try [`repren`](https://github.com/jlevy/repren). (In some cases the `rename` command also allows multiple renames, but be careful as its functionality is not the same on all Linux distributions.) ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak ``` - As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: @@ -386,6 +388,8 @@ A few examples of piecing together commands: - `time`: execute and time a command +- `timeout`: execute a command for specified amount of time and stop the process when the specified amount of time completes. + - `lockfile`: create semaphore file that can only be removed by `rm -f` - `logrotate`: rotate, compress and mail logs. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 77c54cd..023f5af 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,3 +36,4 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) + stepan0904: translator and maintaner (uk) From ca89c0761be0b2c3853e44f73f129cfbc2782c3e Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Tue, 3 Nov 2015 10:11:24 +0200 Subject: [PATCH 095/337] es: resolve merged conflicts. --- README-es.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README-es.md b/README-es.md index 3156061..1843a38 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] @@ -208,12 +208,14 @@ Notas: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- Para renombrar varios archivos a la vez de acuerdo a un patrón, usa `rename`. Para renombramientos complejos, [`repren`](https://github.com/jlevy/repren) puede ayudar. +- Para renombrar multiples y/o buscar y remplazar dentro de archivos, intenta [`repren`](https://github.com/jlevy/repren). (En algunos casos el comando `rename` también permite multiples renombramientos, pero sea cuidadoso ya que esta funcionalidad no es igual en todas las distribuciones de Linux.) ```sh - # Recuperar archivos de respaldo foo.bak -> foo: - rename 's/\.bak$//' *.bak # Renombramiento completo de archivos, carpetas y contenidos foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recuperar archivos de respaldo cualquier.bak -> cualquier: + repren --renames --from '.*)\.bak' --to '\1' *.bak + # Igual que arriba, utilizando rename, si esta disponible: + rename 's/\.bak$//' *.bak ``` - Como dice la página de man, `rsync` es una muy rápida y extraordinariamente versatil herramienta de copiado. Esta se conoce por la sincronización entre máquinas pero es igualmente útil localmente. Esta también se encuentra entre las [formas más rápidas](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) para borrar un gran número de archivos: @@ -387,6 +389,8 @@ Algunos ejemplos de comandos reunidos: - `time`: ejecuta y calcula el tiempo de ejecución de un comando +- `timeout`: ejecuta un comando especificando una cantidad de tiempo y deteniendo el proceso cuando la cantidad de tiempo especificado se completa. + - `lockfile`: crea un archivo semáforo que puedes solo ser removido con `rm -f` - `logrotate`: rota, comprime y registra correos electrónicos. From f2fc6b588114ada9c5b270a6d1f33b7a53772091 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 6 Nov 2015 08:41:34 +0100 Subject: [PATCH 096/337] sl: sync translation --- README-sl.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README-sl.md b/README-sl.md index dc2d310..e502e67 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,4 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] # Umetnost ukazne vrstice @@ -209,12 +207,14 @@ Opombe: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- Da preimenujete mnoge datoteke naenkrat glede na vzorec, uporabite `rename`. Za kompleksna preimenovanja lahko pomaga [`repren`](https://github.com/jlevy/repren). +- Da preimenujete več datotek in/ali poiščete in poiščete in zamenjate znotraj datotek, poskusite [`repren`](https://github.com/jlevy/repren). (V nekaterih primerih ukaz `rename` tudi omogoča preimenovanje, vendar bodite pozorni, saj funkcionalnost ni enaka na vseh distribucijah Linux). ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak ``` - Kot pravi stran vodiča, je `rsync` resnično hiter in izredno vsestransko orodje kopiranja datotek. Znano je po sinhronizaciji med napravami vendar je enakovredno uporaben tudi lokalno. Je tudi eden izmed [najhitrejših načinov](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) za izbris velikega števila datotek: @@ -243,14 +243,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Da razcepite datoteke na dele, glejte `split` (da razcepite po velikosti) in `csplit` (da razcepite po vzorcu). -- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils). +- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils/). - Uporabite `zless`, `zmore`, `zcat` in `zgrep` za operiranje na kompresiranih datotekah. ## Sistemsko razhroščevanje -- Za spletno razhroščevanje, sta priročna `curl` in `curl -I` ali pa njun ekvivalent `wget`, ali bolj moderen [`httpie`](https://github.com/jakubroztocil/httpie). +- Za spletno razhroščevanje, sta priročna `curl` in `curl -I` ali pa njun ekvivalent `wget`, ali bolj moderen [`httpie`](https://github.com/jkbrzt/httpie). - Da izveste trenutni status diska/procesorja/omrežja, so na voljo klasična orodja `top`, (ali bolje `htop`), `iostat` in `iotop` . Uporabite `iostat -mxz 15` za osnovno statistiko CPU in podrobno na particijo statistiko diska in vpogled v uspešnost. @@ -282,7 +282,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Ko se razhroščuje, zakaj je šlo nekaj narobe v preteklosti, je lahko zelo uporaben `sar`. Prikazuje statistiko zgodovine na procesorju, spominu, omrežju itd. -- Za globlje analize sistema in uspešnosti, poglejte `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)) in [`sysdig`](https://github.com/draios/sysdig). +- Za globlje analize sistema in uspešnosti, poglejte `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)) in [`sysdig`](https://github.com/draios/sysdig). - Preverite na katerem operacijskem sistemu ste z `uname` ali `uname -a` (splošne informacije Unix-a/jedra) ali `lsb_release -a` (informacije distribucuje Linux). @@ -388,6 +388,8 @@ Nekaj primerov sestavljanja ukazov skupaj: - `time`: izvrši in da ukaz v čas +- `timeout`: izvršite ukaz za določen čas in ustavite proces, ko se določen čas konča. + - `lockfile`: ustvari semaforno datoteko, ki je lahko odstranjena samo z `rm -f` - `logrotate`: rotiranje, kompresiranje in pošiljanje dnevnikov po e-pošti. From 58444a7d606ef9a3f4b89d2ed73252749d6f3aa9 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 11:03:56 +0800 Subject: [PATCH 097/337] zh: Refine disclaimer. --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 6be9d9a..9a1a6d1 100644 --- a/README-zh.md +++ b/README-zh.md @@ -493,7 +493,7 @@ ## 免责声明 -除去特别微小的任务,记录下这些代码以便他人查看。责任往往伴随着能力,*可以*做并不意味着应该做。 +除去特别微小的任务,编写代码是出于方便阅读的目的。能力往往伴随着责任。你 *可以* 在 Bash 中做一些事并不意味着你应该去做!;) ## 授权条款 From 406adb307761b541ecf259349cc221a3391163bd Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 11:09:39 +0800 Subject: [PATCH 098/337] zh: Mention AUTHORS.md. --- README-zh.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 9a1a6d1..6d3cff1 100644 --- a/README-zh.md +++ b/README-zh.md @@ -6,6 +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) + - [必读](#必读) - [基础](#基础) - [日常使用](#日常使用) @@ -23,7 +24,7 @@ 熟练使用命令行是一种常常被忽视或被认为难以掌握的技能,但实际上,它可以提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时发现的一些关于命令行的使用的小技巧的摘要。有些小技巧是非常基础的,而另外一些则是相当复杂的甚至晦涩难懂的。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 -这里的大部分内容 +这篇文章是[许多作者和译者](AUTHORS.md)共同的成果。这里的大部分内容 [首次](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [出现](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) 于 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know),但考虑到这里的人们都具有学习的天赋且乐于接受别人的建议,使用 Github 来做这件事是更佳的选择。如果你在本文中发现了错误或者存在可以改善的地方,请果断提交 Issue 或 Pull Request!(当然在提交前请看一下必读节和已有的 PR/issue)。 From 4dff08b5146b1f1c893efb603aa2e68265b74a0a Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 11:22:44 +0800 Subject: [PATCH 099/337] zh: Refine "More resources" section --- README-zh.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6d3cff1..4de5d19 100644 --- a/README-zh.md +++ b/README-zh.md @@ -487,9 +487,10 @@ ## 更多资源 - [awesome-shell](https://github.com/alebcay/awesome-shell):一份精心组织的命令行工具及资源的列表。 -- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):为了编写更好的脚本文件。. -- [shellcheck](https://github.com/koalaman/shellcheck):一个 shell 脚本分析工具,基本上等同于 bash/sh/zsh 的 lint。 -- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):在 shell 脚本里正确处理文件名的好工具。 +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line):一份针对 Mac OS 命令行的更深入的指南。 +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):为了编写更好的脚本文件。 +- [shellcheck](https://github.com/koalaman/shellcheck):一个静态 shell 脚本分析工具,本质上是 bash/sh/zsh 的 lint。 +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):有关如何在 shell 脚本里正确处理文件名的细枝末节。 ## 免责声明 From 7cefab0c54ab8d03bb06ef1c091a85d569f1c46b Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 11:34:55 +0800 Subject: [PATCH 100/337] zh: Refine section "MacOS X only" --- README-zh.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 4de5d19..0811931 100644 --- a/README-zh.md +++ b/README-zh.md @@ -475,7 +475,7 @@ - 用 `pbcopy` 复制任何命令的输出到桌面应用,用 `pbpaste` 粘贴输入。 -- 在终端中将 Option 键视为 alt 键,Preferences -> Profiles -> Keyboard 勾选上 "Use Option as Meta key"。 +- 若要在 Mac OS 终端中将 Option 键视为 alt 键(例如在上面介绍的 **alt-b**, **alt-f** 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。 - 用 `open` 或者 `open -a /Applications/Whatever.app` 使用桌面应用打开文件。 @@ -483,6 +483,8 @@ - 注意 MacOS 系统是基于 BSD UNIX 的,许多命令(例如 `ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 "BSD General Commands Manual" 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如 `gawk` 和 `gsed` 对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者 `perl` )或者经过仔细的测试。 +- 用 `sw_vers` 获取 MacOS 的版本信息。 + ## 更多资源 From 517d5a5442253a9d9753c072ffca5ea4d1d85aca Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 11:48:13 +0800 Subject: [PATCH 101/337] zh: Refine section "One-liners". --- README-zh.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README-zh.md b/README-zh.md index 0811931..b9abad2 100644 --- a/README-zh.md +++ b/README-zh.md @@ -12,7 +12,7 @@ - [日常使用](#日常使用) - [文件及数据处理](#文件及数据处理) - [系统调试](#系统调试) -- [一行代码](#一行代码) +- [单行代码](#单行代码) - [冷门但有用](#冷门但有用) - [仅限 MacOS X 系统](#仅限-macos-x-系统) - [更多资源](#更多资源) @@ -187,7 +187,7 @@ - 关于 Amazon S3,[`s3cmd`](https://github.com/s3tools/s3cmd) 很方便而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 更快。Amazon 官方的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础。 -- 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,详见后文一行代码节。另外可以了解一下 `comm`。 +- 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,详见后文单行代码节。另外可以了解一下 `comm`。 - 了解如何使用 `cut`,`paste` 和 `join` 来更改文件。很多人都会使用 `cut`,但几乎都不会使用 `join`。 @@ -277,7 +277,7 @@ - 无论什么东西工作得很欢乐时试试 `dmesg`(可能是硬件或驱动问题)。 -## 一行代码 +## 单行代码 一些命令组合的例子: @@ -288,14 +288,14 @@ cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- 使用 `grep . *` 来阅读检查目录下所有文件的内容,例如检查一个充满配置文件的目录比如 `/sys`、`/proc`、`/etc`。 +- 使用 `grep . *`(每行都会附上文件名)或者 `head -100 *`(每个文件有一个标题)来阅读检查目录下所有文件的内容。这在检查一个充满配置文件的目录(如 `/sys`、`/proc`、`/etc`)时特别好用。 - 计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍): ```sh awk '{ x += $3 } END { print x }' myfile ``` -- 如果你想在文件树上查看大小\日期,这可能看起来像递归版的 `ls -l` 但比 `ls -lR` 更易于理解: +- 如果你想在文件树上查看大小/日期,这可能看起来像递归版的 `ls -l` 但比 `ls -lR` 更易于理解: ```sh find . -type f -ls ``` From 104e56119e2ea10460d2b9235343be0babe79478 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 12:32:31 +0800 Subject: [PATCH 102/337] zh: Refine & sync section "Processing files and data". --- README-zh.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/README-zh.md b/README-zh.md index b9abad2..963bea7 100644 --- a/README-zh.md +++ b/README-zh.md @@ -175,7 +175,7 @@ - 使用 [`ag`](https://github.com/ggreer/the_silver_searcher) 在源代码或数据文件里检索(比 `grep -r` 更好)。 -- 将HTML转为文本:`lynx -dump -stdin` +- 将 HTML 转为文本:`lynx -dump -stdin` - Markdown,HTML,以及所有文档格式之间的转换,试试 [`pandoc`](http://pandoc.org/)。 @@ -183,6 +183,8 @@ - 使用 [`jq`](http://stedolan.github.io/jq/) 处理 JSON。 +- 使用 [`shyaml`](https://github.com/0k/shyaml) 处理 YAML。 + - Excel 或 CSV 文件的处理,[csvkit](https://github.com/onyxfish/csvkit) 提供了 `in2csv`,`csvcut`,`csvjoin`,`csvgrep` 等工具。 - 关于 Amazon S3,[`s3cmd`](https://github.com/s3tools/s3cmd) 很方便而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 更快。Amazon 官方的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础。 @@ -204,12 +206,19 @@ perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- 依据某种模式批量重命名多个文件,使用 `rename`。对于复杂的重命名规则,[`repren`](https://github.com/jlevy/repren) 或许有帮助。 +- 使用 [`repren`](https://github.com/jlevy/repren) 来批量重命名,或是在多个文件中搜索替换。(有些时候 `rename` 命令也可以批量重命名,但要注意,它在不同 Linux 发行版中的功能并不完全一样。) ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak - # Full rename of filenames,directories,and contents foo -> bar: + # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- 根据 man 页面的描述,`rsync` 真的是一个快速且非常灵活的文件复制工具。它通常被用于机器间的同步,但在本地也同样有用。它同时也是删除大量文件的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)之一: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - 使用 `shuf` 从一个文件中随机选取多行。 @@ -222,7 +231,7 @@ - 对于二进制文件,使用 `hd` 使其以十六进制显示以及使用 `bvi` 来编辑二进制。 -- 同样对于二进制文件,使用 `strings`(包括 `grep` 等等)允许你查找一些文本。 +- 同样对于二进制文件,`strings`(包括 `grep` 等等)允许你查找一些文本。 - 二进制文件对比(Delta 压缩),使用 `xdelta3`。 @@ -233,7 +242,9 @@ - 拆分文件,查看 `split`(按大小拆分)和 `csplit`(按模式拆分)。 -- 使用 `zless`,`zmore`,`zcat` 和 `zgrep`对压缩过的文件进行操作。 +- 用 [`dateutils`](http://www.fresse.org/dateutils/) 中的 `dateadd`, `datediff`, `strptime` 等工具操作日期和时间表达式。 + +- 使用 `zless`,`zmore`,`zcat` 和 `zgrep` 对压缩过的文件进行操作。 ## 系统调试 From 2d70262edc5dbb9919b70039e10dd2907de480e2 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 12:58:37 +0800 Subject: [PATCH 103/337] zh: Refine section "Everyday use" --- README-zh.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README-zh.md b/README-zh.md index 963bea7..06f09cd 100644 --- a/README-zh.md +++ b/README-zh.md @@ -72,7 +72,7 @@ ## 日常使用 -- 在 Bash 中,可以使用 **Tab** 自动补全参数,使用 **ctrl-r** 搜索命令行历史。 +- 在 Bash 中,可以使用 **Tab** 自动补全参数,使用 **ctrl-r** 搜索命令行历史(在按下之后,键入便可以搜索,重复按下 **ctrl-r** 会在更多匹配中循环,按下 **Enter** 会执行找到的命令,按下右方向键会将结果放入当前行中,使你可以进行编辑)。 - 在 Bash 中,可以使用 **ctrl-w** 删除你键入的最后一个单词,使用 **ctrl-u** 删除整行,使用 **alt-b** 和 **alt-f** 以单词为单位移动光标,使用 **ctrl-a** 将光标移至行首,使用 **ctrl-e** 将光标移至行尾,使用 **ctrl-k** 删除光标至行尾的所有内容,使用 **ctrl-l** 清屏。键入 `man readline` 查看 Bash 中的默认快捷键,内容很多。例如 **alt-.** 循环地移向前一个参数,以及 **alt-*** 展开通配符。 @@ -106,7 +106,7 @@ - 使用 `uptime` 或 `w` 来查看系统已经运行多长时间。 -- 使用`alias`来创建常用命令的快捷形式。例如:`alias ll='ls -latr'`使你可以方便地执行`ls -latr`命令。 +- 使用 `alias` 来创建常用命令的快捷形式。例如:`alias ll='ls -latr'` 使你可以方便地执行`ls -latr`命令。 - 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -u` 来检查是否使用了未赋值的变量,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息: ```bash @@ -114,16 +114,16 @@ trap "echo 'error: Script failed: see failed command above'" ERR ``` -- 在 Bash 脚本中,子 shell(使用括号`(...)`)是一种便捷的方式去组织参数。一个常见的例子是临时地移动工作路径,代码如下: +- 在 Bash 脚本中,子 shell(使用括号 `(...)`)是一种组织参数的便捷方式。一个常见的例子是临时地移动工作路径,代码如下: ```bash # do something in current dir (cd /some/other/dir && other-command) # continue in original dir ``` -- 在 Bash 中,注意到其中有许多形式的扩展。检查变量是否存在:`${name:?error message}`。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。 截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 +- 在 Bash 中,要注意其中有许多形式的扩展。检查变量是否存在:`${name:?error message}`。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 -- 使用括号扩展(`{`...`}`)可以减少不必要的重复输入相似文本以及文本组合。 +- 使用括号扩展(`{`...`}`)来减少输入相似文本,并自动化文本组合。这在某些情况下会很有用,例如 `mv foo.{txt,pdf} some-dir`(同时移动两个文件),`cp somefile{,.bak}`(会被扩展成 `cp somefile somefile.bak`)或者 `mkdir -p test-{a,b,c}/subtest-{1,2,3}`(会被扩展成所有可能的组合,并创建一个目录树)。 - 通过使用 `<(some command)` 可以将输出视为文件。例如,对比本地文件 `/etc/hosts` 和一个远程文件: ```sh From efe70e30b045e1ec2c50475ff1530726adc29c25 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 13:08:34 +0800 Subject: [PATCH 104/337] zh: Refine Meta --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 06f09cd..16ac4ee 100644 --- a/README-zh.md +++ b/README-zh.md @@ -34,7 +34,7 @@ 涵盖范围: -- 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到覆盖面广(尽量包括一切重要的内容),具体(给出最常见的具体的例子)以及简洁(避免一些不必要的东西以及一些偏题的可以在其他地方翻阅到文献的东西)。 每个小技巧在某个特定情境下都是基本的或能够显著地节约时间。 +- 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个小技巧在特定情境下或是基本的,或是能显著节约时间。 - 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 From c2cf2b2a83d158c162dd26cf14941015c154bfe4 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 13:14:27 +0800 Subject: [PATCH 105/337] zh: Refine the first paragraph. --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 16ac4ee..7c955e9 100644 --- a/README-zh.md +++ b/README-zh.md @@ -22,7 +22,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -熟练使用命令行是一种常常被忽视或被认为难以掌握的技能,但实际上,它可以提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时发现的一些关于命令行的使用的小技巧的摘要。有些小技巧是非常基础的,而另外一些则是相当复杂的甚至晦涩难懂的。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 +熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是[许多作者和译者](AUTHORS.md)共同的成果。这里的大部分内容 [首次](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) From cd02db97753913e806f0ee1232d0674d0b75206e Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 13:16:09 +0800 Subject: [PATCH 106/337] zh: Adjust the Chinese word used for 'tips'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 小技巧 => 技巧 --- README-zh.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index 7c955e9..958bb67 100644 --- a/README-zh.md +++ b/README-zh.md @@ -34,7 +34,7 @@ 涵盖范围: -- 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个小技巧在特定情境下或是基本的,或是能显著节约时间。 +- 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 - 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -259,7 +259,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 若要了解内存状态,运行并理解 `free` 和 `vmstat` 的输出。尤其注意“cached”的值,它指的是 Linux 内核用来作为文件缓存的内存大小,因此它与空闲内存无关。 -- Java 系统调试则是一件截然不同的事,一个可以用于 Oracle 的 JVM 或其他 JVM 上的调试的小技巧是你可以运行 `kill -3 ` 同时一个完整的栈轨迹和堆概述(包括 GC 的细节)会被保存到标准输出/日志文件。JDK 中的 `jps`,`jstat`,`jstack`,`jmap` 很有用。[SJK tools](https://github.com/aragozin/jvm-tools) 更高级. +- Java 系统调试则是一件截然不同的事,一个可以用于 Oracle 的 JVM 或其他 JVM 上的调试的技巧是你可以运行 `kill -3 ` 同时一个完整的栈轨迹和堆概述(包括 GC 的细节)会被保存到标准输出/日志文件。JDK 中的 `jps`,`jstat`,`jstack`,`jmap` 很有用。[SJK tools](https://github.com/aragozin/jvm-tools) 更高级. - 使用 `mtr` 去跟踪路由,用于确定网络问题。 @@ -316,7 +316,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` -- 运行这个函数从这篇文档中随机获取一条小技巧(解析 Markdown 文件并抽取项目): +- 运行这个函数从这篇文档中随机获取一条技巧(解析 Markdown 文件并抽取项目): ```sh function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | From de8a9f17712cd1886fbb27ca0fc66119be82a0af Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Sun, 8 Nov 2015 13:17:30 +0800 Subject: [PATCH 107/337] en: Add a missing period --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f160541..46772dd 100644 --- a/README.md +++ b/README.md @@ -507,7 +507,7 @@ These are items relevant *only* on MacOS. ## 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 Mac OS 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 efd1aef159299131dc30d7f9b4ec55c54bfc49af Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Sun, 8 Nov 2015 09:41:24 +0200 Subject: [PATCH 108/337] es: update translation for last changes. --- README-es.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-es.md b/README-es.md index 1843a38..523af11 100644 --- a/README-es.md +++ b/README-es.md @@ -244,14 +244,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Para dividir archivos en múltiples partes, consulta `split` (para dividir por tamaño) y `csplit` (para dividir por un patrón). -- Para manipular expresiones de fecha y tiempo, usa `dateadd`, `datediff`, `strptime` etc. de [`dateutils`](http://www.fresse.org/dateutils). +- Para manipular expresiones de fecha y tiempo, usa `dateadd`, `datediff`, `strptime` etc. de [`dateutils`](http://www.fresse.org/dateutils/). - Usa `zless`, `zmore`, `zcat`, y `zgrep` para operar sobre archivos comprimidos. ## Depuración del sistema -- Para depuración web, `curl` y `curl -I` son prácticos, o como sus equivalentes `wget`, o el más moderno [`httpie`](https://github.com/jakubroztocil/httpie). +- Para depuración web, `curl` y `curl -I` son prácticos, o como sus equivalentes `wget`, o el más moderno [`httpie`](https://github.com/jkbrzt/httpie). - Para conocer el estado del cpu/disco, las clásicas herramientas son `top` (o mejor `htop`), `iostat`, y `iotop`. Usa `iostat -mxz 15` para CPU básicas y estadísticas detalladas y visión de rendimiento por partición del disco. @@ -283,7 +283,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Cuando se depura porque algo salió mal en el pasado, `sar` puede ser muy útil. Este muestra la estadística histórica en CPU, memoria, red, etc. -- Para sistemas y análisis de rendimiento de mayor profundidad, examina `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), y [`sysdig`](https://github.com/draios/sysdig). +- Para sistemas y análisis de rendimiento de mayor profundidad, examina `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), y [`sysdig`](https://github.com/draios/sysdig). - Comprueba en que OS se encuentra con `uname` o `uname -a` (información general en Unix/kernel) o `lsb_release -a` (información en Linux distro). From e7125f43f650e2151ccff53217a6982ee2d95216 Mon Sep 17 00:00:00 2001 From: Cheong Yiufung Date: Tue, 17 Nov 2015 21:05:14 +0800 Subject: [PATCH 109/337] Fix error in du command. --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 6be9d9a..f677b52 100644 --- a/README-zh.md +++ b/README-zh.md @@ -60,7 +60,7 @@ - 了解 `ssh`,以及学会通过使用 `ssh-agent`,`ssh-add` 等命令来实现基本的无密码认证。 -- 学会基本的文件管理:`ls` 和 `ls -l` (了解 `ls -l` 中每一列代表的意义),`less`,`head`,`tail` 和 `tail -f` (甚至 `less +F`),`ln` 和 `ln -s` (了解硬链接与软链接的区别),`chown`,`chmod`,`du` (硬盘使用情况概述:`du -hk *`)。 关于文件系统的管理,学习 `df`,`mount`,`fdisk`,`mkfs`,`lsblk`。知道 inode 是什么(与 `ls -i` 和 `df -i` 等命令相关)。 +- 学会基本的文件管理:`ls` 和 `ls -l` (了解 `ls -l` 中每一列代表的意义),`less`,`head`,`tail` 和 `tail -f` (甚至 `less +F`),`ln` 和 `ln -s` (了解硬链接与软链接的区别),`chown`,`chmod`,`du` (硬盘使用情况概述:`du -hs *`)。 关于文件系统的管理,学习 `df`,`mount`,`fdisk`,`mkfs`,`lsblk`。知道 inode 是什么(与 `ls -i` 和 `df -i` 等命令相关)。 - 学习基本的网络管理:`ip` 或 `ifconfig`,`dig`。 From 992df209aafe3426ae6b62587ed7f15964af42eb Mon Sep 17 00:00:00 2001 From: francescomalatesta Date: Fri, 27 Nov 2015 19:39:49 +0100 Subject: [PATCH 110/337] Italian translation here! --- README-it.md | 538 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 538 insertions(+) create mode 100644 README-it.md diff --git a/README-it.md b/README-it.md new file mode 100644 index 0000000..35c2c29 --- /dev/null +++ b/README-it.md @@ -0,0 +1,538 @@ +[ Traduzioni: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] + + +# The Art of Command Line (Traduzione Italiana) + +[![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) +- [Le Basi](#le-basi) +- [Uso quotidiano](#uso-quotidiano) +- [Processare file e dati](#processare-file-e-dati) +- [Debug sistema](#debug-sistema) +- [One-liner](#one-liner) +- [Oscuri ma utili](#oscuri-ma-utili) +- [MacOS X](#macos-x) +- [Ulteriori risorse](#ulteriori-risorse) +- [Disclaimer](#disclaimer) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Saper usare con una certa facilità la linea di comando è spesso visto come una sorta di "sapere arcano". Anche se può sembrare, in realtà non è decisamente così: può migliorare la tua produttività e la tua flessibilità in modi che neanche immagini. Questa che stai per leggere è una selezione di trucchi e di consigli che riguardano la linea di comando, che abbiamo trovato utili lavorando con Linux. Alcune di queste nozioni sono elementari, altre molto specifiche, se non sofisticate e, a volte, oscure. + +Non c'è da preoccuparsi, comunque: la pagina che stai scorrendo non è molto lunga e non ti ruberà molto tempo. Prenderci dimestichezza, saperla usare quando necessario, te ne renderà ancora di più. + +Questo lavoro è il risultato degli sforzi di [svariati autori e traduttori](AUTHORS.md). + +Una buona parte di ciò che leggi è [apparsa](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands), [originariamente](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix), su [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know). Tuttavia, visto l'interesse, mi è sembrato logico usare Github per raccogliere il tutto e creare un qualcosa a cui chiunque avrebbe potuto contribuire, anche con un piccolo suggerimento. Non abbiamo la pretesa di aver creato qualcosa di perfetto: se trovi qualche errore faccelo sapere, magari aprendo una Pull Request! + + +## Meta + +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. +- 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. + +Note: + +- Per tenere tutto su una sola pagina, il contenuto è stato incluso tramite reference. Crediamo che tu sia abbastanza intelligente da cercare i dettagli su qualcosa di specifico, o su un comando, usando Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (in base alla situazione) per installare i nuovi programmi. +- Se vuoi, usa [Explainshell](http://explainshell.com/) per avere uno spaccato più completo su cosa fanno comandi, pipe, opzioni e così via. + + +## Le Basi + +- Impara le basi di Bash. Usa `man bash` e cerca almeno di scorrere velocemente l'intero scritto. Non è troppo lungo e neanche difficile da seguire. Altre shell possono andare bene, ma Bash è molto potente e sempre disponibile (impararne una sola tra zsh, fish e così via, per quanto ti possa tentare, ti darà problemi a lungo termine, lavorando su altre piattaforme). + +- Impara ad usare bene almeno un editor di testo. Idealmente, potresti usare Vim (`vi`), con il quale non c'è praticamente competizione per questo genere di cose (si, anche se volessi usare Emacs, oppure un altro di quei grossi IDE, o magari l'ennesimo ultimo editor ultramoderno ed hipster). + +- Impara a leggere la documentazione usando `man` (per i più curiosi, `man man` elenca le varie sezioni. Ad esempio, 1 indica i comandi "regolari", 5 per file/convenzioni, 8 per l'amministrazione). Trova le pagine tramite `apropos`. Ricorda inoltre che alcuni comandi non sono degli eseguibili, ma dei "builtin" di Bash. Usa `help -d` in caso di necessità. + +- Impara tutto sul reindirizzamento dell'output e dell'input, usando `>`, `<` ed il pipe `|`. Impara anche che `>` sovrascrive il file output, mentre `>>` aggiunge del contenuto alla fine. Impara tutto riguardo stdout e stderr. + +- Impara anche qualcosa sul file glob, l'uso di `*` (e magari anche di `?` e `[`...`]`), oltre alla differenza tra i doppi `"` e singoli `'` apici. Guarda più in giù per quanto riguarda l'espansione delle variabili. + +- Acquisisci familiarità con la gestione dei job con Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, e così via. + +- Impara ad usare `ssh` e le basi della passwordless authentication, tramite `ssh-agent`, `ssh-add`, e così via. + +- Gestione base dei file: `ls` e `ls -l` (nello specifico, impara cosa indica ognuna delle colonne che escono fuori da `ls -l`), `less`, `head`, `tail` e `tail -f` (or even better, `less +F`), `ln` e `ln -s` (impara le differenze ed i vantaggi nell'uso di hard link o soft link), `chown`, `chmod`, `du` (per una panoramica veloce, usa: `du -hs *`). Per la gestione del filesystem, guardati `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Impara anche cos'è un inode (`ls -i` or `df -i`). + +- Gestione base delle reti: `ip` or `ifconfig`, `dig`. + +- Impara ad usare per bene le espressioni regolari, e le varie flag per `grep`/`egrep`. Nello specifico, varrebbe la pena anche vedersi le opzioni `-i`, `-o`, `-v`, `-A`, `-B`, e `-C`. + +- Impara ad usare `apt-get`, `yum`, `dnf` o `pacman` (in base alla distro che usi) per trovare ed installare nuovi package. E assicurati anche di aver installato `pip`, in modo tale da installare agevolmente i vari tool da linea di comando basati sul linguaggio Python. Alcuni di quelli che vedrai in seguito sono più semplici da installare se usi `pip`. + + +## Uso quotidiano + +- In Bash, usa **Tab** per completare i vari parametri dei comandi, oppure elencarli. Usa **ctrl-r** per effettuare una ricerca nella cronologia dei comandi inseriti (premi *ctrl-r*, quindi effettua la ricerca. Per vedere più risultati premi ripetutamente *ctrl-r*). Premi quindi **Invio** per eseguire il comando trovato, oppure premi su **freccia destra** per mettere il comando sulla linea attuale, in modo tale da poterlo modificare. + +- In Bash, usa **ctrl-w** per cancellare l'ultima parola, **ctrl-u** per cancellare tutto fino all'inizio della riga. Usa **alt-b** ed **alt-f** per muoverti di parola in parola. **ctrl-a** ti permette di tornare all'inizio della riga attuale senza cancellare nulla, mentre con **ctrl-e** puoi spostarti direttamente alla fine. **ctrl-k** cancella tutto quello che c'è dal punto attualmente scelto fino alla fine della riga. Inoltre, **ctrl-l** pulisce lo schermo. Per vedere una lista completa di tutte le varie scorciatoie presenti (ce ne sono molte) in bash, usa `man readline`. Ad esempio, **alt-.** serve a ciclare attraverso gli argomenti precedenti. + +- In alternativa se ti piacciono le scorciatoie in stile vi, usa `set -o vi` (e `set -o emacs` per tornare indietro se dovessi cambiare idea). + +- Per modificare dei comandi lunghi può essere utile impostare un editor di tua scelta (esempio: `export EDITOR=vim`). Premendo **ctrl-x** **ctrl-e** aprirai l'attuale comando in un editor multi-line per una modifica più agevole. Oppure, se stai lavorando con uno stile vi, **escape-v**. + +- Per vedere i comandi più recenti, usa `history`. Ci sono anche altre abbreviazioni da usare per lo stesso scopo, come `!$` (per l'ultimo) e `!!`, nonostante questi vengano spesso rimpiazzati da **ctrl-r** e **alt-.**. + +- Per tornare alla directory precedente: `cd -` + +- Se stai digitando un comando, sei a metà e cambi idea, usa **alt-#** per aggiungere un `#` all'inizio della linea, rendendola di fatto un commento (oppure usa la sequenza **ctrl-a**, **#**, **invio**). Puoi quindi ritornarci dopo, tramite la cronologia. + +- Usa `xargs` (o `parallel`). Si tratta di un tool molto potente, che ti permette di eseguire un certo comando tante volte quanti sono gli elementi restituiti da un altro comando. Quando non sei sicuro di quello che stai facendo, usa `xargs echo` per schiarirti le idee. Inoltre, `-I{}` è abbastanza utile. Ecco un esempio: + +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` è un ottimo tool che ti mostra l'albero dei processi. + +- Usa `pgrep` e `pkill` per trovare dei processi ed inviare loro un segnale specifico (`-f` è utile a riguardo). + +- Impara a conoscere i vari segnali che puoi inviare ai processi. Ad esempio, per sospendere un processo puoi usare `kill -STOP [pid]`. Per una lista completa, esegui `man 7 signal`. + +- Usa `nohup` o `disown` se vuoi fare in modo che un certo processo vada avanti indefinitamente. + +- Controlla quali processi sono in ascolto tramite `netstat -lntp` oppure `ss -plat` (per TCP; aggiungere invece `-u` per UDP). + +- Dai uno sguardo a `lsof` per un elenco di socket e file aperti. + +- Usa `uptime` o `w` per sapere da quanto tempo il sistema è stato avviato. + +- Usa `alias` per creare delle scorciatoie personalizzate. Ad esempio, puoi usare `alias ll='ls -latr'`, che creerà un nuovo alias `ll` per il comando `ls -latr`. + +- Negli script Bash, usa `set -x` (o la variante `set -v`, che effettua un log dell'input, includendo variabili e commenti) per un migliore debug dell'output. Comunque, cerca di usare la modalità strict a meno che tu non abbia bisogno del contrario. Una buona norma suggerisce di usare lo strict mode tranne nel caso in cui tu non possa usare `set -e` per annullare un comando in caso di errore (nonzero exit code). Considera anche l'uso di `set -o pipefail`, Puoi inoltre usare `trap` su EXIT o ERR. Un'abitudine piuttosto utile è quella di iniziare uno script così, facendo in modo che annulli la propria esecuzione in caso vengano rilevati degli errori. + +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Negli script Bash, le subshell (scritte tra parentesi) sono un ottimo modo di raggruppare dei comandi. Un esempio piuttosto comune è il muoversi temporaneamente verso una directory differente, per poi tornare a lavorare in quella attuale. + +```bash + # faccio qualcosa nella directory attuale + (cd /some/other/dir && other-command) + # continuo nella directory attuale +``` + +- In Bash esistono svariati tipi di espansione di variabile. Come controllare se una variabile esiste: `${name:?error message}`. Ad esempio, se uno script richiede un singolo parametro, scrivi `input_file=${1:?usage: $0 input_file}`. Espansione aritmetica: `i=$(( (i + 1) % 5 ))`. Sequenze: `{1..10}`. Trim di stringhe: `${var%suffix}` and `${var#prefix}`. Ad esempio, se `var=foo.pdf`, allora `echo ${var%.pdf}.txt` restituisce `foo.txt`. + +- Usare la brace expansion tramite `{`...`}` può essere molto comodo in caso di necessità di automazione di alcuni task simili. Un esempio è `mv foo.{txt,pdf} some-dir` (che con un solo comando muoverà due file, il pdf ed il txt), `cp somefile{,.bak}` (che si espande a `cp somefile somefile.bak`) o `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (che espande tutte le possibili combinazioni, creando un albero di directory). + +- L'output di un comando può essere trattato come un file tramite `<(some command)`. Ad esempio, per comparare il file `/etc/hosts` locale con uno in remoto: + +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- Impara qualcosa sugli "here documents" in Bash, come `cat <logfile 2>&1` oppure `some-command &>logfile`. Spesso, per assicurarti che un certo comando non lasci un handle aperto "legandoti al terminale attuale" potrebbe essere una buona idea aggiungere ` bar: + repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- Come la pagina del manuale spiega, `rsync` è un ottimo tool per copiare file, versatile e velocissimo. Si, è conosciuto per sincronizzare file da una macchina all'altra, ma è ugualmente utile se viene usato localmente. Viene anche riconosciuto come [uno dei modi più veloci](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) di cancellare un grande numero di file tutti insieme: + +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- Usa `shuf` per selezionare una serie di linee da un file, in ordine casuale. + +- Impara a conoscere le opzioni di `sort`. Per i numeri, usa `-n`, oppure `-h` per gestire numeri leggibili dal'uomo (`du -h`). Impara a capire come funzionano le varie chiavi (`-t` e `-k`). In particolare, fai attenzione a quando scrivi `-k1,1` per ordinare solo per il valore del primo campo, visto che `-k1` significa ordinare secondo l'intera riga. Lo stable sort (`sort -s`) può esserti utile. Immagina ad esempio di voler ordinare secondo il valore del secondo campo, e secondariamente del primo. Userai `sort -k1,1 | sort -s -k2,2`. + +- Se dovessi aver bisogno di scrivere, letteralmente, un tab in Bash, premi **ctrl-v** **[Tab]** o scrivi `$'\t'`. + +- I tool standard per il patching del codice sono `diff` e `patch`. Guarda anche Guarda anche `diffstat` per saperne di più su una diff e `sdiff` per una side-by-side diff. Nota bene che `diff -r` lavora con intere directory. Usa `diff -r tree1 tree2 | diffstat` per una panoramica dei cambiamenti. Usa `vimdiff` per comparare e modificare file. + +- Per file binari, usa `hd`, `hexdump` o `xxd` per semplici hex dump, e `bvi` o `biew` per editing binario. + +- Inoltre, sempre per file binari, usa `strings` (insieme `grep`, e così via) per trovare sezioni di testo al loro interno; + +- Per diff binarie (delta compression), usa `xdelta3`. + +- Per convertire un testo da una codifica ad un'altra, prova `iconv`. Oppure `uconv` in caso di necessità più avanzate; supporta svariate opzioni avanzate inerenti Unicode. Ad esempio, questo comando rimuove tutti gli accenti e trasforma le stringhe in lettere tutte minuscole: + +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Per dividere un file in altri file più piccoli, guarda `split` (per dividere in base alla dimensione) e `csplit` (per dividere in base ad un pattern). + +- Se devi manipolare date ed orari, usa `dateadd`, `datediff`, `strptime` e così via, di [`dateutils`](http://www.fresse.org/dateutils/). + +- Usa `zless`, `zmore`, `zcat` e `zgrep` per lavorare su file compressi. + + +## Debug sistema + +- Per il web debugging, `curl` e `curl -I` sono decisamente utili. La stessa cosa vale anche per l'equivalente `wget`, o ancora per il più recente [`httpie`](https://github.com/jkbrzt/httpie). + +- Per avere più informazioni sullo stato attuale del sistema, dalla cpu ai dischi, il tool classico più usato è `top` (o la sua versione migliorata `htop`), `iostat` e `iotop`. Usa `iostat -mxz 15` per avere informazioni base sulla CPU ed informazioni dettagliate, per partizione, sui dischi e sulle loro performance. + +- Per avere più dettagli sulle connessioni di rete, usa `netstat` e `ss`. + +- Per una panoramica veloce di cosa sta succedendo nel sistema, `dstat` è ottimo. Per avere invece molte più informazioni e scendere nel dettaglio, usa [`glances`](https://github.com/nicolargo/glances). + +- Per saperne di più sullo stato della memoria, esegui ed impara a capire il significato dei comandi `free` e `vmstat`. In particolare, sii consapevole del fatto che la memoria "cached" è quella mantenuta dal kernel Linux come file cache, che a tutti gli effetti poi conta come memoria libera. + +- Il system debugging con Java è tutta un'altra cosa. Uno dei trucchi più semplici sulla JVM Oracle (ed anche altre) è che all'esecuzione di `kill -3 ` verrà messo in log un trace full stack (inclusi molti dettagli sulla garbage collection). Anche `jps`, `jstat`, `jstack` e `jmap` del JDK sono molto utili. Ci sono poi i vari [SJK tools](https://github.com/aragozin/jvm-tools), più avanzati. + +- Usa `mtr` per rilevare problemi di rete. Molto meglio di traceroute. + +- Per capire perché un disco viene visto pieno, `ncdu` ti evita perdite di tempo rispetto al più comune `du -sh *`. + +- Per capire quale socket o processo sta usando troppa banda prova `iftop` o `nethogs`. + +- `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. + +- Per un debug di rete più avanzato, dai uno sguardo a `wireshark`, `tshark` o `ngrep`. + +- Impara qualcosa di più su `strace` e `ltrace`. Possono essere molto utili quando un programma crasha, o magari rimane in blocco e tu non capisci perché. Degne di nota le opzioni di profiling (`-c`), e la possibilità di agganciare un processo in esecuzione (`-p`). + +- Impara qualcosa di più riguardo `ldd` per controllare le librerie condivise. + +- Impara a connetterti ad un processo in esecuzione con `gdb` e recuperare il suo stack trace. + +- Usa `/proc`. Fantastico quando devi fare un live debug in caso di problemi. Esempi: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (dove `xxx` è il nome del processo o il suo pid). + +- Quando vuoi debuggare qualcosa che è andato storto in passato, `sar` può essere molto utile. Permette di controllare uno storico delle statistiche di CPU, memoria, rete e così via. + +- Usa `stap` per un'analisi più approfondita del sistema in termini di performance ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), e [`sysdig`](https://github.com/draios/sysdig). + +- Controlla quale OS stai usando con `uname` oppure `uname -a` (informazioni generali sul kernel) o `lsb_release -a` (informazioni sulla distro Linux). + +- Usa `dmesg` quando il sistema si comporta in modo davvero strano (problemi hardware o legati ai driver, insomma). + + +## One-liner + +Qualche esempio di combinazione di più comandi comandi: + +- Decisamente è utile è sapere che puoi effettuare intersesione, unione e differenza di file di testo tramite `sort`/`uniq`. Immagina di avere `a` e `b`, due file di testo. Il metodo in questione è veloce e tra l'altro supporta anche file di svariati gigabyte. Guarda anche la nota riguardo `LC_ALL` e l'opzione `-u` di `sort`. + +```sh + cat a b | sort | uniq > c # c is a union b + cat a b | sort | uniq -d > c # c is a intersect b + cat a b b | sort | uniq -u > c # c is set difference a - b +``` + +- Usa `grep . *` per esaminare velocemente i contenuti di tutti i file in una certa directory (in modo che ogni linea venga abbinata al nome del file), oppure `head -100 *`. Può essere molto utile per quelle directory piene file di configurazione, come `/sys`, `/proc`, `/etc`. + + +- Sommare tutti i numeri sulla terza colonna di un file di testo (probabilmente 3 volte più veloce e corto della controparte in Python): + +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- Nel caso in cui tu voglia vedere dimensioni e date per un certo "albero" di file (un po' come `ls -l`, ma ricorsivo): + +```sh + find . -type f -ls +``` + +- Immagina di avere un file di testo, come un log di un server, like a web server log, ed un certo valore appare di tanto in tanto tra le righe, come ad esempio un parametro `acct_id` in un URL.. Ecco come contare le richieste effettuate che contengono tale parametro `acct_id`: + +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Per monitorare costantemente i cambiamenti ai file, usa `watch`. Ad esempio, per controllare i cambiamneti in una certa directory usa `watch -d -n 2 'ls -rtlh | tail'` oppure, se stai monitorando un file di configurazione inerente il WiFi, `watch -d -n 2 ifconfig`. + +- Esegui questa funzione per ottenere un consiglio a caso da questo documento: + +```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 + } +``` + + +## Oscuri ma utili + +- `expr`: esegue operazioni aritmetiche o booleane, oltre a valutare espressioni regolari. + +- `m4`: un semplice macro processor. + +- `yes`: stampa una stringa per un numero indefinito di volte. + +- `cal`: un calendario. + +- `env`: esegue un comando (utile negli script). + +- `printenv`: stampa le variabili di ambiente (utile per il debug e negli script). + +- `look`: trova parole inglesi (o linee in un file) partendo da una stringa. + +- `cut`, `paste` e `join`: manipolazione di dati. + +- `fmt`: formatta paragrafi di testo. + +- `pr`: formatta del testo in pagine/colonne. + +- `fold`: sistema delle linee di testo. + +- `column`: formatta del testo in colonne o tabelle dalla larghezza fissa. + +- `expand` ed `unexpand`: converte spazi in tab, e viceversa. + +- `nl`: aggiunge il conteggio delle righe. + +- `seq`: stampa dei numeri. + +- `bc`: calcolatrice. + +- `factor`: scompone un numero in fattori. + +- [`gpg`](https://gnupg.org/): cripta e firma i file. + +- `toe`: tabella di tutti i terminali disponbili. + +- `nc`: per il network debugging e trasferimento dati. + +- `socat`: socket relay e tcp port forwarder (simile a `netcat`). + +- [`slurm`](https://github.com/mattthias/slurm): visualizzazione del traffico di rete. + +- `dd`: spostamento dati tra file e dispositivi. + +- `file`: identifica il tipo di un certo file. + +- `tree`: mostra le sottodirectory con una struttura ad albero. A differenza di `ls`, è ricorsivo. + +- `stat`: informazioni su un file. + +- `time`: esegue un comando e tiene traccia del tempo di esecuzione. + +- `timeout`: avvia un comando definendo anche un certo ammontare di tempo oltre il quale non si può andare. Se tale ammontare di tempo viene raggiunto, il comando viene annullato. + +- `lockfile`: crea un file che può essere rimosso solo tramite `rm -f`. + +- `logrotate`: gestie i log, la loro rotazione, compressione ed invio via mail. + +- `watch`: esegue un comando più volte, mostrando i risultati ed evidenziando le differenze tra tali risultati. + +- `tac`: stampa un file al contrario. + +- `shuf`: sceglie casualmente delle righe da un file. + +- `comm`: compara dei file ordinati riga per riga. + +- `pv`: monitora i progressi dei dati attraverso un pipe. + +- `hd`, `hexdump`, `xxd`, `biew` e `bvi`: dump o modifica di file binari. + +- `strings`: estrae del testo da file binari. + +- `tr`: manipolazione e trasformazione dei caratteri. + +- `iconv` o `uconv`: conversione di testi in altre codifiche. + +- `split` e `csplit`: divisione di un file in altri file più piccoli. + +- `sponge`: legge tutto l'input prima di riscriverlo, utile in caso di lettura e scrittura sullo stesso file. Ad esempio: `grep -v something some-file | sponge some-file`. + +- `units`: conversione da e verso altre unità di misura (guarda anche `/usr/share/units/definitions.units`). + +- `apg`: genera password casuali. + +- `7z`: compressione di file ad alta ratio. + +- `ldd`: informazioni su una libreria dinamica. + +- `nm`: elenca i vari simboli presenti un object file. + +- `ab`: benchmark di webserver. + +- `strace`: debug delle chiamate di sistema. + +- `mtr`: un traceroute migliore per il debug di rete. + +- `cssh`: shell visuale concorrente. + +- `rsync`: sincronizza file e cartelle tramite SSH oppure in locale. + +- `wireshark` e `tshark`: packet capturing e debug di rete. + +- `ngrep`: come grep... ma per il traffico di rete. + +- `host` e `dig`: DNS lookup. + +- `lsof`: descrittore dei processi ed informazioni su socket. + +- `dstat`: statistiche di sistema. + +- [`glances`](https://github.com/nicolargo/glances): overview di sistemi multipli ad alto livello. + +- `iostat`: statistiche sull'uso dei dischi. + +- `mpstat`: statistiche sull'uso della CPU. + +- `vmstat`: statistiche sull'uso della memoria. + +- `htop`: versione migliorata di top. + +- `last`: cronologia dei login. + +- `w`: mostra chi è autenticato. + +- `id`: user/group identity info. + +- `sar`: cronologia di alcune statistiche del sistema. + +- `iftop` o `nethogs`: uso della rete da parte di socket e processi. + +- `ss`: statistiche sui socket. + +- `dmesg`: messaggi di errore di avvio e di sistema in generale. + +- `sysctl`: visualizza e configura i parametri del kernel a run time. + +- `hdparm`: tool di gestione dischi SATA/ATA. + +- `lsb_release`: informazioni sulla distribuzione Linux. + +- `lsblk`: visualizzazione ad albero dei dischi e relative partizioni. + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informazioni sull'hardware, tra cui CPU, BIOS, RAID, scheda grafica e dispositivi di ogni tipo. + +- `lsmod` e `modinfo`: elenco e dettaglio dei vari moduli del kernel. + +- `fortune`, `ddate`, e `sl`: mmmh, beh, dipende molto da quanto consideri le locomotive a vapore e le citazioni di Zippy "utili". + + +## MacOS X + +Consiera questa sezione come un'esclusiva MacOS. + +- I package vengono gestiti con `brew` (Homebrew) e/o `port` (MacPorts). Possono essere usati su MacOS per installare molti dei comandi visti in questo articolo. + +- Copia l'output di un qualsiasi comando tramite `pbcopy` ed incollalo, invece, con `pbpaste`. + +- Per abilitare l'Option key sul terminale Mac OS come un'alt key (per riprodurre comandi quali **alt-b**, **alt-f**, e così via), apri Preferenze -> Profili -> Tastiera e scegli "Usa Option come meta key". + +- Per aprire un file con un'applicazione desktop, usa `open` oppure `open -a /Applications/LaTuaApplicazione.app`. + +- Cerca i file con `mdfind` ed elenca i vari metadati (come gli EXIF per le foto) con `mdls`. + +- Sii consapevole del fatto che MacOS è basato su BSD Unix, e molti dei suoi comandi (ad esempio `ps`, `ls`, `tail`, `awk`, `sed`) presentano alcune variazioni rispetto alla loro controparte Linux. Per controllare tali differenze devi vedere se la pagina del manuale ha come titolo "BSD General Commands Manual". Come logica conseguenza, quindi, ricorda di non usare tali comandi se hai intenzione di scrivere degli script cross-platform. + +- Per avere più informazioni sulla tua release di MacOS, usa `sw_vers`. + + +## Ulteriori risorse + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Una curatissima lista di tool e risorse +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Una guida approfondita sulla linea di comando in Mac OSX +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) per scrivere script migliori +- [shellcheck](https://github.com/koalaman/shellcheck): Un tool di analisi per script shell. Praticamente lint per bash/sh/zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Un compendio sul come gestire nomi dei file e path nella shell + + +## Disclaimer + +Con l'eccezione di pochi piccoli task, il codice è stato scritto per permettere agli altri di leggerlo agevolmente. Da grandi poteri derivano grandi responsabilità. Ricorda: il fatto che tu possa *fare* qualcosa in Bash non implica comunque che tu debba per forza! ;) + + +## License + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +A questo lavoro è attribuita la [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From b56ce5c17f53ea1a9de1a1db22e865d391baf5fc Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 29 Nov 2015 16:14:13 -0800 Subject: [PATCH 111/337] Add Italian translation links and new maintainer. Follow-on to #307. --- README-es.md | 14 +++++++------- README-it.md | 6 ++++-- README-ja.md | 4 ++-- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 4 +++- README-uk.md | 6 +++--- README-zh.md | 2 +- README.md | 4 +++- admin/authors-info.yml | 3 ++- 11 files changed, 28 insertions(+), 21 deletions(-) diff --git a/README-es.md b/README-es.md index 523af11..0265e3f 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) +[ 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) ] @@ -24,7 +24,7 @@ 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 +La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), @@ -253,7 +253,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Para depuración web, `curl` y `curl -I` son prácticos, o como sus equivalentes `wget`, o el más moderno [`httpie`](https://github.com/jkbrzt/httpie). -- Para conocer el estado del cpu/disco, las clásicas herramientas son `top` (o mejor `htop`), `iostat`, y `iotop`. Usa `iostat -mxz 15` para CPU básicas y estadísticas detalladas y visión de rendimiento por partición del disco. +- Para conocer el estado del cpu/disco, las clásicas herramientas son `top` (o mejor `htop`), `iostat`, y `iotop`. Usa `iostat -mxz 15` para CPU básicas y estadísticas detalladas y visión de rendimiento por partición del disco. - Para detalles de la conexión de red, usa `netstat` y `ss`. @@ -337,7 +337,7 @@ Algunos ejemplos de comandos reunidos: - `expr`: ejecuta operaciones aritméticas o booleanas o evalúa expresiones regulares -- `m4`: procesador de macro sencillo +- `m4`: procesador de macro sencillo - `yes`: imprime un string sin fin @@ -469,7 +469,7 @@ Algunos ejemplos de comandos reunidos: - `ss`: estadísticas de socket -- `dmesg`: mensajes de error del arranque y del sistema +- `dmesg`: mensajes de error del arranque y del sistema - `sysctl`: examina y configura los parámetros de kernel de Linux en tiempo de ejecución @@ -480,7 +480,7 @@ Algunos ejemplos de comandos reunidos: - `lsblk`: lista de dispositivos de bloque: una vista tipo arbol de sus discos y particiones de disco - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: información de hardware, incluyendo CPU, BIOS, RAID, gráficos, dispositivos, etc - + - `lsmod` y `modinfo`: lista y muestra detalles de los módulos del kernel - `fortune`, `ddate`, y `sl`: um, bien, depende de si considera las locomotoras de vapor y citas Zippy "útiles" diff --git a/README-it.md b/README-it.md index 35c2c29..803a5f8 100644 --- a/README-it.md +++ b/README-it.md @@ -1,4 +1,6 @@ -[ Traduzioni: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] +[ 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) +] # The Art of Command Line (Traduzione Italiana) @@ -19,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) -Saper usare con una certa facilità la linea di comando è spesso visto come una sorta di "sapere arcano". Anche se può sembrare, in realtà non è decisamente così: può migliorare la tua produttività e la tua flessibilità in modi che neanche immagini. Questa che stai per leggere è una selezione di trucchi e di consigli che riguardano la linea di comando, che abbiamo trovato utili lavorando con Linux. Alcune di queste nozioni sono elementari, altre molto specifiche, se non sofisticate e, a volte, oscure. +Saper usare con una certa facilità la linea di comando è spesso visto come una sorta di "sapere arcano". Anche se può sembrare, in realtà non è decisamente così: può migliorare la tua produttività e la tua flessibilità in modi che neanche immagini. Questa che stai per leggere è una selezione di trucchi e di consigli che riguardano la linea di comando, che abbiamo trovato utili lavorando con Linux. Alcune di queste nozioni sono elementari, altre molto specifiche, se non sofisticate e, a volte, oscure. Non c'è da preoccuparsi, comunque: la pagina che stai scorrendo non è molto lunga e non ti ruberà molto tempo. Prenderci dimestichezza, saperla usare quando necessario, te ne renderà ancora di più. diff --git a/README-ja.md b/README-ja.md index a6d0182..e52c600 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) ] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) @@ -451,6 +451,6 @@ ## ライセンス -[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) このドキュメントは[Creative Commons Attribution-ShareAlike 4.0 International Licene](http://creativecommons.org/licenses/by-sa/4.0/)でライセンスされる。 diff --git a/README-ko.md b/README-ko.md index 1b1e820..ba82662 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) ] diff --git a/README-pt.md b/README-pt.md index 1372a51..0287157 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) ] diff --git a/README-ru.md b/README-ru.md index 1743d93..3d8ca98 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) ] diff --git a/README-sl.md b/README-sl.md index e502e67..b7398e1 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] +[ 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) +] # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 4d350a7..2c2551c 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,6 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) +] # Мистецтво командного рядка [![Вступайте в англомовний чат проекту 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) @@ -78,7 +78,7 @@ - Зверніть увагу на `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 -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. Корисний звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилоках і вивести повідомлення: ```bash set -euo pipefail diff --git a/README-zh.md b/README-zh.md index 692873c..21b32dd 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-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) ] diff --git a/README.md b/README.md index f160541..e0cc66a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] +[ 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) +] # The Art of Command Line diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 023f5af..80d02f9 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,4 +36,5 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translator and maintaner (uk) + stepan0904: translator and maintainer (uk) + francescomalatesta: translator and maintainer (it) From 2daf0e6e0d02779112ae76455079e1c1cf6aa338 Mon Sep 17 00:00:00 2001 From: Thomas Lee Date: Tue, 1 Dec 2015 21:07:58 +0800 Subject: [PATCH 112/337] zh: Refine the translation of "one-liner" --- README-zh.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index 958bb67..b1e9809 100644 --- a/README-zh.md +++ b/README-zh.md @@ -12,7 +12,7 @@ - [日常使用](#日常使用) - [文件及数据处理](#文件及数据处理) - [系统调试](#系统调试) -- [单行代码](#单行代码) +- [单行脚本](#单行脚本) - [冷门但有用](#冷门但有用) - [仅限 MacOS X 系统](#仅限-macos-x-系统) - [更多资源](#更多资源) @@ -189,7 +189,7 @@ - 关于 Amazon S3,[`s3cmd`](https://github.com/s3tools/s3cmd) 很方便而 [`s4cmd`](https://github.com/bloomreach/s4cmd) 更快。Amazon 官方的 [`aws`](https://github.com/aws/aws-cli) 以及 [`saws`](https://github.com/donnemartin/saws) 是其他 AWS 相关工作的基础。 -- 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,详见后文单行代码节。另外可以了解一下 `comm`。 +- 了解如何使用 `sort` 和 `uniq`,包括 uniq 的 `-u` 参数和 `-d` 参数,详见后文单行脚本节。另外可以了解一下 `comm`。 - 了解如何使用 `cut`,`paste` 和 `join` 来更改文件。很多人都会使用 `cut`,但几乎都不会使用 `join`。 @@ -288,7 +288,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 无论什么东西工作得很欢乐时试试 `dmesg`(可能是硬件或驱动问题)。 -## 单行代码 +## 单行脚本 一些命令组合的例子: From 86d63f5a95ac3fdb14464ecc07531eb26ad77e97 Mon Sep 17 00:00:00 2001 From: James Kolce Date: Wed, 2 Dec 2015 00:26:36 -0700 Subject: [PATCH 113/337] Fix anchors for Spanish version --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index 0265e3f..41538ff 100644 --- a/README-es.md +++ b/README-es.md @@ -8,15 +8,15 @@ [![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) -- [Fundamentos](#basics) -- [Uso diario](#everyday-use) -- [Procesamiento archivos y datos](#processing-files-and-data) -- [Depuración del sistema](#system-debugging) +- [Fundamentos](#fundamentos) +- [Uso diario](#de-uso-diario) +- [Procesamiento archivos y datos](#procesamiento-de-archivos-y-datos) +- [Depuración del sistema](#depuración-del-sistema) - [One-liners](#one-liners) -- [Obscuro pero útil](#obscure-but-useful) -- [Solo para MacOS X](#macos-x-only) -- [Más recursos](#more-resources) -- [Advertencia](#disclaimer) +- [Obscuro pero útil](#oscuro-pero-útil) +- [Solo para MacOS X](#solo-para-macos-x) +- [Más recursos](#más-recursos) +- [Advertencia](#advertencia) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) From ebe46e8390f2b4a48cf694627374498000948b2d Mon Sep 17 00:00:00 2001 From: Hyojin Kwak Date: Thu, 3 Dec 2015 12:00:08 +0900 Subject: [PATCH 114/337] ko: Correct spelling --- README-ko.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ko.md b/README-ko.md index 1b1e820..fb16091 100644 --- a/README-ko.md +++ b/README-ko.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) -커맨드라인을 능숙하게 다루는것은 도외시되거나 신비스럽게 여겨집니다. 하지만 커맨드라인은 명백하고도 미묘한 방법으로 엔지니어가 하는 작업의 유연성과 생산성을 향상시십니다. 이 문서는 리눅스에서 작업을 하면서 찾은 노트와 팁들의 모음입니다. 몇 가지는 기초적이고, 몇가지는 상당히 구체적이며, 세련되고, 잘 알려지지 않은 것입니다. 이 문서는 그리 길지 않지만, 여기 있는 모든것을 사용할 수 있게 되고, 기억해낼 수 있게 된다면, 많은 것을 알게되는 것입니다. +커맨드라인을 능숙하게 다루는것은 도외시되거나 신비스럽게 여겨집니다. 하지만 커맨드라인은 명백하고도 미묘한 방법으로 엔지니어가 하는 작업의 유연성과 생산성을 향상시킵니다. 이 문서는 리눅스에서 작업을 하면서 찾은 노트와 팁들의 모음입니다. 몇 가지는 기초적이고, 몇가지는 상당히 구체적이며, 세련되고, 잘 알려지지 않은 것입니다. 이 문서는 그리 길지 않지만, 여기 있는 모든것을 사용할 수 있게 되고, 기억해낼 수 있게 된다면, 많은 것을 알게되는 것입니다. 여기있는 대부분의 것은 [원래](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) From 377387c4f60a0a59bed7519bee3cbe181adc744c Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 3 Dec 2015 22:52:13 +0200 Subject: [PATCH 115/337] typo --- README-uk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index 2c2551c..d779a56 100644 --- a/README-uk.md +++ b/README-uk.md @@ -337,7 +337,7 @@ Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) -## Лицензія +## Ліцензія [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) From 7891b6a365dfad420d7d6f9fabbf6308208c1366 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 3 Dec 2015 22:52:30 +0200 Subject: [PATCH 116/337] + awesome-osx-command-line to others source --- README-uk.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-uk.md b/README-uk.md index d779a56..af750a1 100644 --- a/README-uk.md +++ b/README-uk.md @@ -326,6 +326,7 @@ ##Інші-джерела - [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the Mac OS command line. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. - [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 a682762957bbd6b0686b00d1399ea274bac581e5 Mon Sep 17 00:00:00 2001 From: yasuhiroki Date: Mon, 7 Dec 2015 23:20:36 +0900 Subject: [PATCH 117/337] ja: fixed kanji. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "遅れる" means, be delayed. "送れる" means, can send. --- README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index e52c600..8fecfd9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -87,7 +87,7 @@ - `pgrep`や`pkill`で、プロセス名で検索したりシグナルを送れる(`-f`も便利)。 -- プロセスに遅れる色々なシグナルを知っておこう。例えば、プロセスをサスペンドするには`kill -STOP [pid]`を使う。全種類見るなら、`man 7 signal`。 +- プロセスに送れる色々なシグナルを知っておこう。例えば、プロセスをサスペンドするには`kill -STOP [pid]`を使う。全種類見るなら、`man 7 signal`。 - バックグラウンドプロセスをずっと実行し続けたいなら`nohup`あるいは`disown`を使おう。 From 250a3def95ee3af43369c363b83304d40b38523a Mon Sep 17 00:00:00 2001 From: Haoxuan Li Date: Sun, 20 Dec 2015 13:41:20 +0800 Subject: [PATCH 118/337] 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 27041d363bf3124ae2bc45f7f4fbdbdea725d961 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 28 Dec 2015 00:34:09 +0200 Subject: [PATCH 119/337] typo and word by word translate mistakes fixes --- README-uk.md | 88 ++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/README-uk.md b/README-uk.md index af750a1..fc082da 100644 --- a/README-uk.md +++ b/README-uk.md @@ -20,19 +20,19 @@ ![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, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). +- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. Нотатки: @@ -43,29 +43,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 +73,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 +96,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 @@ -212,11 +212,11 @@ ```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 +242,12 @@ - `env`: виводить змінні середовища (корисно в Bash-скриптах) - `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) - `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках -- `cut`, `paste` і` join`: маніпуляції з даними +- `cut`, `paste` і `join`: маніпуляції з даними - `fmt`: форматування параграфів у тексті - `pr`: відформатовує текст в сторінки/колонки - `fold`: (обернути) обмежити довжину рядків у файлі - `column`: форматувати текст в колонки або таблиці -- `expand` і` unexpand`: конвертація між табами і пробілами +- `expand` і `unexpand`: конвертація між табами і пробілами - `nl`: додає номери до рядків - `seq`: вивести послідовність чисел - `bc`: калькулятор @@ -257,16 +257,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 +289,7 @@ - `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі - `ngrep`: grep для шару мережі (network layer) - `host` і `dig`: пошук DNS -- `lsof`: процесинг дескрипторів і інформація по сокетах +- `lsof`: процесинг дескрипторів та інформація по сокетах - `dstat`: корисна статистика ОС - [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам - `iostat`: статистика використання жорсткого диска @@ -300,7 +300,7 @@ - `w`: хто є залогіненим - `id`: інформація про користувача/групу - `sar`: historic system stats -- `iftop` або` nethogs`: використання мережі конкретним сокетом або процесом +- `iftop` або `nethogs`: використання мережі конкретним сокетом або процесом - `ss`: статистика сокетів - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене From c214b558741364dfd8e885713dd6cea2ccf74a6f Mon Sep 17 00:00:00 2001 From: Yessou Sami Date: Wed, 30 Dec 2015 18:28:22 +0100 Subject: [PATCH 120/337] 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 ee4b00bc396087d27231f60512aeb77b19ce734e Mon Sep 17 00:00:00 2001 From: rileyjshaw Date: Wed, 30 Dec 2015 11:47:03 -0500 Subject: [PATCH 121/337] Fix #318: s/MacOS X/OS X --- README-es.md | 6 +++--- README-it.md | 6 +++--- README-ko.md | 6 +++--- README-ru.md | 4 ++-- README-sl.md | 6 +++--- README-zh.md | 6 +++--- README.md | 6 +++--- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README-es.md b/README-es.md index 41538ff..82b3233 100644 --- a/README-es.md +++ b/README-es.md @@ -14,7 +14,7 @@ - [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) +- [Solo para OS X](#solo-para-os-x) - [Más recursos](#más-recursos) - [Advertencia](#advertencia) @@ -36,7 +36,7 @@ pero debido al interés mostrado, parecía valer la pena usar Github, donde pers 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. @@ -486,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..2a85509 100644 --- a/README-it.md +++ b/README-it.md @@ -14,7 +14,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 +35,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. @@ -500,7 +500,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-ko.md b/README-ko.md index 65c70f6..28b6450 100644 --- a/README-ko.md +++ b/README-ko.md @@ -14,7 +14,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 +34,7 @@ 범위: - 이 가이드는 초보자와 경험자 모두를 위한 것입니다. 목표는 범위(전부 다 중요합니다!), 구체성(대부분의 일반적인 케이스에 대한 구체적인 예제), 그리고 간결함(쉽게 마주치지 않는, 중요하지 않고, 지엽적인 것을 피함) 입니다. 모든 팁은 특정 상황에서 매우 중요하거나, 여러 대안들 사이에서의 시간을 확연하게 절약합니다. -- 이 문서는 리눅스를 위한것입니다. "[MacOS X only](#macos-x-only)"세션을 제외하고 말이죠. 일부는 MacOS에서 똑같이 적용되지 않습니다(Cygwin에서 조차 말이죠). +- 이 문서는 리눅스를 위한것입니다. "[OS X only](#os-x-only)"세션을 제외하고 말이죠. 일부는 MacOS에서 똑같이 적용되지 않습니다(Cygwin에서 조차 말이죠). - 인터랙티브 Bash에 초점이 맞추어져있습니다만, 대부분의 팁은 다른 쉘이나, general Bash 스크립트에서도 동작합니다. - 이 문서는 "스탠다드" 유닉스 커맨드와 특정 패키지 설치를 필요로 하는 것 둘 다 포함하고 있습니다. 여기서 다루는 스탠다드 커맨드와 특정 패키지에 대한 것은 포함될만큼 충분히 중요합니다. @@ -449,7 +449,7 @@ - `fortune`, `ddate`, 그리고 `sl`: 에... 증기기관차를 생각하고있고 그것을 인용하고 싶다면 이것은 "유용"합니다 -## MacOS X only +## OS X only *MacOS에서만* 해당되는 항목입니다. diff --git a/README-ru.md b/README-ru.md index 3d8ca98..37a32a5 100644 --- a/README-ru.md +++ b/README-ru.md @@ -14,7 +14,7 @@ - [Системный дебаггинг](#Системный-дебаггинг) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [MacOS X only](#macos-x-only) +- [OS X only](#os-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -442,7 +442,7 @@ - `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) -## MacOS X only +## OS X only Некоторые вещи, подходящие *только* для Мака. diff --git a/README-sl.md b/README-sl.md index b7398e1..ee2434f 100644 --- a/README-sl.md +++ b/README-sl.md @@ -14,7 +14,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) @@ -36,7 +36,7 @@ vendar glede na dani interes tu, izgleda vredno uporabe GitHub-a, kjer lahko lju 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. @@ -487,7 +487,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-zh.md b/README-zh.md index 2e33acb..d77cad4 100644 --- a/README-zh.md +++ b/README-zh.md @@ -14,7 +14,7 @@ - [系统调试](#系统调试) - [单行脚本](#单行脚本) - [冷门但有用](#冷门但有用) -- [仅限 MacOS X 系统](#仅限-macos-x-系统) +- [仅限 OS X 系统](#仅限-os-x-系统) - [更多资源](#更多资源) - [免责声明](#免责声明) - [授权条款](#授权条款) @@ -35,7 +35,7 @@ 涵盖范围: - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 -- 本文为 Linux 所写,除了[仅限 MacOS X 系统](#仅限-macos-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 +- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -478,7 +478,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..b5a963e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,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) @@ -36,7 +36,7 @@ but given the interest there, it seemed worth using GitHub, where people more ta 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. @@ -487,7 +487,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. From e416209bcaff665e99d505efcf19abb9e04ce3d3 Mon Sep 17 00:00:00 2001 From: mitogh Date: Thu, 31 Dec 2015 05:52:58 -0600 Subject: [PATCH 122/337] Update index and header to match the same translation --- README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index 41538ff..c34a502 100644 --- a/README-es.md +++ b/README-es.md @@ -13,7 +13,7 @@ - [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) +- [Obscuro pero útil](#obscuro-pero-útil) - [Solo para MacOS X](#solo-para-macos-x) - [Más recursos](#más-recursos) - [Advertencia](#advertencia) @@ -333,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 From 849881292635e6f8190e55bab520c7ff628c60b1 Mon Sep 17 00:00:00 2001 From: mitogh Date: Thu, 31 Dec 2015 05:55:18 -0600 Subject: [PATCH 123/337] Missing translation for author --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index c34a502..fabb8d4 100644 --- a/README-es.md +++ b/README-es.md @@ -28,7 +28,7 @@ La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el 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 debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudiendo fácilmente sugerir mejoras. Si ve un error o algo que podría ser mejor, por favor, crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) ## Meta From 4e1f2367fef4f5652c59a15d695dc0aa3fe3ad53 Mon Sep 17 00:00:00 2001 From: mitogh Date: Thu, 31 Dec 2015 06:04:05 -0600 Subject: [PATCH 124/337] Update missing translations in shell scripts --- README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index fabb8d4..35bf5ed 100644 --- a/README-es.md +++ b/README-es.md @@ -173,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). @@ -306,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 ``` - 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`: From 2c5dd75eb709590df755a0760c4c901c4011c085 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Sat, 2 Jan 2016 14:12:08 +0000 Subject: [PATCH 125/337] Improved sections El arte del terminal and Meta --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index eee53ed..84205a8 100644 --- a/README-es.md +++ b/README-es.md @@ -21,29 +21,29 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta mejora su flexibilidad y productividad como ingeniero en formas obvia y sutil. Esta es una selección de notas y consejos al usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora su flexibilidad y productividad como ingeniero de maneras obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudiendo fácilmente sugerir mejoras. Si ve un error o algo que podría ser mejor, por favor, crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si encuentras un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) ## Meta Alcance: -- Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Esta escrito para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se enfoca en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y al Bash scripting por lo general. -- Incluye tanto comandos "estándar" Unix, así como aquellos que requieren la instalación especial de un paquete -- siempre que sea suficientemente importante para ameritar su inclusión. +- Esta guía es tanto para principiantes como para expertos. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. +- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos sirven o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Se concentra en Bash interactivo, aunque muchos de los consejos sirven para otros shells y en general para el scripting en Bash. +- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para justificar su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que comandos, opciones, pipes, etc. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opciones, las pipes, etc. ## Fundamentos From 786524b090c1037534483efb026e84610ef1ea57 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Sat, 2 Jan 2016 14:14:25 +0000 Subject: [PATCH 126/337] Improved translation on line 24 --- README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index 84205a8..39baf2b 100644 --- a/README-es.md +++ b/README-es.md @@ -21,7 +21,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora su flexibilidad y productividad como ingeniero de maneras obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte @@ -43,7 +43,7 @@ Alcance: Notas: - Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opciones, las pipes, etc. +- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opcioneslas pipes, etc. ## Fundamentos From a22f5b3811616a83fb6131ac081a9da10a01c84c Mon Sep 17 00:00:00 2001 From: kumon Date: Mon, 4 Jan 2016 01:09:41 +0900 Subject: [PATCH 127/337] 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 4cbb0134eb23fa38345c725e93022f09ef82a13d Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Mon, 4 Jan 2016 12:32:20 +0000 Subject: [PATCH 128/337] Making changes thanks to ceoaliongroo --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index 39baf2b..bfb9a40 100644 --- a/README-es.md +++ b/README-es.md @@ -21,29 +21,29 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero esta habilidad mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. +La fluidez en el terminal es una destreza a menudo abandonada y considerada arcaica, pero ésta mejora tu flexibilidad y productividad como ingeniero de formas obvias y sutiles. Esta es una selección de notas y consejos para usar el terminal que encontramos útiles al trabajar en Linux. Algunos consejos son elementales y algunos bastante específicos, sofisticados u oscuros. Esta página no es larga, pero si puedes usar y recordar todos los puntos aquí mostrados, sabrás un montón. Este trabajo es el resultado de [muchos autores y traductores](AUTHORS.md). La mayor parte [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si encuentras un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) +pero debido al interés mostrado, parecía valer la pena usar Github, donde personas más talentosas que el autor original pudieran sugergir mejoras fácilmente. Si ves un error o algo que podría mejorarse, por favor, ¡crea un issue o PR! (Por supuesto primero revisa la sección meta de PRs/issues.) ## Meta Alcance: -- Esta guía es tanto para principiantes como para expertos. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. -- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos sirven o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se concentra en Bash interactivo, aunque muchos de los consejos sirven para otros shells y en general para el scripting en Bash. -- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para justificar su inclusión. +- Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. +- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Se centra en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y en general para el Bash scripting. +- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. -- Usa [Explainshell](http://explainshell.com/) para obtener una ayuda detallada sobre que hacen los comandos, las opcioneslas pipes, etc. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares cuando conoces la idea o comando, con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. ## Fundamentos From 4c6240a339231946bd3ac72d272b43e95f2bfde1 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Mon, 4 Jan 2016 12:36:39 +0000 Subject: [PATCH 129/337] se aplican to aplican --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index bfb9a40..bf67f08 100644 --- a/README-es.md +++ b/README-es.md @@ -37,7 +37,7 @@ Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. - Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se centra en Bash interactivo, aunque muchos de los consejos se aplican para otros shells y en general para el Bash scripting. +- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y en general para el Bash scripting. - Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. Notas: From 045ce9a8136f0bf195d195afc389971b6f870198 Mon Sep 17 00:00:00 2001 From: lsrom Date: Tue, 5 Jan 2016 23:43:26 +0100 Subject: [PATCH 130/337] 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 131/337] 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 132/337] 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 133/337] 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 134/337] 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 135/337] 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 136/337] 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 137/337] 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 138/337] 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 139/337] 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 140/337] 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 141/337] 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 142/337] 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 143/337] 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 144/337] 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 145/337] 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 146/337] 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 147/337] 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 148/337] 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 149/337] 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 150/337] 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 151/337] 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 152/337] 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 153/337] 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 154/337] 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 155/337] 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 156/337] 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 157/337] 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 158/337] 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 159/337] 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 160/337] 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 161/337] 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 162/337] 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 163/337] 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 164/337] 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 c7aa146c8e65334d1111688494804ec1821ff084 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Wed, 13 Jan 2016 16:04:27 +0000 Subject: [PATCH 165/337] Added changes recommended by ceoaliongroo --- README-es.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-es.md b/README-es.md index bf67f08..fdb1a90 100644 --- a/README-es.md +++ b/README-es.md @@ -37,12 +37,12 @@ Alcance: - Esta guía es tanto para principiantes como para experimentados. Los objetivos son *diversidad* (todo importa), *especificidad* (dar ejemplos concretos del caso más común), y *concisión* (evitar cosas que no son esenciales o insignificantes que puedas buscar fácilmente en otro lugar). Cada consejo es esencial en alguna situación o significativamente puede ahorrar tiempo comparado con otras alternativas. - Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). -- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y en general para el Bash scripting. -- Incluye tanto comandos "estándar" Unix como algunos que requieren la instalación de un paquete especial -- siempre que sea lo suficientemente importante para merecer su inclusión. +- Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y al Bash scripting por lo general. +- Incluye tanto comandos "estándar" Unix así como los que requieren instalaciones de paquetes especiales -- siempre que sean lo suficientemente importantes para merecer su inclusión. Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares cuando conoces la idea o comando, con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +-- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. - Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. From 615aa90917707a815e131a93f10d49102c29a3d2 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Mon, 21 Dec 2015 15:05:28 +0100 Subject: [PATCH 166/337] 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 167/337] 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 168/337] 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 169/337] 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 170/337] 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 171/337] 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 172/337] 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 173/337] 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 174/337] 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 175/337] 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 176/337] 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 177/337] 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 178/337] 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 179/337] 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 180/337] 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 181/337] 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 182/337] 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 183/337] 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 184/337] 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 185/337] fr language links. Follow up on #344. --- README-cs.md | 3 +-- README-es.md | 5 ++--- README-fr.md | 11 +++++------ README-it.md | 3 +-- README-ja.md | 3 +-- README-ko.md | 3 +-- README-pt.md | 3 +-- README-ru.md | 3 +-- README-sl.md | 3 +-- README-uk.md | 3 +-- README-zh.md | 3 +-- README.md | 2 +- 12 files changed, 17 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 9674dd3..a8e3aa9 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index 868ddb4..08af60b 100644 --- a/README-es.md +++ b/README-es.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # El Arte del Terminal @@ -27,7 +26,7 @@ Parte de esta: [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareció](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) en [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. +pero se ha movido desde entonces a Github, donde personas más talentosas que el autor han hecho numerosas mejoras. [**Por favor contribuye**](/CONTRIBUTING.md) Si ves un error o algo que podría ser mejor! diff --git a/README-fr.md b/README-fr.md index 38f5a26..dff9889 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,7 +1,6 @@ 🌍 *[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - # L'art de la ligne de commande [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -52,7 +51,7 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib ## Notions de base -- Apprenez les bases de Bash. +- Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). @@ -108,7 +107,7 @@ Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` - Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). Vous pouvez alors y revenir plus tard à l'aide de la commande history. -- Utilisez `xargs` (ou `parallel`). +- Utilisez `xargs` (ou `parallel`). C'est très puissant. Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. @@ -328,7 +327,7 @@ Utilisez `iostat -mxz 15` pour des statistiques de base concernant le CPU, des s - Pour des informations sur les connexions réseaux, utilisez `netstat` et `ss`. -- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. +- Pour un rapide aperçu de ce qui se passe dans le système, `dstat` est particulièrement utile. Pour un aperçu plus étendu et détaillé, utilisez [`glances`](https://github.com/nicolargo/glances). - Pour connaître l'état de la mémoire, exécutez `free` et `vmstat` et comprenez leurs sorties. @@ -396,7 +395,7 @@ Cela peut être utile pour des répertoires remplis de fichiers de configuration find . -type f -ls ``` -- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. +- Supposons que vous ayez un fichier texte comme un fichier journal de serveur web et q'une certaine valeur, comme un paramètre `acct_id` présent dans l'URL, figure à certaines lignes. Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_id` : ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn @@ -530,7 +529,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `dstat` : statistiques sur les ressources système. -- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. +- [`glances`](https://github.com/nicolargo/glances): aperçu de haut niveau et multi-systèmes. - `iostat` : statistiques sur l'usage du disque. diff --git a/README-it.md b/README-it.md index be9a9d6..742d5ff 100644 --- a/README-it.md +++ b/README-it.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 6ab6215..80d6be8 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 02f9ed0..10b41c7 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 1d95b0b..1565c29 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 47d7193..7f5077a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 08830a2..2a9bc09 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 1eeabce..d7738f4 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index c529b19..90d2acb 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* - +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # 命令行的艺术 diff --git a/README.md b/README.md index c62dd30..87b28cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* # The Art of Command Line From b1c5c32c538e3a56d9ae24c55b83bde7e224edbc Mon Sep 17 00:00:00 2001 From: Uggla Date: Tue, 19 Jan 2016 20:08:49 +0100 Subject: [PATCH 186/337] Add instructions to manage filenames with whitespaces --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c62dd30..d0eda11 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,9 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` +- Use null character delimiter to manage filenames with whitespaces, example `locate -0 patern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. + To iterate on filenames containing whitespaces in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. + - `pstree -p` is a helpful display of the process tree. - Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). From 865e9d7ca9f7b30c27202cdd4cc0c29a014ee78e Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 19 Jan 2016 19:20:51 -0800 Subject: [PATCH 187/337] 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 188/337] One more fix to authors. #352. --- AUTHORS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index d0b473e..386f711 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,7 +33,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) -* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _francescomalatesta_ +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) @@ -44,7 +44,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [124+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[22+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [125+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -75,7 +75,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Riley Shaw (rileyjshaw)](https://github.com/rileyjshaw) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rileyjshaw)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arileyjshaw) -* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _rverchere_ +* [Remi Verchere (rverchere)](https://github.com/rverchere) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=rverchere)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arverchere) — _translator (fr)_ * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) From b1133546f80dc897e80f5ceea7a9c6969d7f8b0b Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 20 Jan 2016 08:46:34 +0100 Subject: [PATCH 189/337] fr: Make some improvements Thanks to an anonymous contributor. --- README-fr.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-fr.md b/README-fr.md index dff9889..e25d329 100644 --- a/README-fr.md +++ b/README-fr.md @@ -26,7 +26,7 @@ Cette page n'est pas bien longue, mais si vous pouvez retenir et vous servir de Ce document est le fruit du travail de [nombreux auteurs et traducteurs](AUTHORS.md). Une partie de celui-ci a été [initialement](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [publiée](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) sur [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), mais il se trouve maintenant sur GitHub, où des personnes plus compétentes que l'auteur originel ont apporté de nombreuses améliorations. -[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être meilleur ! +[**Merci de contribuer**](/CONTRIBUTING.md) si vous voyez une erreur ou quelque chose qui pourrait être amélioré ! ## Méta @@ -53,7 +53,7 @@ Utilisez `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (selon votre distrib - Apprenez les bases de Bash. En fait, tapez `man bash` et parcourez toute la page ; elle est relativement facile à suivre et pas si longue. -Les shells alternatives peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). +Les shells alternatifs peuvent être intéressants, mais Bash est puissant et disponible partout (apprendre *seulement* zsh, fish, etc., bien que cela soit tentant sur votre ordinateur portable, vous limite dans bien des situations, comme par exemple lors de l'utilisation de vrais serveurs). - Apprenez à bien utiliser au moins un éditeur en mode texte. Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d'éditer inopinément un texte dans un terminal (même si la plupart du temps vous utilisez Emacs, un gros EDI ou l'un de ces nouveaux éditeurs à la mode). @@ -110,7 +110,7 @@ Vous pouvez alors y revenir plus tard à l'aide de la commande history. - Utilisez `xargs` (ou `parallel`). C'est très puissant. Remarquez que vous pouvez contrôler le nombre d'items à exécuter par ligne (`-L`) ainsi que la parallélisation (`-P`). -Si vous n'êtes pas sûr qu'il fera les bonnes choses, utilisez d'abord `xargs echo`. +Si vous n'êtes pas sûr d'avoir fait ce qu'il faut, utilisez d'abord `xargs echo`. L'option `-I{}` est également pratique. Exemples : ```bash @@ -199,7 +199,7 @@ Une alternative plus légère pour la persistance des sessions seulement est `dt - Envisagez [`mosh`](https://mosh.mit.edu/) comme une alternative à ssh qui utilise UDP, évitant ainsi les pertes de connexion et ajoutant du confort en situation de mobilité (exige une installation côté serveur). -- Pour obtenir les permissions d'un fichier en octal, utile pour configurer le système mais non fournit pas `ls`, utilisez quelque chose comme +- Pour obtenir les permissions d'un fichier en octal, utile pour configurer le système mais non fournit par `ls`, utilisez quelque chose comme ```sh stat -c '%A %a %n' /etc/timezone ``` From 0f2e1386e486004ba0334e090e303773c1f896c9 Mon Sep 17 00:00:00 2001 From: Adrian Abreu Date: Wed, 20 Jan 2016 09:14:55 +0000 Subject: [PATCH 190/337] Fixed las opciones, las pipes, rephrased en Google --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index fdb1a90..f558eba 100644 --- a/README-es.md +++ b/README-es.md @@ -42,7 +42,7 @@ Alcance: Notas: --- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares, cuando conoces la idea o comando con Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. - Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. From c73ddc08e64ab60c87580d6cb6077c585493f2cc Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Thu, 21 Jan 2016 09:20:42 -0800 Subject: [PATCH 191/337] Clarify language tags. Re #349 --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 11d003d..fe1772a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,7 +42,7 @@ Translations to new languages are always welcome, especially if you can maintain - Check existing issues to see if a translation is in progress or stalled. If so, offer to help. - If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. -- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the lowercase language code. (Use standard two-letter ISO language codes, i.e. the same as is used by Wikipedia, not the code for a single country.) +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the language code. Use standard [IETF language tags](https://www.w3.org/International/articles/language-tags/), i.e. the same as is used by Wikipedia, *not* the code for a single country. These are usually just the two-letter lowercase code, for example, `fr` for French and `uk` for Ukrainian (not `ua`, which is for the country). For langauges that have variations, use the shortest tag, such as `zh-Hant`. - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - Add links to your translation at the top of every README*.md file. (For consistency, the link should be added in alphabetical order by ISO code, and the anchor text should be in the native language.) - When done, indicate on the PR that it's ready to be merged into the main repo. From 80d1bc91c6dd85b768a060995d3e0b0c64d5c111 Mon Sep 17 00:00:00 2001 From: Uggla Date: Fri, 22 Jan 2016 14:45:13 +0100 Subject: [PATCH 192/337] Update according to @jlevy suggestion into #350 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index d0eda11..81e2443 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,7 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` -- Use null character delimiter to manage filenames with whitespaces, example `locate -0 patern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. - To iterate on filenames containing whitespaces in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. +- Prefer the `-0` or `-print0` options to enable null characters to delimit filenames. This better supports filenames with whitespace.Example : `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. Always surround your bash variables with `"`. - `pstree -p` is a helpful display of the process tree. From d91728e4a0307c28093cd8eb528d720a94bb638c Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 22 Jan 2016 13:25:15 -0800 Subject: [PATCH 193/337] Follow up on #350. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fe04c78..c50a61e 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,6 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` -- Prefer the `-0` or `-print0` options to enable null characters to delimit filenames. This better supports filenames with whitespace.Example : `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to only '\n' using `IFS=$'\n'`. Always surround your bash variables with `"`. - `pstree -p` is a helpful display of the process tree. @@ -111,6 +110,8 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. +- Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. + - In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use `set -e` to abort on errors (nonzero exit code). Use `set -u` to detect unset variable usages. Consider `set -o pipefail` too, to on errors within pipes, too (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message: ```bash set -euo pipefail From 9be5e624f403b11b7aa3667695dc9b425c6cdccf Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 23 Jan 2016 03:18:56 +0100 Subject: [PATCH 194/337] fr: Update the translation --- README-fr.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README-fr.md b/README-fr.md index e25d329..54c1316 100644 --- a/README-fr.md +++ b/README-fr.md @@ -137,6 +137,11 @@ Pour la liste complète, consultez `man 7 signal`. - Utilisez `alias` pour créer des raccourcis vers les commandes fréquemment utilisées. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. +- Comprennez qu'il convient d'être prudent lorsque des variables et des noms de fichiers contiennent des espaces. +Mettez vos variables entre guillemets, par exemple `"$FOO"`. +Préférez les options `-0` ou `-print0` qui permettent de délimiter les noms des fichiers avec le caractère nul, par exemple `locate -0 pattern | xargs -0 ls -al` ou `find / -print0 -type d | xargs -0 ls -al`. +Pour itérer sur des noms de fichiers contenant des espaces dans une boucle for, positionnez la variable IFS avec le caractère de retour à la ligne à l'aide de `IFS=$'\n'`. + - Dans les scripts Bash, utilisez `set -x` (ou la variante `set -v` qui enregistre les entrées brutes, y compris les variables non référencées et les commentaires) pour l'affichage d'informations de débogage. Utilisez les modes stricts à moins que vous ayez une bonne raison de ne pas le faire : utilisez `set -e` pour interrompre le script en cas d'erreur (code de sortie non nul). Utilisez `set -u` pour détecter l'utilisation d'une variable non initialisée. From c2d211f489fd87a8c671d6659510d287b3b2bfa5 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 23 Jan 2016 03:27:39 +0100 Subject: [PATCH 195/337] sl: sync translation --- README-sl.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README-sl.md b/README-sl.md index 2a9bc09..b0bf041 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,7 @@ 🌍 *[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* + # Umetnost ukazne vrstice [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -92,6 +93,7 @@ Opombe: cat hosts | xargs -I{} ssh root@{} hostname ``` + - `pstree -p` je priročen prikaz drevesa procesov. - Uporabite `pgrep` in `pkill`, da najdete ali signalizirate procese po imenu (`-f` je v pomoč). @@ -108,6 +110,8 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. +- Razumite, da je potrebna skrb, ko spremenljivke in imena datotek vsebujejo prazne znake. Obdajte vaše spremenljivke Bash s citati, npr. `"$FOO"`. Raje cenite opciji `-0` ali `-print0`, da omogočite razmejevanje imen datotek z ničelnimi znaki, npr. `locate -0 pattern | xargs -0 ls -al` ali `find / -print0 -type d | xargs -0 ls -al`. Za iteracijo v for zanki na imenih datotek, ki vsebujejo prazne znake, nastavite da vaš IFS za nove vrstice uporablja samo `IFS=$'\n'`. + - V skriptah Bash uporabite `set -x` (ali varianto `set -v`, ki beleži dnevnik surovega izpisa, vključno z nerazširjenimi spremenljivkami in komentarji) za razhroščevanje izpisa. Uporabite striktni način razen, če imate dober razlog, da ga ne: Uporabite `set -e`, da preskočite napake (neničelna koda izhoda). Uporabite `set -u`, da zaznate uporabo nenastavljenih spremenljivk. Premislite tudi o `set -o pipefail`, da na napakah znotraj pip, (vendar preberite o tem več, če boste to uporabili, saj je ta tema nekoliko subtilna). Za bolj vključene skripte, uporabite tudi `trap` pri EXIT ali ERR. Uporabna navada je tako začeti skripto, kar bo naredilo, da lahko zazna ali prekliče na pogostih napakah in izpiše sporočilo: ```bash set -euo pipefail From 6ecaf462a853f0b790e99962f941778860c715a7 Mon Sep 17 00:00:00 2001 From: kevingo Date: Wed, 20 Jan 2016 18:15:44 +0800 Subject: [PATCH 196/337] Translate to Traditional Chinese --- README-cs.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 517 ++++++++++++++++++++++++++++++++++++++++++++++ README-zh.md | 2 +- README.md | 2 +- 12 files changed, 528 insertions(+), 11 deletions(-) create mode 100644 README-zh-Hant.md diff --git a/README-cs.md b/README-cs.md index 9674dd3..5e62dae 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-es.md b/README-es.md index 70f801c..90eef88 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-it.md b/README-it.md index be9a9d6..4c9fa37 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 6ab6215..de57166 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index 02f9ed0..fa38bcc 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index 1d95b0b..57139f4 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 47d7193..40436dc 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 4db5000..0482601 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 1eeabce..a8bb034 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md new file mode 100644 index 0000000..5dec030 --- /dev/null +++ b/README-zh-Hant.md @@ -0,0 +1,517 @@ +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + + +# 命令列的藝術 + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [必讀](#必讀) +- [基礎](#基礎) +- [日常使用](#日常使用) +- [檔案及資料處理](#檔案及資料處理) +- [系統偵錯](#系統偵錯) +- [單行指令碼](#單行指令碼) +- [冷門但有用](#冷門但有用) +- [僅限 OS X 系統](#僅限-os-x-系統) +- [更多資源](#更多資源) +- [免責聲明](#免責聲明) +- [授權條款](#授權條款) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +熟練使用命令列是一種常常被忽視,或被認為難以掌握的技能,但實際上,它會提高你作為工程師的靈活性以及生產力。本文是一份我在 Linux 上工作時,發現的一些命令列使用技巧的摘要。有些技巧非常基礎,而另一些則相當複雜,甚至晦澀難懂。這篇文章並不長,但當你能夠熟練掌握這裡列出的所有技巧時,你就學會了很多關於命令列的東西了。 + +這篇文章是[許多作者和譯者](AUTHORS.md)共同的成果。這裡的大部分內容 +[首次](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[出現](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +於 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know),但考慮到這裡的人們都具有學習的天賦且樂於接受別人的建議,使用 Github 來做這件事是更佳的選擇。如果你在本文中發現了錯誤或者​​存在可以改善的地方,請果斷提交 Issue 或 Pull Request! (當然在提交前請看一下必讀節和已有的 PR/issue)。 + + +## 必讀 + +涵蓋範圍: + +- 這篇文章對剛接觸命令列的新手以及具有命令列使用經驗的人都有用處。本文致力於做到*覆蓋面廣*(盡量包括一切重要的內容),*具體*(給出最常見的具體的例子)以及*簡潔*(避免不必要的,或是可以在其他地方輕鬆查到的細枝末節)。每個技巧都是在特定情境下必備的,或是能顯著減省時間的。 +- 本文為 Linux 所寫,除​​了 [僅限OS X 系統](#僅限-os-x-系統) 章節外,其它章節中的大部分內容都適用於其它 Unix 系統或 MacOS 系統,甚至 Cygwin。 +- 本文關注於互動式 Bash,儘管很多技巧也適用於其他 shell 或 Bash 指令碼。 +- 本文包括了“標準的” Unix 命令和需要安裝特定套件的命令,只要它們足夠重要。 + +注意事項: + +- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合適的包管理器)來安裝新程式。 +- 使用 [Explainshell](http://explainshell.com/) 去獲取相關命令、參數、管道等解釋。 + + +## 基礎 + +- 學習 Bash 的基礎知識。具體來說,輸入`man bash` 並至少全文瀏覽一遍; 它很簡單並且不長。其他的 shell 可能很好用,但 Bash 功能強大且幾乎所有情況下都是可用的( *只*學習 zsh,fish 或其他的 shell 的話,在你自己的電腦上會顯得很方便,但在很多情況下會限制你,比如當你需要在伺服器上工作時)。 + +- 學習並掌握至少一個基於文字的編輯器。通常 Vim (`vi`) 會是你最好的選擇,因為在終端裡進行隨機編輯 Vim 真的毫無敵手,哪怕是Emacs、某大型IDE 甚至時下非常流行的編輯器。 + +- 學會如何使用`man` 命令去閱讀文件。學會使用 `apropos` 去查詢文件。瞭解有些命令是不可執行,而是Bash內建的,可以使用`help` 和`help -d` 命令獲取幫助資訊。 + +- 學會使用`>` 和`<` 來重定向輸出和輸入,學會使用`|` 來重定向管道。明白`>` 會覆蓋了輸出文件而`>>` 是在檔案末新增。瞭解標準輸出 stdout 和標準錯誤 stderr。 + +- 學會使用通配符`*` (或許再算上`?` 和`[`...`]`) 和引用以及引用中`'` 和`"` 的區別。 + +- 熟悉 Bash 任務管理工具:`&`,**ctrl-z**,**ctrl-c**,`jobs`,`fg`,`bg`,`kill` 等。 + +- 瞭解`ssh`,以及學會通過使用`ssh-agent`,`ssh-add` 等命令來實現基本的無密碼認證。 + +- 學會基本的檔案管理:`ls` 和`ls -l` (瞭解`ls -l` 中每一列代表的意義),`less`,`head`,`tail` 和`tail -f` (甚至`less +F`),`ln` 和`ln -s` (瞭解硬連結與軟連結的區別),`chown`,`chmod`,`du` (硬碟使用情況概述:`du -hs *` )。關於檔案系統的管理,學習`df`,`mount`,`fdisk`,`mkfs`,`lsblk`。知道 inode 是什麼(與`ls -i` 和`df -i` 等命令相關)。 + +- 學習基本的網路管理:`ip` 或`ifconfig`,`dig`。 + +- 熟悉正規表示式,以及`grep`/`egrep` 裡不同參數的作用,例如`-i`,`-o`,`-v`,`-A`,`-B` 和`-C` ,這些參數是值得學習並掌握的。 + +- 學會使用`apt-get`,`yum`,`dnf` 或`pacman` (取決於你使用的 Linux 發行版)來查詢或安裝軟體包。並確保你的環境中有`pip` 來安裝基於 Python 的命令列工具(接下來提到的部分程式使用`pip` 來安裝會很方便)。 + + +## 日常使用 + +- 在 Bash 中,可以使用 **Tab** 自動補全參數,使用 **ctrl-r** 搜尋命令列歷史(在按下之後,鍵入便可以搜尋,重複按下**ctrl-r**會在更多匹配中迴圈,按下 **Enter** 會執行找到的命令,按下右方向鍵會將結果放入當前行中,使你可以進行編輯)。 + +- 在 Bash 中,可以使用 **ctrl-w** 刪除你鍵入的最後一個單詞,使用 **ctrl-u** 刪除整行,使用 **alt-b** 和 **alt-f**以單詞為單位移動游標,​​使用 **ctrl-a** 將游標移至行首,使用 **ctrl-e** 將游標移至行尾,使用 **ctrl-k** 刪除游標至行尾的所有內容,使用 **ctrl-l** 清屏。鍵入`man readline` 檢視Bash 中的預設快捷鍵,內容很多。例如 **alt-.** 迴圈地移向前一個參數,以及 **alt-*** 展開通配符。 + +- 你喜歡的話,可以鍵入`set -o vi` 來使用vi 風格的快捷鍵,而`set -o emacs` 可以把它改回來。 + +- 為了方便地鍵入長命令,在設定你的編輯器後(例如`export EDITOR=vim`),鍵入 **ctrl-x** **ctrl-e** 會開啟一個編輯器來編輯當前命令。在 vi 模式下則鍵入 **escape-v** 實現相同的功能。 + +- 鍵入 `history` 檢視命令列歷史記錄。其中有許多縮寫,例如`!$`(最後鍵入的參數)和`!!`(最後鍵入的命令),儘管通常被 **ctrl-r** 和 **alt-.** 取代。 + +- 回到上一個工作路徑:`cd -` + +- 如果你輸入命令的時候改變了主意,按下 **alt-#** 來在行首新增`#`,或者依次按下 **ctrl-a**, **#**, **enter **。這樣做的話,之後你可以很方便的利用命令列歷史回到你剛才輸入到一半的命令。 + +- 使用 `xargs` ( 或 `parallel`),他們非常強大。注意到你可以控制每行參數的個數(`-L`)和最大並行數(`-P`)。如果你不確定它們是否會按你想的那樣工作,先使用`xargs echo` 檢視一下。此外,使用 `-I{}` 會很方便。例如: +```bash +      find . -name '*.py' | xargs grep some_function +      cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` 有助於展示程序樹。 + +- 使用`pgrep` 和`pkill` 根據名字查詢程序或傳送訊號(`-f` 參數通常有用)。 + +- 瞭解你可以發往程序的訊號的種類。比如,使用`kill -STOP [pid]` 停止一個程序。使用 `man 7 signal` 檢視詳細列表。 + +- 使用`nohup` 或`disown` 使一個後臺程序持續運行。 + +- 使用`netstat -lntp` 或`ss -plat` 檢查哪些程序在監聽埠(預設是檢查 TCP 埠; 使用參數`-u` 檢查 UDP 埠)。 + +- 有關開啟 socket 和檔案,請參閱`lsof`。 + +- 使用`uptime` 或`w` 來檢視系統已經運行多長時間。 + +- 使用`alias` 來創建常用命令的快捷形式。例如:`alias ll='ls -latr'` 使你可以方便地執行`ls -latr`命令。 + +- 在 Bash 指令碼中,使用`set -x` 去偵錯輸出,盡可能的使用嚴格模式,使用`set -e` 令指令碼在發生錯誤時退出而不是繼續運行,使用`set -u` 來檢查是否使用了未賦值的變數,使用`set -o pipefail` 嚴謹地對待錯誤(儘管問題可能很微妙)。當牽扯到很多指令碼時,使用 `trap`。一個好的習慣是在指令碼檔案開頭這樣寫,這會使它檢測一些錯誤,並在錯誤發生時中斷程式並輸出資訊: +```bash +      set -euo pipefail +      trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- 在 Bash 指令碼中,子 shell(使用括號`(...)`)是一種組織參數的便捷方式。一個常見的例子是臨時地移動工作路徑,程式碼如下: +```bash +      # do something in current dir +      (cd /some/other/dir && other-command) +      # continue in original dir +``` + +- 在 Bash 中,要注意其中有許多形式的擴展。檢查變數是否存在:`${name:?error message}`。例如,當 Bash 指令碼需要一個參數時,可以使用這樣的程式碼`input_file=${1:?usage: $0 input_file}`。數學表示式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截斷字元串:`${var%suffix}` 和`${var#prefix}`。例如,假設`var=foo.pdf`,那麼`echo ${var%.pdf}.txt` 將輸出`foo.txt`。 + +- 使用括號擴展(`{`...`}`)來減少輸入相似文字,並自動化文字組合。這在某些情況下會很有用,例如`mv foo.{txt,pdf} some-dir`(同時移動兩個檔案),`cp somefile{,.bak}`(會被擴展成`cp somefile somefile .bak`)或者`mkdir -p test-{a,b,c}/subtest-{1,2,3}`(會被擴展成所有可能的組合,並創建一個目錄樹)。 + +- 通過使用`<(some command)` 可以將輸出視為檔案。例如,對比本地檔案`/etc/hosts` 和一個​​遠端檔案: +```sh +      diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- 瞭解 Bash 中的“here documents”,例如`cat <logfile 2>&1`。通常,為了保證命令不會在標準輸入裡殘留一個開啟了的檔案控制代碼導致你當前所在的終端無法操作,新增` bar: +      repren --full --preserve-case --from foo --to bar . +      # Recover backup files whatever.bak -> whatever: +      repren --renames --from '(.*)\.bak' --to '\1' *.bak +      # Same as above, using rename, if available: +      rename 's/\.bak$//' *.bak +``` + +- 根據 man 頁面的描述,`rsync` 真的是一個快速且非常靈​​活的檔案複製工具。它通常被用於機器間的同步,但在本地也同樣有用。它同時也是刪除大量檔案的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove -huge-number-of-files.html)之一: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- 使用`shuf` 從一個檔案中隨機選取多行。 + +- 瞭解 `sort` 的參數。處理數字方面,使用`-n` 或者`-h` 來處理可讀性數字(例如`du -h` 的輸出)。明白鍵的工作原理(`-t` 和 `-k`)。例如,注意到你需要`-k1,1` 來按照第一個欄位來排序,而`-k1` 意味著按照整行排序。穩定排序(`sort -s`)在某些情況下很有用。例如,以第二個欄位為主關鍵字,第一個欄位為次關鍵字進行排序,你可以使用`sort -k1,1 | sort -s -k2,2`。 + +- 如果你想在 Bash 命令列中寫 tab 製表符,按下**ctrl-v** **[Tab]** 或鍵入`$'\t'` (後者可能更好,因為你可以複製貼上它)。 + +- 標準的原始碼對比及合併工具是`diff` 和`patch`。使用 `diffstat` 檢視變更總覽資料。注意到 `diff -r` 對整個資料夾有效。使用`diff -r tree1 tree2 | diffstat` 檢視變更總覽資料。 + +- 對於二進製檔案,使用`hd` 使其以十六進位制顯示以及使用`bvi` 來編輯二進位制。 + +- 同樣對於二進製檔案,`strings`(包括`grep` 等等)允許你查詢一些文字。 + +- 二進製檔案對比(Delta 壓縮),使用`xdelta3`。 + +- 使用 `iconv` 更改文字編碼。而更高階的用法,可以使用`uconv`,它支援一些高階的Unicode 功能。例如,這條命令將所有母音字母轉為小寫並移除了: +```sh +      uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- 拆分檔案,檢視`split`(按大小拆分)和`csplit`(按模式拆分)。 + +- 用[`dateutils`](http://www.fresse.org/dateutils/) 中的`dateadd`, `datediff`, `strptime` 等工具操作日期和時間表示式。 + +- 使用`zless`,`zmore`,`zcat` 和`zgrep` 對壓縮過的檔案進行操作。 + + +## 系統偵錯 + +- `curl` 和`curl -I` 可以便捷地被應用於 web 偵錯,它們的好兄弟`wget` 也可以,或者是更潮的[`httpie`](https://github.com/jakubroztocil /httpie)。 + +- 使用`iostat`、`netstat`、`top` (`htop` 更佳)和`dstat` 去獲取硬碟、cpu 和網路的狀態。熟練掌握這些工具可以使你快速的對系統的當前狀態有一個大概的認識。 + +- 使用`netstat` 和`ss` 檢視網路連線的細節。 + +- 若要對系統有一個深度的總體認識,使用[`glances`](https://github.com/nicolargo/glances)。它在一個終端視窗中向你提供一些系統層級的資料。這對於快速的檢查各個子系統非常有幫助。 + +- 若要了解記憶體狀態,運行並理解`free` 和`vmstat` 的輸出。尤其注意 “cached” 的值,它指的是 Linux 核心用來作為檔案快取的記憶體大小,因此它與空閒記憶體無關。 + +- Java 系統偵錯則是一件截然不同的事,一個可以用於 Oracle 的 JVM 或其他 JVM 上的偵錯的技巧是你可以運行`kill -3 ` 同時一個完整的棧軌跡和堆概述(包括 GC 的細節)會被儲存到標準輸出/日誌檔案。 JDK 中的`jps`,`jstat`,`jstack`,`jmap` 很有用。 [SJK tools](https://github.com/aragozin/jvm-tools) 更高階. + +- 使用`mtr` ​​去跟蹤路由,用於確定網路問題。 + +- 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 + +- 查詢正在使用頻寬的 socket 連線或程序,使用`iftop` 或`nethogs`。 + +- `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 + +- `wireshark`,`tshark` 和`ngrep` 可用於復雜的網路偵錯。 + +- 瞭解 `strace` 和 `ltrace`。這倆工具在你的程式運行失敗、掛起甚至崩潰,而你卻不知道為什麼或你想對效能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的程序參數(`-p`)。 + +- 瞭解使用 `ldd` 來檢查共享庫。 + +- 瞭解如何運用`gdb` 連線到一個運行著的程序並獲取它的堆棧軌跡。 + +- 學會使用 `/proc`。它在偵錯正在出現的問題的時候有時會效果驚人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/` ,`/proc/xxx/smaps`(這裡的`xxx` 表示程序的 id 或 pid)。 + +- 當偵錯一些之前出現的問題的時候,`sar` 非常有用。它展示了 cpu、記憶體以及網路等的歷史資料。 + +- 關於更深層次的系統分析以及效能分析,看看`stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org /wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 + +- 檢視你當前使用的系統,使用`uname` , `uname -a` (Unix/kernel 資訊) 或者`lsb_release -a` (Linux 發行版資訊)。 + +- 無論什麼東西工作得很歡樂時試試`dmesg`(可能是硬體或驅動問題)。 + + +## 單行指令碼 + +一些命令組合的例子: + +- 當你需要對文字檔案做集合交、並、差運算時,結合使用`sort`/`uniq` 很有幫助。假設 `a` 與 `b` 是兩內容不同的檔案。這種方式效率很高,並且在小檔案和上G的檔案上都能運用(`sort` 不被記憶體大小約束,儘管在`/tmp` 在一個小的根分區上時你可能需要`-T ` 參數),參閱前文中關於`LC_ALL` 和`sort` 的`-u` 參數的部分。 +```sh +      cat a b | sort | uniq > c # c is a union b +      cat ab | sort | uniq -d > c # c is a intersect b +      cat abb | sort | uniq -u > c # c is set difference a - b +``` + +- 使用`grep . *`(每行都會附上檔名)或者`head -100 *`(每個檔案有一個標題)來閱讀檢查目錄下所有檔案的內容。這在檢查一個充滿配置檔案的目錄(如`/sys`、`/proc`、`/etc`)時特別好用。 + +- 計算文字檔案第三列中所有數的和(可能比同等作用的Python 程式碼快三倍且程式碼量少三倍): +```sh +      awk '{ x += $3 } END { print x }' myfile +``` + +- 如果你想在檔案樹上檢視大小/日期,這可能看起來像遞迴版的`ls -l` 但比`ls -lR` 更易於理解: +```sh +      find . -type f -ls +``` + +- 假設你有一個類似於 web 伺服器日誌檔案的文字檔案,並且一個確定的值只會出現在某些行上,假設一個`acct_id` 參數在URI中。如果你想計算出每個`acct_id` 值有多少次請求,使用如下程式碼: +```sh +      cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- 運行這個函數從這篇文件中隨機獲取一條技巧(解析 Markdown 檔案並抽取項目): +```sh +      function taocl() { +        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | +          pandoc -f markdown -t html | +          xmlstarlet fo --html --dropdtd | +          xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | +          xmlstarlet unesc | fmt -80 +      } +``` + + +## 冷門但有用的指令 + +- `expr`:計算表示式或正規表示法 + +- `m4`:簡易的巨集處理器 + +- `yes`:列印多次字串 + +- `cal`:漂亮的日曆 + +- `env`:執行一個命令(指令碼中很有用) + +- `printenv`:列印環境變數(偵錯時或在使用指令碼時很有用) + +- `look`:查詢以特定字元串開頭的單詞 + +- `cut`、`paste` 和 `join`:資料操作 + +- `fmt`:格式化文字段落 + +- `pr`:將文字格式化成頁/列形式 + +- `fold`:包裹文字中的幾行 + +- `column`:將文字格式化成多列或表格 + +- `expand` 和`unexpand`:在 tab 與空格之間轉換 + +- `nl`:新增行號 + +- `seq`:列印數字 + +- `bc`:計算機 + +- `factor`:分解因數 + +- [`gpg`](https://gnupg.org/):加密並針對檔案簽章 + +- `toe`:terminfo entries 列表 + +- `nc`:網路偵錯及資料傳輸 + +- `socat`:socket 代理,與 `netcat` 類似 + +- [`slurm`](https://github.com/mattthias/slurm):網路流量視覺化 + +- `dd`:在檔案或裝置間傳輸資料 + +- `file`:確定檔案類型 + +- `tree`:以樹的形式顯示路徑和檔案,類似於遞迴的`ls` + +- `stat`:檔案資訊 + +- `time`:執行命令,同時計算執行時間 + +- `lockfile`:使檔案只能通過`rm -f` 移除 + +- `logrotate`: 切換、壓縮以及傳送日誌檔案 + +- `watch`:重複運行同一個命令,展示結果並 highlight 有更改的部分 + +- `tac`:反向輸出文件 + +- `shuf`:檔案中隨機選取幾行 + +- `comm`:一行一行的比較排序過的檔案 + +- `pv`:監視通過 pipe 的資料 + +- `hd`,`hexdump`,`xxd`,`biew` 和`bvi`:儲存或編輯二進位檔案 + +- `strings`:從二進位檔案中抽取文字 + +- `tr`:轉換字母 + +- `iconv` 或 `uconv`:簡易的檔案編碼 + +- `split` 和 `csplit`:分割檔案 + +- `sponge`:在寫入前讀取所有輸入,在讀取檔案後再向同一檔案寫入時比較有用,例如`grep -v something some-file | sponge some-file` + +- `units`:將一種計量單位轉換為另一種等效的計量單位(參閱`/usr/share/units/definitions.units`) + +- `apg`:隨機生成密碼 + +- `7z`:高比例的檔案壓縮 + +- `ldd`:動態庫資訊 + +- `nm`:提取 obj 檔案中的符號 + +- `ab`:效能分析 web 伺服器 + +- `strace`:系統呼叫偵錯 + +- `mtr`:更好的網路偵錯跟蹤工具 + +- `cssh`:視覺化的並發 shell + +- `rsync`:通過ssh 或本地檔案系統同步檔案和資料夾 + +- `wireshark` 和`tshark`:抓包和網路偵錯工具 + +- `ngrep`:網路層的 grep + +- `host` 和 `dig`:DNS 查詢 + +- `lsof`:列出當前系統開啟檔案的工具以及檢視埠資訊 + +- `dstat`:系統狀態檢視 + +- [`glances`](https://github.com/nicolargo/glances):高層次的多子系統總覽 + +- `iostat`:硬碟使用狀態 + +- `mpstat`: CPU 使用狀態 + +- `vmstat`: 記憶體使用狀態 + +- `htop`:top 的加強版 + +- `last`:登入記錄 + +- `w`:檢視處於登入狀態的使用者 + +- `id`:使用者/組 ID 資訊 + +- `sar`:系統歷史資料 + +- `iftop` 或`nethogs`:套接字及程序的網路利用 + +- `ss`:socket 資料 + +- `dmesg`:引導及系統錯誤資訊 + +- `sysctl`: 在核心運行時動態地檢視和修改內核的運行參數 + +- `hdparm`:SATA/ATA 磁碟更改及效能分析 + +- `lsb_release`:Linux 發行版資訊 + +- `lsblk`:列出塊裝置資訊:以樹形展示你的磁碟以及磁碟分區資訊 + +- `lshw`,`lscpu`,`lspci`,`lsusb` 和`dmidecode`:檢視硬體資訊,包括CPU、BIOS、RAID、顯示卡、USB裝置等 + +- `lsmod` 和`modinfo`:列出核心模組,並顯示其細節 + +- `fortune`,`ddate` 和`sl`:額,這主要取決於你是否認為蒸汽火車和莫名其妙的名人名言是否“有用” + +## 僅限 OS X 系統 + +以下是*僅限於* MacOS 系統的技巧 + +- 用`brew` (Homebrew)或者`port` (MacPorts)進行套件管理。這些可以用來在 Mac 系統上安裝以上的大多數命令。 + +- 用`pbcopy` 複製任何命令的輸出到桌面應用,用`pbpaste` 貼上輸入。 + +- 若要在 Mac OS 終端中將 Option 鍵視為 alt 鍵(例如在上面介紹的**alt-b**, **alt-f** 等命令中用到),開啟偏好設定-> 描述檔案-> 鍵盤並勾選“使用 Option 鍵作為 Meta 鍵”。 + +- 用`open` 或者`open -a /Applications/Whatever.app` 使用桌面應用開啟檔案。 + +- Spotlight: 用`mdfind` 搜尋檔案,用`mdls` 列出後設資料(例如照片的EXIF 資訊)。 + +- 注意 MacOS 系統是基於BSD UNIX 的,許多命令(例如`ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,這些指令主要是被 System V -style Unix 和 GNU 工具影響。你可以透過標題為"BSD General Commands Manual" 的 man 頁面發現這些不同。在有些情況下 GNU 版本的命令也可能被安裝(例如`gawk` 和`gsed` 對應GNU 中的awk 和sed )。如果要寫跨平臺的 Bash 指令碼,避免使用這些命令(例如,考慮 Python 或者`perl` )或者經過仔細的測試。 + +- 用 `sw_vers` 獲取 MacOS 的版本資訊。 + + + +## 更多資源 + +- [awesome-shell](https://github.com/alebcay/awesome-shell):一份精美的命令列工具及資源的列表。 +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line):一份針對 Mac OS 命令列的更深入的指南。 +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):為了編寫更好的指令碼檔案。 +- [shellcheck](https://github.com/koalaman/shellcheck):一個靜態shell 指令碼分析工具,本質上是 bash/sh/zsh 的lint。 +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):有關如何在 shell 腳本里正確處理檔名的細枝末節。 + + +## 免責聲明 + +除去特別微小的任務,編寫程式碼是出於方便閱讀的目的。能力往往伴隨著責任。你*可以* 在 Bash 中做一些事並不意味著你應該去做! ;) + + +##授權條款 + +[![創作共用License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +本文使用授權協議[知識共享署名 - 相同方式共享4.0國際許可(http://creativecommons.org/licenses/by-sa/4.0/)。 diff --git a/README-zh.md b/README-zh.md index 0249d9f..8037fdf 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 diff --git a/README.md b/README.md index 4bacb7a..d6f2d4e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md)* +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From bf5fbaa669e6f29765a9f968726ab714032dfbbd Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 21:40:08 +0800 Subject: [PATCH 197/337] ru: sync&correct translate --- README-ru.md | 202 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 73 deletions(-) diff --git a/README-ru.md b/README-ru.md index 7f5077a..6338ed3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -9,7 +9,7 @@ - [Основы](#Основы) - [Ежедневное использование](#Ежедневное-использование) - [Процессинг файлов и информации](#Процессинг-файлов-и-информации) -- [Системный дебаггинг](#Системный-дебаггинг) +- [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) - [OS X only](#os-x-only) @@ -21,17 +21,18 @@ Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят, как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! +Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста оставьте тикет или киньте пулл-реквест (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). +начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[MacOS only](#macos-only)". Все остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin). +- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[OS X only](#os-x-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу. - Эта инструкция включает в себя стандартные Unix команды и те, для которых нужно устанавливать сторонние пакеты. Они настолько полезны, что стоят того, чтобы их установили. @@ -43,43 +44,47 @@ ## Основы -- Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноуте во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). +- Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноутбуке во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). - Выучите как использовать хотя бы один консольный редактор текста. Идеально Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если Вы постоянно сидите на Emacs/какой-нибудь тяжелой IDE или на каком-нибудь модном хипстерском редакторе) - Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos`, и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. -- Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` добавляет к нему. Узнайте побольше про stdout и stderr. +- Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` дописывает в конец. Узнайте побольше про stdout и stderr. - Узнайте побольше про раскрытие file glob элементов `*` (а также `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже.) -- Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, и т.д. +- Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` и т.д. -- Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add`, и т.д. +- Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add` и т.д. -- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` или `df -i`). - Основы работы с сетью: `ip` или `ifconfig`, `dig`. -- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-A`, и `-B` стоит знать. +- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. -- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива). Знайте как искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). +- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). ## Ежедневное использование -- Используйте таб в Баше для автокомплита аргументов к командам и **ctrl-r** для поиска по истории командной строки. +- Используйте таб в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки (после нажатия введите запрос, нажмите **ctrl-r** снова чтобы натйи следующее сопадение, нажмите **Enter** для выполнения текущей найденной команды или стрелку вправо чтобы отредактировать команду). -- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-k** для того, чтобы прыгнуть к концу строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех шорткатах Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** расширяет глоб.?? +- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing). -- Если Вам нравятся шорткаты vim, сделайте `set -o vi`. +- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). - Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. -- Для того, чтобы прыгнуть к последней рабочей директории, используйте `cd -` +- Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. + +- Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. -- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду, как комментарий. Потом вы сможете вернуться к ней через историю. +- Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` -- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а также параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: +- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. + +- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -97,9 +102,17 @@ - Используйте `lsof` для того, чтобы посмотреть открытые сокеты и файлы. -- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. +- Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы. + +- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. +- Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. + +- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` -- В Баш скриптах используйте `set -x` для того, чтобы дебажить аутпут. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap`. - В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так: ```bash @@ -110,20 +123,22 @@ - В Баше много типов пространства переменных. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf` тогда `echo ${var%.pdf}.txt` выведет `foo.txt`. -- Вывод любой команды можно сохранить в файлоподобный контекст по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: +- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). + +- Вывод любой команды можно сохранить в файлоподобный контекст с помощью `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` - Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <logfile 2>&1`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять ` bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- Как говорит man, `rsync` действительно быстрая и очень универсальная утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` - Используйте `shuf`, чтобы перемешать строки или выбрать случайную строчку из файла. -- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1` для того, чтобы отсортировать только первое поле; `-k1` - это сортировка, учитывая всю строчку. Также стабильная сортировка может быть полезной (`sort -s`). Например для того, чтобы отсортировать самое важное по второму полю, а второстепенное по первому, можно использовать sort -k1,1 | sort -s -k2,2`. +- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1` для того, чтобы отсортировать только первое поле; `-k1` - это сортировка, учитывая всю строчку. Также стабильная сортировка может быть полезной (`sort -s`). Например для того, чтобы отсортировать самое важное по второму полю, а второстепенное по первому, можно использовать `sort -k1,1 | sort -s -k2,2`. - Если вам когда-нибудь придётся написать код символа табуляции в терминале, например, для сортировки по табуляциям с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать. - Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. -- Для бинарников используйте `hd` для простых hex-дампом, и `bvi` для двоичного изменения бинарников. +- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` for a side-by-side diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. Use `vimdiff` to compare and edit files. -- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарниках. +- Для бинарных файлов используйте `hd`, `hexdump` или `xxd` для простых hex-дампов, и `bvi` для двоичного изменения бинарных файлов. -- Чтобы посмотреть разницу в бинарниках (дельта-кодирование): `xdelta3`. +- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарных файлах. -- Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (кои бывают, например, в испанском языке) +- Чтобы посмотреть разницу в бинарниках (дельта-кодирование) используйте `xdelta3`. + +- Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (которые бывают, например, в испанском языке) ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt @@ -219,19 +247,25 @@ - Для того, чтобы разбить файл на куски, используйте `split` (разбивает на куски по размеру), или `csplit` (по шаблону или регулярному выражению). +- Для операций с датой и временными выраженияями используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). + - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. -## Системный дебаггинг +## Отладка системы -- Дле веб-дебаггинга используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). +- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). -- Чтобы получить информацию о диске/CPU/сети используйте `iostat`, `netstat`, `top` (или лучшую альтернативу `htop`) и особенно `dstat`. Хороший старт для того, чтобы понимать, что происходит в системе. -- Для более детальной информации используйте [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами. + +- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. + +- Для получения информации о сетевых соедиениях используйте `netstat` и `ss`. + +- Для получения краткой информации о происходящем в системе используйте `dstat`, для более детальной информации: [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами. - Для того, чтобы следить за памятью, научитесь понимать `free` и `vmstat`. В частности, не забывайте, что кешированые значения ("cached" value) – это память, которую держит ядро и эти значения являются частью `free`. -- Дебаггинг Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать делать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно дампнуть в stderr или логи. +- Отладка Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать делать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. - Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети. @@ -239,23 +273,23 @@ - Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`. -- `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного лоад-тестинга используйте `siege`. +- `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. -- Для более серьёзного дебаггинга сетей используйте `wireshark`, `tshark`, и `ngrep`. +- Для более серьёзной отладки сетей используйте `wireshark`, `tshark` и `ngrep`. -- Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность дебаггинга (`-c`) и возможность прицепиться к процессу по pid (`-p`). +- Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). - Не забывайте про `ldd` для проверки системных библиотек. - Знайте как прицепиться к работающему процессу через `gdb` и получить трассировку стека. -- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. +- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (где `xxx` это pid). -- Когда дебажите что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. +- Когда отлаживаете что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. - Для анализа более сложных систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig). -- Узнайте, какая у вас операционка, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). +- Узнайте, какая у вас ОС, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). @@ -278,23 +312,18 @@ awk '{ x += $3 } END { print x }' myfile ``` -- Если вам нужно посмотреть размеры и даты создания древа файлов используйте: +- Если вам нужно посмотреть размеры и даты создания дерева файлов используйте: ```sh find . -type f -ls ``` Это почти как рекурсивная `ls -l`, но выглядит более читабельно чем `ls -lR`: -- Используйте `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а так же параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: -```sh - find . -name '*.py' | xargs grep some_function - cat hosts | xargs -I{} ssh root@{} hostname -``` - - Давайте представим, что у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` +- Для непрерывного мониторинга измененний используйте `watch`, например, проверка измений файлов в директории: `watch -d -n 2 'ls -rtlh | tail'` или сетевых настроек во время устранения проблем с вашей wifi сетью: `watch -d -n 2 ifconfig`. - Запустите этот скрипт, чтобы получить случайный совет из этой инструкции: ```sh @@ -320,7 +349,7 @@ - `env`: для того, чтобы выполнить команду (полезно в Bash-скриптах) -- `printenv`: показать переменные окружения (полезно в скриптах или дебаггинге) +- `printenv`: показать переменные окружения (полезно в скриптах или отладке) - `look`: найти английские слова (или строки) в файле @@ -344,15 +373,15 @@ - `factor`: возвести числа в степень -- `gpg`: зашифровать и подписать файлы +- [`gpg`](https://gnupg.org/): зашифровать и подписать файлы - `toe`: таблица терминалов terminfo с описанием -- `nc`: дебаггинг сети и передачи данных +- `nc`: отладка сети и передачи данных - `socat`: переключатель сокетов и перенаправление tcp-портов (похоже на `netcat`) -- `slurm`: визуализация трафика сети +- [`slurm`](https://github.com/mattthias/slurm): визуализация трафика сети - `dd`: перенос информации между блочными устройствами @@ -362,6 +391,16 @@ - `stat`: информация о файле +- `time`: время выполнения команды + +- `timeout`: выполнять команду указанное количество времени и остановить процесс по его истечении + +- `lockfile`: создание семафорного файла, который может быть удален только с помощью `rm -f` + +- `logrotate`: ротация, сжатие и отправка логов по почте. + +- `watch`: повторный запуск команды с выводом результата или подсветкой изменений + - `tac`: вывести файл посимвольно наоборот ("ласипан") - `shuf`: случайная выборка строк из файла @@ -370,7 +409,7 @@ - `pv`: мониторинг прогресса прохождения информации через пайп -- `hd`, `hexdump`, `xxd`, `biew`: hex-дамп и редактирование бинарников +- `hd`, `hexdump`, `xxd`, `biew` и `bvi`: hex-дамп и редактирование бинарных файлов - `strings`: найти текст в бинарниках @@ -380,33 +419,35 @@ - `split` и `csplit`: разбить файлы -- `sponge`: прочитать весь инпут перед тем, как его записать. Полезно, когда читаешь из того же файла, куда записываешь. Например, вот так: `grep -v something some-file | sponge some-file` +- `sponge`: прочитать весь входной поток перед тем, как его записать. Полезно, когда читаешь из того же файла, куда записываешь. Например, вот так: `grep -v something some-file | sponge some-file` - `units`: конвертер. Метры в километры, версты в пяди (смотрите `/usr/share/units/definitions.units`) +- `apg`: генерация случайных паролей + - `7z`: архиватор с высокой степенью сжатия - `ldd`: показывает зависимости программы от системных библиотек -- `nm`: получаем названия всех функций, которые определены в .o или .a +- `nm`: получаем названия всех функций, которые определены в .o или .a (объектные файлы) - `ab`: бенчмаркинг веб-серверов - `strace`: отладка системных вызовов -- `mtr`: лучшая трассировка для дебаггинга сети +- `mtr`: лучшая трассировка для отладки сети - `cssh`: несколько терминалов в одном UI - `rsync`: синхронизация файлов и папок через SSH -- `wireshark` и `tshark`: перехват пакетов и дебаг сети +- `wireshark` и `tshark`: перехват пакетов и отладка сети -- `ngrep`: grep для слоя сети (network layer) +- `ngrep`: grep для слоя сети (network layer). Перехват пакетов по заданной маске. - `host` и `dig`: узнать DNS -- `lsof`: процессинг дескрипторов и информация о сокетах +- `lsof`: информация о дескрипторах и сокетах процесса - `dstat`: полезная статистика ОС @@ -414,6 +455,10 @@ - `iostat`: статистика процессора и использования жёсткого диска +- `mpstat`: статистика использования процессора + +- `vmstat`: статистика использования памяти + - `htop`: улучшенная версия `top` - `last`: история логинов в систему @@ -430,6 +475,8 @@ - `dmesg`: ошибки загрузки и ошибки системы +- `sysctl`: просмотр и конфигурирование параметров ядра Linux + - `hdparm`: манипуляции с SATA/ATA - `lsb_release`: информация о дистрибутиве Linux @@ -438,26 +485,35 @@ - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: информация о железе, включая CPU, BIOS, RAID, графику, девайсы, и т.д. -- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) +- `lsmod` и `modinfo`: информация о модулях ядра. + +- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезные" веселые цитатки и поезда, пересекающие ваш терминал :) ## OS X only -Некоторые вещи, подходящие *только* для Мака. +Некоторые вещи, подходящие *только* для OS X. - Системы управлением пакетами – `brew` (Homebrew) и `port` (MacPorts). Они могут быть использованы для того, чтобы установить большинство программ, упомянутых в этом документе. - Копируйте выдачу консольных программ в десктопные через `pbcopy` и вставляйте входные данные через `pbpaste`. +- Чтобы использовать в OS X кнопку Options как Alt (для использования команд **alt-b**, **alt-f** и т.д.) в настройках Терминала откройте Профили -> Клавиатура и выберите "Использовать клавишу Option в качестве метаклавиши" ("Use Option as Meta key"). + - Для того, чтобы открыть файл или десктопную программу типа Finder, используйте `open`. Вот так: `open -a /Applications/Whatever.app`. -- Spotlight: Ищите файлы в консоли, через `mdfind`, и смотрите метадату (например EXIF информацию фотографий) через `mdls`. +- Spotlight: Ищите файлы в консоли, через `mdfind`, и смотрите метаданные (например EXIF информацию фотографий) через `mdls`. -- Не забывайте, что MacOS основан на BSD Unix и многие команды (например `ps`, `ls`, `tail`, `awk`, `sed`) имеют небольшие различия с линуксовыми. Это обусловлено влянием `UNIX System V` и `GNU Tools`. Разницу можно заметить, увидев заголовок "BSD General Commands Manual." в манах программ. В некоторых случаях, на Мак можно поставить GNU-версии программ, например `gawk` и `gsed`. Когда пишите кроссплатформенные Bash-скрипты, старайтесь избегать использовать команды, которые могут различаться (например, лучше используйте Python или `perl`), или тщательно все тестируйте. +- Не забывайте, что OS X основана на BSD Unix и многие команды (например `ps`, `ls`, `tail`, `awk`, `sed`) имеют небольшие различия с линуксовыми. Это обусловлено влянием `UNIX System V` и `GNU Tools`. Разницу можно заметить, увидев заголовок "BSD General Commands Manual." в манах программ. В некоторых случаях, на Мак можно поставить GNU-версии программ, например `gawk` и `gsed`. Когда пишите кроссплатформенные Bash-скрипты, старайтесь избегать использовать команды, которые могут различаться (например, лучше используйте Python или `perl`), или тщательно все тестируйте. + +- Чтобы получить информацию о версии OS X используйте `sw_vers`. ## Больше информации по теме - [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Более детальные гайды по терминалу в OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) Для того, чтобы писать шелл-скрипты лучше. +- [shellcheck](https://github.com/koalaman/shellcheck): Статический анализатор скриптов. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Сборник мелочей о правильной обработке имен файлов в скриптах. ## Дисклеймер From 8010533a8023093eda81a118e4555f3afce9a4b2 Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 22:01:13 +0800 Subject: [PATCH 198/337] ru: sync&correct translate +fixed gramma --- README-ru.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README-ru.md b/README-ru.md index 6338ed3..b9094e3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -58,13 +58,13 @@ - Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add` и т.д. -- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` или `df -i`). +- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Узнайте что такое inodes (`ls -i` bkb `df -i`). - Основы работы с сетью: `ip` или `ifconfig`, `dig`. - Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. -- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). +- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). ## Ежедневное использование @@ -82,9 +82,9 @@ - Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` -- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. +- Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. -- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: +- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что вы можете контролировать количество команд на каждую строку (`-L`), а также параллельность (`-P`). Если вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -107,7 +107,7 @@ - Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. - Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. -- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): +- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -132,7 +132,7 @@ - Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `logfile 2>&1` или `some-command &>logfile`. Зачастую, для того, чтобы убедиться, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. +- Отладка Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. - Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети. From 806cd03f62e7488664d1a46effb17c16b24f817d Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Mon, 25 Jan 2016 23:18:19 +0800 Subject: [PATCH 199/337] ru: sync&correct translate +more fixes --- README-ru.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/README-ru.md b/README-ru.md index b9094e3..a7607f8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -8,7 +8,7 @@ - [Описание](#Описание) - [Основы](#Основы) - [Ежедневное использование](#Ежедневное-использование) -- [Процессинг файлов и информации](#Процессинг-файлов-и-информации) +- [Обработка файлов и информации](#Обработка-файлов-и-информации) - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) @@ -19,7 +19,7 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят, как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! +Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) @@ -123,7 +123,7 @@ - В Баше много типов пространства переменных. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf` тогда `echo ${var%.pdf}.txt` выведет `foo.txt`. -- Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). +- Использование скобок `{...}` может уменьшить необходиость повторно вводить схожий текст и автоматизирует комбинирование элементов. Это полезно например здесь: `mv foo.{txt,pdf} some-dir` (переместит оба файла), `cp somefile{,.bak}` (приведется к `cp somefile somefile.bak`) или `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (раскроет все возможные комбинации и создаст дерево каталогов). - Вывод любой команды можно сохранить в файлоподобный контекст с помощью `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: ```sh @@ -170,7 +170,7 @@ - Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы эмулировать свежий логин от рута или другого пользователя. -## Процессинг файлов и информации +## Обработка файлов и информации - Для того, чтобы найти файл в текущей директории, сделайте `find . -iname '*something*'`. Для того, чтобы искать файл по всей системе, используйте `locate something` (но не забывайте, что `updatedb` мог еще не проиндексировать недавно созданные файлы). @@ -229,9 +229,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Если вам когда-нибудь придётся написать код символа табуляции в терминале, например, для сортировки по табуляциям с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать. -- Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. - -- The standard tools for patching source code are `diff` and `patch`. See also `diffstat` for summary statistics of a diff and `sdiff` for a side-by-side diff. Note `diff -r` works for entire directories. Use `diff -r tree1 tree2 | diffstat` for a summary of changes. Use `vimdiff` to compare and edit files. +- Стандартные инструменты для патчинга исходников это `diff` и `patch`. Также посмотрите на `diffstat` для просмотра статистики изменений (диффа) и `sdiff` для сравнения бок-о-бок (side-by-side). `diff -r` работает рекурсивно по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений. Используйте `vimdiff` для сравнения и редактирования файлов. - Для бинарных файлов используйте `hd`, `hexdump` или `xxd` для простых hex-дампов, и `bvi` для двоичного изменения бинарных файлов. @@ -247,7 +245,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для того, чтобы разбить файл на куски, используйте `split` (разбивает на куски по размеру), или `csplit` (по шаблону или регулярному выражению). -- Для операций с датой и временными выраженияями используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). +- Для использования значений даты-времени используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. From b3a01d7f0ea5bc0cd2618a0b855b967f6113f1b2 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 25 Jan 2016 15:55:17 -0800 Subject: [PATCH 200/337] Traditional Chinese maintainer. Update authors. --- AUTHORS.md | 11 +++++++---- admin/authors-info.yml | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 386f711..4b8fc70 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,6 +4,7 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +* [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) * [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) @@ -30,7 +31,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) * [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) -* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) * [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ @@ -44,7 +45,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [125+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [128+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -52,6 +53,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) * [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ * [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) +* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translator and maintainer (zh-Hant)_ * [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13) * [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) @@ -68,7 +70,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [34+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [35+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[26+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) * [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) @@ -79,6 +81,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Saksham Sharma (sakshamsharma)](https://github.com/sakshamsharma) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sakshamsharma)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asakshamsharma) * [Kit Chan (shukitchan)](https://github.com/shukitchan) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=shukitchan)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ashukitchan) * [Simarpreet Singh (simar7)](https://github.com/simar7) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) +* [Scott Griffin (sirsgriffin)](https://github.com/sirsgriffin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sirsgriffin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asirsgriffin) * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ @@ -87,7 +90,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) * [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) -* [René Ribaud (uggla)](https://github.com/uggla) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) +* [René Ribaud (uggla)](https://github.com/uggla) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [Sungjin Kang (ujuc)](https://github.com/ujuc) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc) — _translator (ko)_ * [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translator and maintainer (ko)_ * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 889b2e3..4bbdf76 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -45,3 +45,4 @@ roles: lsrom: translator and maintainer (cs) ericguirbal: translator and maintainer (fr) rverchere: translator (fr) + kevingo: translator and maintainer (zh-Hant) From 8faadd48977746e33ffd2e4a047141e4cef0e4c8 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:08:46 +0200 Subject: [PATCH 201/337] Add short Microsoft Windows section --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef25da8..e994e74 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) - [OS X only](#os-x-only) +- [Windows](#windows) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -35,7 +36,7 @@ but it has since moved to GitHub, where people more talented than the original a Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" section. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows](#windows)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -507,6 +508,23 @@ These are items relevant *only* on OS X. - To get OS X release information, use `sw_vers`. +## Windows + +- Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. + +- Install additional Unix programs with the Cygwin's package manager. + +- Use `mintty` as your command-line window. + +- Access the Windows clipboard through `/dev/clipboard`. + +- Run `cygstart` to open an arbitrary file through its registered application. + +- Access the Windows registry with `regtool`. + +- Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. + +- You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. ## More resources From a53ef6c6bdeafd3f13f72830f4de5dab67de41d5 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:19:59 +0200 Subject: [PATCH 202/337] Add .bashrc recommendation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..ee0de79 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,8 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. +- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. + - Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. - In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use `set -e` to abort on errors (nonzero exit code). Use `set -u` to detect unset variable usages. Consider `set -o pipefail` too, to on errors within pipes, too (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message: From ba05a4866c674a234438e9f7989912108a295764 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:24:11 +0200 Subject: [PATCH 203/337] Recommend using Git to manage .bashrc --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee0de79..cf21ef7 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. +- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. - Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. From 459467c5ebf132805b698ed856ed50c10eb6abf2 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:28:16 +0200 Subject: [PATCH 204/337] Add home directory basics --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef25da8..2f24165 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,9 @@ Notes: - To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument) and `!!` last command, though these are often easily replaced with **ctrl-r** and **alt-.**. -- To go back to the previous working directory: `cd -` +- Go to your home directory with `cd`. Access files relative to your home directory with the `~` prefix (e.g. `~/.bashrc`). In `sh` scripts refer to the home directory as `$HOME`. + +- To go back to the previous working directory: `cd -`. - If you are halfway through typing a command but change your mind, hit **alt-#** to add a `#` at the beginning and enter it as a comment (or use **ctrl-a**, **#**, **enter**). You can then return to it later via command history. From 3fd605653a4c4421b29a4aa2b8f7d620d6ab3be5 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 11:36:08 +0200 Subject: [PATCH 205/337] Add version control management --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..ed10532 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ Notes: - Basic network management: `ip` or `ifconfig`, `dig`. +- Learn and use a version control management system, such as `git`. + - Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-v`, `-A`, `-B`, and `-C` options are worth knowing. - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). From c86523be03356d30eb5bd27dbcf6e526b2fff104 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 17:54:34 +0200 Subject: [PATCH 206/337] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf21ef7..29941c4 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings your commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. +- Save aliases and settings you commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. - Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. From dbc8f924d24cfd40c1cda04a72c987ad03d4b1d9 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 20:44:56 +0200 Subject: [PATCH 207/337] Add .bash_profile description --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 29941c4..c8ca568 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,11 @@ Notes: - Use `alias` to create shortcuts for commonly used commands. For example, `alias ll='ls -latr'` creates a new alias `ll`. -- Save aliases and settings you commonly use in your home directory file named `.bashrc`. This will make them available in all your shell sessions. Synchronize this file among various computers with Git. +- Save aliases, shell settings, and functions you commonly use in `~/.bashrc`, and [arrange for login shells to source it](http://superuser.com/a/183980/7106). This will make your setup available in all your shell sessions. + +- Put the settings of environment variables as well as commands that should be executed when you login in `~/.bash_profile`. Separate configuration will be needed for shells you launch from graphical environment logins and `cron` jobs. + +- Synchronize your configuration files (e.g `.bashrc` and `.bash_profile`) among various computers with Git. - Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. From 2c5df2316990966064edf3e79514b9f2cb83dc25 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Tue, 26 Jan 2016 20:57:29 +0200 Subject: [PATCH 208/337] Add command-specific environment settings --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ef25da8..f530536 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,8 @@ Notes: - Know that locale affects a lot of command line tools in subtle ways, including sorting order (collation) and performance. Most Linux installations will set `LANG` or other locale variables to a local setting like US English. But be aware sorting will change if you change locale. And know i18n routines can make sort or other commands run *many times* slower. In some situations (such as the set operations or uniqueness operations below) you can safely ignore slow i18n routines entirely and use traditional byte-based sort order, using `export LC_ALL=C`. +- You can set a specific command's environment by prefixing its invocation with the environment variable settings, as in `TZ=Pacific/Fiji date`. + - Know basic `awk` and `sed` for simple data munging. For example, summing all numbers in the third column of a text file: `awk '{ x += $3 } END { print x }'`. This is probably 3X faster and 3X shorter than equivalent Python. - To replace all occurrences of a string in place, in one or more files: From 6f752fa251b5df1868cfd8343ea1a0630bed56bd Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 00:25:56 +0200 Subject: [PATCH 209/337] Add "only" to Windows section title --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e994e74..a1ffb25 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) - [OS X only](#os-x-only) -- [Windows](#windows) +- [Windows only](#windows-only) - [More resources](#more-resources) - [Disclaimer](#disclaimer) @@ -36,7 +36,7 @@ but it has since moved to GitHub, where people more talented than the original a Scope: - This guide is both for beginners and the experienced. The goals are *breadth* (everything important), *specificity* (give concrete examples of the most common case), and *brevity* (avoid things that aren't essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives. -- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows](#windows)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). +- This is written for Linux, with the exception of the "[OS X only](#os-x-only)" and "[Windows only](#windows-only)" sections. Many of the other items apply or can be installed on other Unices or OS X (or even Cygwin). - The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting. - It includes both "standard" Unix commands as well as ones that require special package installs -- so long as they are important enough to merit inclusion. @@ -508,7 +508,7 @@ These are items relevant *only* on OS X. - To get OS X release information, use `sw_vers`. -## Windows +## Windows only - Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. From 82d8626287eae6e89cfec111193ecdf52baa566d Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 08:47:33 +0200 Subject: [PATCH 210/337] Summarize Cygwin and Windows path mapping Addresses: #issuecomment-175369010 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1ffb25..c406e8f 100644 --- a/README.md +++ b/README.md @@ -522,7 +522,7 @@ These are items relevant *only* on OS X. - Access the Windows registry with `regtool`. -- Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. +- Note that a `C:\` Windows drive path becomes `/cygdrive/c` under Cygwin, and that Cygwin's `/` appears under `C:\cygwin` on Windows. Convert between Cygwin and Windows-style file paths with `cygpath`. This is most useful in scripts that invoke Windows programs. - You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. From 448887b781cdf5ae6ddb9108e07e4ad37ee93ce2 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Wed, 27 Jan 2016 08:56:05 +0200 Subject: [PATCH 211/337] Add Cygwin link Addresses: #issuecomment-175369010 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c406e8f..77fcd62 100644 --- a/README.md +++ b/README.md @@ -510,7 +510,7 @@ These are items relevant *only* on OS X. ## Windows only -- Access the power of the Unix shell under Microsoft Windows by installing Cygwin. Most of the things described in this document will work out of the box. +- Access the power of the Unix shell under Microsoft Windows by installing [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. - Install additional Unix programs with the Cygwin's package manager. From b2f8c20a717718a99503818623ae1d5990587687 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 27 Jan 2016 09:39:09 +0100 Subject: [PATCH 212/337] fr: Update the translation --- README-fr.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README-fr.md b/README-fr.md index 7914430..4b5670e 100644 --- a/README-fr.md +++ b/README-fr.md @@ -78,6 +78,8 @@ Apprenez ce qu'est un inode (`ls -i` ou `df -i`). - Les bases de l'administration réseau : `ip` ou `ifconfig`, `dig`. +- Apprenez à vous servir d'un logiciel de gestion de versions tel que `git`, et utilisez-le. + - Apprenez les expressions régulières et les différents drapeaux de `grep` et `egrep`. Les options `-i`, `-o`, `-v`, `-A`, `-B` et `-C` sont bonnes à connaître. @@ -102,6 +104,10 @@ Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** dév - Pour voir les commandes récentes, `history`. Il y a aussi beaucoup d'abréviations telles que `!$` (dernier argument) et `!!` (dernière commande), bien que celles-ci soient souvent remplacées par **ctrl-r** et **alt-.**. +- Placez-vous dans votre répertoire personnel avec `cd`. +Accédez aux fichiers à partir de leurs chemins relatifs par rapport à votre répertoire personnel en préfixant ceux-ci avec `~` (p. ex. `~/.bashrc`). +Dans les scripts shell, désignez le répertoire personnel par `$HOME`. + - Pour revenir au répertoire de travail précédent : `cd -`. - Si vous êtes au milieu de la saisie d'une commande mais que vous changez d'avis, tapez **alt-#** pour ajouter `#` au début de la ligne et l'entrer comme un commentaire (ou utilisez **ctrl-a**, **#**, **enter**). @@ -137,6 +143,14 @@ Pour la liste complète, consultez `man 7 signal`. - Utilisez `alias` pour créer des raccourcis vers les commandes fréquemment utilisées. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. +- Conservez les aliases, les paramètres du shell et les fonctions fréquemment utilisées dans le fichier `~/.bashrc`, et [arrangez-vous pour qu'il soit chargé par le shell de connexion](http://superuser.com/a/183980/7106). +Ainsi, votre configuration s'appliquera à toutes vos sessions shell. + +- Placez dans `~/.bash_profile` la configuration de vos variables d'environnement ainsi que les commandes à exécuter lorsque vous vous connectez. +Une configuration séparée est nécessaire lorsque vous vous connectez depuis un gestionnaire de connexion graphique et pour les tâches planifiées par `cron`. + +- Synchronisez vos fichiers de configuration (p. ex. `.bashrc` et `.bash_profile`) entre plusieurs ordinateurs avec Git. + - Comprennez qu'il convient d'être prudent lorsque des variables et des noms de fichiers contiennent des espaces. Mettez vos variables entre guillemets, par exemple `"$FOO"`. Préférez les options `-0` ou `-print0` qui permettent de délimiter les noms des fichiers avec le caractère nul, par exemple `locate -0 pattern | xargs -0 ls -al` ou `find / -print0 -type d | xargs -0 ls -al`. @@ -258,6 +272,8 @@ Mais ayez à l'esprit que le tri sera modifié si vous changez la locale. Et sachez que les routines i18n peuvent rendre les opérations de tri et d'autres commandes *beaucoup* plus lentes. Dans certains cas (tels que les opérations concernant les ensembles et l'unicité abordées ci-dessous) vous pouvez, sans risque, ignorer complètement les lentes routines i18n et utiliser l'ordre de tri classique fondé sur les valeurs des octets à l'aide de `export LC_ALL=C`. +- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fidji date`. + - Apprenez `awk` et `sed` pour de l'analyse de données élémentaire. Par exemple, pour effectuer la somme de tous les nombres de la troisième colonne d'un fichier texte : `awk '{ x += $3 } END { print x}'`. C'est probablement trois fois plus rapide et trois fois plus petit que son équivalent en Python. From 43584dacf153a63f221578a153cb2e4994f8cfca Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 18:28:40 +0200 Subject: [PATCH 213/337] el: Translate the section "Meta" --- README-el.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 README-el.md diff --git a/README-el.md b/README-el.md new file mode 100644 index 0000000..4a6e3ea --- /dev/null +++ b/README-el.md @@ -0,0 +1,16 @@ +## Meta + +Αντικείμενο: + +- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ίσχυουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. +- Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. + +Σημειώσεις: + +- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέριες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. + + + From 3fc9ff9b65a520e5428e4c580055c3e523f1e3ed Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 18:34:04 +0200 Subject: [PATCH 214/337] el: Fix typos in section "Meta" --- README-el.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index 4a6e3ea..2486f66 100644 --- a/README-el.md +++ b/README-el.md @@ -3,13 +3,13 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ίσχυουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέριες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. From 52f08cc7ad10e8dd1ab8cdc0cc94ddd09187ffcd Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 19:25:15 +0200 Subject: [PATCH 215/337] el: Translate the section "One-liners" --- README-el.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/README-el.md b/README-el.md index 2486f66..4e9f277 100644 --- a/README-el.md +++ b/README-el.md @@ -12,5 +12,48 @@ - Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. +## Εντολές σε μία γραμμή + +Μερικά παραδείγματα σωλήνωσης εντολών: + +- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Έστωσαν `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H Sort δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρό root διαμέρισμα. Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). +```sh + cat a b | sort | uniq > c # c is a union b + cat a b | sort | uniq -d > c # c is a intersect b + cat a b b | sort | uniq -u > c # c is set difference a - b +``` + +- Χρησιμοποιήστε `grep . *` για να εξετάσετε γρήγορα το περιεχόμενο όλων των αρχείων ενός καταλόγου (έτσι κάθε γραμμή αρχείου εμφανίζεται σε ζεύγος με το όνομα του αρχείου), ή `head -100 *` (έτσι κάθε αρχείο έχει μια κεφαλίδα). Αυτό μπορεί να είναι χρήσιμο για καταλόγους γεμάτους με αρχεία ρυθμίσεων όπως αυτά στους καταλόγους `/sys`, `/proc`, `/etc`. + + +- Η άθροιση όλων των αριθμών στην τρίτη στήλη ενός αρχείου κειμένου (αυτό είναι μάλλον 3X γρηγορότερο και απαιτεί 3X λιγότερο κώδικα από την αντίστοιχη υλοποίηση σε Python): +```sh + awk '{ x += $3 } END { print x }' myfile +``` + +- Για να δείτε μεγέθη/ημερομηνίες σε ένα δέντρο αρχείων, η παρακάτω είναι σα μια αναδρομική `ls -l`, αλλά είναι πιο ευανάγνωστη από `ls -lR`: +```sh + find . -type f -ls +``` + +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως log ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Για να παρακολουθείτε συνεχώς αλλαγές, χρησιμοποιήστε `watch`, π.χ. ελέγξτε αλλαγές σε αρχεία ενός καταλόγου με `watch -d -n 2 'ls -rtlh | tail'` ή σε ρυθμίσεις δικτύου ενώ επιδιορθώνετε τις ρυθμίσεις wifi με `watch -d -n 2 ifconfig`. + +- Εκτελέστε αυτή τη μέθοδο για να πάρετε μια τυχαία συμβουλή από αυτό το έγγραφο (αναλύει Markdown και εξάγει ένα στοιχείο): +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + + From abc706d62056b9cc2bb1d9e2b716b3c51d96fc3d Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 20:24:44 +0200 Subject: [PATCH 216/337] el: Translate the section "Basics" --- README-el.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README-el.md b/README-el.md index 4e9f277..393fb5f 100644 --- a/README-el.md +++ b/README-el.md @@ -12,6 +12,33 @@ - Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. +## Τα βασικά + +- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). + +- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE, ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). + +- Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. + +- Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. + +- Μάθετε για την επέκταση αρχείων glob με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) + +- Εξοικειωθείτε με τη διαχείριση εργασιών στον Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` κλπ. + +- Να γνωρίζετε την εντολή `ssh` και τα βασικά της αυθεντικοποίησης χωρίς κωδικό με χρήση των `ssh-agent`, `ssh-add` κλπ. + +- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη της `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). + +- Βασική διαχείριση δικτύου: `ip` ή `ifconfig`, `dig`. + +- Μάθετε και χρησιμοποιήστε ένα σύστημα διαχείρισης και ελέγχου εκδόσεων, όπως το `git`. + +- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. + +- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From 6716d8bef136228ff3e244df754314780f59a639 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Wed, 27 Jan 2016 20:06:09 +0100 Subject: [PATCH 217/337] fr: Correct a typo --- README-fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 4b5670e..2bc7f36 100644 --- a/README-fr.md +++ b/README-fr.md @@ -272,7 +272,7 @@ Mais ayez à l'esprit que le tri sera modifié si vous changez la locale. Et sachez que les routines i18n peuvent rendre les opérations de tri et d'autres commandes *beaucoup* plus lentes. Dans certains cas (tels que les opérations concernant les ensembles et l'unicité abordées ci-dessous) vous pouvez, sans risque, ignorer complètement les lentes routines i18n et utiliser l'ordre de tri classique fondé sur les valeurs des octets à l'aide de `export LC_ALL=C`. -- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fidji date`. +- Vous pouvez modifier l'environnement d'une commande particulière en préfixant son invocation par l'affectation de variables, comme dans `TZ=Pacific/Fiji date`. - Apprenez `awk` et `sed` pour de l'analyse de données élémentaire. Par exemple, pour effectuer la somme de tous les nombres de la troisième colonne d'un fichier texte : `awk '{ x += $3 } END { print x}'`. From b5fe76815944a56704dcd620db379d4428334366 Mon Sep 17 00:00:00 2001 From: _anna Date: Wed, 27 Jan 2016 23:20:39 +0200 Subject: [PATCH 218/337] el: Translate the section "Everyday use" --- README-el.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/README-el.md b/README-el.md index 393fb5f..3569d3a 100644 --- a/README-el.md +++ b/README-el.md @@ -38,6 +38,115 @@ - Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +## Καθημερινή χρήση + +- Στον Bash, χρησιμοποιήστε **Tab** για να ολοκληρώσετε ορίσματα ή να εμφανίσετε σε λίστα όλες τις διαθέσιμες εντολές, **ctrl-r** για να αναζητήσετε στο ιστορικό των εντολών (αφού πατήσετε, πληκτρολογήστε για να αναζητήσετε, πατήστε **ctrl-r** επαναλαμβανόμενα για να περιηγηθείτε σε περισσότερα αποτελέσματα αναζήτησης, πατήστε **Enter** για να εκτελέσετε την εντολή που βρήκατε ή πατήστε το δεξί βέλος για να μεταφέρετε το αποτέλεσμα στην τρέχουσα γραμμή ώστε να μπορείτε να το επεξεργαστείτε). + +- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα glob. + +- Εναλλακτικά, αν σας αρέσουν οι συντομεύσεις τύπου vi, χρησιμοποιήστε `set -o vi` (και `set -o emacs` για να επαναφέρετε). + +- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή όπως γίνεται με vi, **escape-v**. + +- Για να δείτε πρόσφατες εντολές, `history`. Επίσης, υπάρχουν πολλές συντομεύσεις όπως `!$` (τελευταίο όρισμα) και `!!` (τελευταία εντολή), αν και συχνά αντικαθίστανται από **ctrl-r** και **alt-.**. + +- Πηγαίνετε στον κατάλογο home με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον home κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον κατάλογο home ως `$HOME`. + +- Για να πάτε στον προηγούμενο κατάλογο όπου εργαζόσαστε: `cd -`. + +- Αν έχετε γράψει μέχρι τη μέση μία εντολή, αλλά αλλάξατε γνώμη, πατήστε **alt-#** για να προσθέσετε ένα`#` στην αρχή και να την προσθέσετε ως ένα σχόλιο (ή χρησιμοποιήστε **ctrl-a**, **#**, **enter**). Μπορείτε να επιστρέψετε σε αυτή αργότερα με το ιστορικό εντολών. + +- Χρησιμοποιήστε `xargs` (ή `parallel`). Έχει πολλές δυνατότητες. Σημειώστε ότι μπορείτε να ελέγξετε πόσα στοιχεία θα εκτελέσετε ανά γραμμή (`-L`) καθώς και παράλληλη εκτέλεση εντολών (`-P`). Αν δεν είστε σίγουρος ότι θα κάνει το σωστό, χρησιμοποιήστε πρώτα `xargs echo`. Επίσης, η επιλογή `-I{}` είναι χρήσιμη. Παραδείγματα: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + + +- `pstree -p` είναι μία χρήσιμη εμφάνιση του δέντρου διεργασιών. + +- Χρησιμοποιήστε `pgrep` και `pkill` για να αναζητήσετε ή να στείλετε σήμα σε διεργασίες με βάση το όνομά τους (η επιλογή `-f` είναι χρήσιμη). + +- Να γνωρίζετε τα διάφορα σήματα που μπορείτε να στείλετε σε διεργασίες. Για παράδειγμα, για να αναστείλετε μία διεργασία χρησιμοποιήστε `kill -STOP [pid]`. Για ολόκληρη τη λίστα, δείτε `man 7 signal` + +- Χρησιμοποιήστε `nohup` ή `disown` αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. + +- Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). + +- Δείτε επίσης `lsof` για ανοιχτά sockets και αρχεία. + +- Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. + +- Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. + +- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`, και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. + +- Βάλτε τις ρυθμίσεις των μεταβλητών περιβάλλοντος καθώς και τις εντολές που χρειάζεται να εκτελεστούν με την είσοδό σας στο `~/.bash_profile`. Ξεχωριστές ρυθμίσεις θα χρειαστούν για τους φλοιούς που εκτελούνται από είσοδο από γραφικό περιβάλλον και εργασίες `cron`. + +- Συγχρονίστε τα αρχεία με τις ρυθμίσεις σας (π.χ. `.bashrc` και `.bash_profile`) μεταξύ διαφορετικών υπολογιστών χρησιμοποιώντας Git. + +- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. + +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που εμφανίζονται σε σωληνώσεις εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Σε scripts για Bash, οι υποφλοιοί (γραμμένοι μέσα σε παρενθέσεις) είναι βολικοί τρόποι ομαδοποίησης εντολών. Ένα συνηθισμένο παράδειγμα είναι η προσωρινή μετακίνηση σε διαφορετικό τρέχοντα κατάλογο, π.χ. +```bash + # do something in current dir + (cd /some/other/dir && other-command) + # continue in original dir +``` + +- Στον Bash, σημειώστε ότι υπάρχουν πολλοί τρόποι επέκτασης μιας μεταβλητής. Έλεγχος του αν μία μεταβλητή υπάρχει: `${name:?error message}`. Για παράδειγμα, αν ένα Bash script παίρνει ένα μόνο όρισμα, απλά γράψτε `input_file=${1:?usage: $0 input_file}`. Αριθμητική επέκταση: `i=$(( (i + 1) % 5 ))`. Ακολουθίες: `{1..10}`. Περικοπή αλφαριθμητικών: `${var%suffix}` και `${var#prefix}`. Για παράδειγμα, αν `var=foo.pdf`, τότε η `echo ${var%.pdf}.txt` τυπώνει `foo.txt`. + +- Η επέκταση με αγκύλες χρησιμοποιώντας `{`...`}` μπορεί να μειώσει τις φορές που χρειάζεται να πληκτρολογήσετε ξανά παρόμοιο κείμενο και να αυτοματοποιήσει συνδυασμούς στοιχείων. Αυτό είναι χρήσιμο σε παραδείγματα όπως `mv foo.{txt,pdf} some-dir` (που μετακινεί και τα δύο αρχεία), `cp somefile{,.bak}` (που επεκτείνεται σε `cp somefile somefile.bak`) ή `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (που επεκτείνεται σε όλους τους πιθανούς συνδυασμούς και δημιουργεί ένα δέντρο καταλόγων). + +- Μπορείτε να χειριστείτε την έξοδο μίας εντολής ως αρχείο `<(some command)`. Για παράδειγμα, συγκρίνετε το τοπικό `/etc/hosts` με ένα απομακρυσμένο: +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` + +- Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει έναν χειριστή αρχείου ανοιχτό στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε ` Date: Wed, 27 Jan 2016 23:45:33 +0200 Subject: [PATCH 219/337] el: Translate the introduction --- README-el.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README-el.md b/README-el.md index 3569d3a..428e11d 100644 --- a/README-el.md +++ b/README-el.md @@ -1,3 +1,36 @@ +🌍 +*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + + +# Η Τέχνη της Γραμμής Εντολών + +[![Ελάτε στη συζήτηση στο https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Meta](#meta) +- [Τα βασικά](#basics) +- [Καθημερινή χρήση](#everyday-use) +- [Επεξεργασία αρχείων και δεδομένων](#processing-files-and-data) +- [Αποσφαλμάτωση συστήματος](#system-debugging) +- [Εντολές σε μία γραμμή](#one-liners) +- [Ασυνήθιστες αλλά χρήσιμες](#obscure-but-useful) +- [Μόνο για OS X](#os-x-only) +- [Περισσότερες πηγές](#more-resources) +- [Αποποίηση ευθύνης](#disclaimer) + + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους, αλλά βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. + + +Αυτή η εργασία είναι αποτέλεσμα [πολλών συγγραφέων και μεταφραστών](AUTHORS.md). +Μέρος της +[αρχικά](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[δημοσιεύτηκε](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +στο [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +αλλά έπειτα μετακινήθηκε στο GitHub, όπου άνθρωποι πιο ταλαντούχοι από τον αρχικό συγγραφέα έχουν κάνει πολυάριθμες βελτιώσεις. +[**Παρακαλώ συνεισφέρετε**](/CONTRIBUTING.md), αν δείτε ένα λάθος ή κάτι που μπορεί να βελτιωθεί! + ## Meta Αντικείμενο: From 290036acb4d22adb8cdc55ed38bd7bde2902d208 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 00:24:56 +0200 Subject: [PATCH 220/337] el: Translate the section "System debugging" --- README-el.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README-el.md b/README-el.md index 428e11d..4e14395 100644 --- a/README-el.md +++ b/README-el.md @@ -181,6 +181,47 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. +## Αποσφαλμάτωση συστήματος + +- Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). + +- Για να γνωρίζετε την τρέχουσα κατάσταση της CPU και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`, και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τη CPU ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. + +- Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. + +- Για μια γρήγορη επισκόπηση του τι συμβαίνει σε ένα σύστημα, η `dstat` είναι ιδιαίτερα χρήσιμη. Για καλύτερη επισκόπηση με λεπτομέρειες, χρησιμοποιήστε [`glances`](https://github.com/nicolargo/glances). + +- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η "cached" τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως "free" τιμή. + +- Η αποσφαλμάτωση συστημάτων Java είναι άλλη ιστορία, αλλά ένα απλό κόλπο για το JVM της Oracle και άλλων είναι να τρέξετε την εντολή `kill -3 ` και ένα πλήρες ίχνος στοίβας και περίληψη σωρού (συμπεριλαμβανομένων και λεπτομερειών που αφορούν τη συλλογή απορριμάτων σε γενιές, που μπορεί να είναι πολύ κατατοπιστικές) θα εμφανιστούν στο stderr/logs. Οι εντολές του JDK `jps`, `jstat`, `jstack`, `jmap` είναι χρήσιμες. [Τα εργαλεία SJK](https://github.com/aragozin/jvm-tools) είναι για πιο προχωρημένους. + +- Χρησιμοποιήστε την `mtr` ως μια βελτίωση της traceroute για να ανιχνεύετε ζητήματα του δικτύου. + +- Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. + +- Για να βρείτε ποιο socket ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. + +- Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. + +- Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. + +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). + +- Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. + +- Να γνωρίζετε πως να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. + +- Χρησιμοποιήστε την `/proc`. Είναι εκπληκτικά χρήσιμη ορισμένες φορές, όταν αποσφαλματώνετε live προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). + +- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για CPU, μνήμη, δίκτυο κλπ. + +- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), και [`sysdig`](https://github.com/draios/sysdig). + +- Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). + +- Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From f17da53491f429556c62e7c7bde76fe4119701ad Mon Sep 17 00:00:00 2001 From: 0xCD <0xCD@users.noreply.github.com> Date: Thu, 28 Jan 2016 11:58:27 +0800 Subject: [PATCH 221/337] sync with en version --- README-ru.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README-ru.md b/README-ru.md index a7607f8..7339f3a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -62,6 +62,8 @@ - Основы работы с сетью: `ip` или `ifconfig`, `dig`. +- Освойте работу с системой контроля версий, например, `git` + - Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать. - Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). @@ -80,6 +82,8 @@ - Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. +- Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В `sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME` + - Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -` - Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю. @@ -105,6 +109,13 @@ - Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы. - Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. + +- Сохраняйте псевдонимы (aliases), настройки оболочки и частоиспользуемые сокращения в `~/.bashrc`, и [организуйте их подгрузку](http://superuser.com/a/183980/7106). Это сделает ваши настройки доступными во всех сессиях оболочки. + +- Пропишите настройки переменных окружения и команды, которые должны быть выполнены при входе в систему в файл `~/.bash_profile`. Отдельная настройка будет необходима для оболочек, которые запускаются из GUI и `cron`. + +- Синхронизируйте ваши конфигурационные файлы (например, `.bashrc` и `.bash_profile`) между разными компьютерами с помощью Git. + - Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`. - В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение): @@ -201,6 +212,8 @@ - Не забывайте, что локализация вашей системы влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют `LANG` или любую другую переменную в подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Рутины `i18n` могут *значительно* снизить производительность сортировок. В некоторых случаях можно полностью этого избегать (за исключением редких случаев), сортируя традиционно побайтово, для этого `export LC_ALL=C`. +- Вы можете установить специфическое окружение для команды с помощью префикса перед ее вызовом, например `TZ=Pacific/Fiji date`. + - Знайте основы `awk` и `sed` для простых манипуляций с данными. Например, чтобы получить сумму всех чисел, которые находятся в третьей колонке текстового файла, можно использовать `awk '{ x += $3 } END { print x }'`. Скорее всего, это получится раза в 3 быстрее и раза в 3 проще, чем делать это в Питоне. - Чтобы заменить все вхождения подстроки в одном или нескольких файлах: From a69d9f625b15bd27b919d357fd5e5681f2a56dab Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 20:50:32 +0200 Subject: [PATCH 222/337] el: Translate the section "Obscure but useful" --- README-el.md | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 4e14395..3adb389 100644 --- a/README-el.md +++ b/README-el.md @@ -12,7 +12,7 @@ - [Επεξεργασία αρχείων και δεδομένων](#processing-files-and-data) - [Αποσφαλμάτωση συστήματος](#system-debugging) - [Εντολές σε μία γραμμή](#one-liners) -- [Ασυνήθιστες αλλά χρήσιμες](#obscure-but-useful) +- [Ασυνήθιστες αλλά χρήσιμες](#ασυνήθιστες-αλλά-χρήσιμες) - [Μόνο για OS X](#os-x-only) - [Περισσότερες πηγές](#more-resources) - [Αποποίηση ευθύνης](#disclaimer) @@ -264,6 +264,133 @@ } ``` +## Ασυνήθιστες αλλά χρήσιμες + +- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή υπολογίστε κανονικές εκφράσεις + +- `m4`: απλός macro επεξεργαστής + +- `yes`: τυπώστε ένα αλφαριθμητικό πολλές φορές + +- `cal`: όμορφο ημερολόγιο + +- `env`: εκτελέστε μία εντολή (χρήσιμο σε scripts) + +- `printenv`: τυπώστε μεταβλητές περιβάλλοντος (χρήσιμο στην αποσφαλμάτωση και σε scripts) + +- `look`: βρείτε αγγλικές λέξεις (ή γραμμές σε ένα αρχείο) αρχίζοντας με ένα αλφαριθμητικό + +- `cut`, `paste` και `join`: επεξεργασία δεδομένων + +- `fmt`: μορφοποίηση παραγράφων + +- `pr`: μορφοποίηση κειμένου σε σελίδες/στήλες + +- `fold`: τύλιγμα γραμμών κειμένου + +- `column`: μορφοποίηση πεδίων κειμένου σε στοιχισμένες, σταθερού πλάτους στήλες ή πίνακες + +- `tree`: εμφανίστε καταλόγους και υποκαταλόγους σε φωλιασμένο δένδρο, όπως η `ls` αλλά αναδρομική + +- `stat`: πληροφορίες αρχείου + +- `time`: εκτελέστε και χρονομετρήστε μία εντολή + +- `timeout`: εκτελέστε μια εντολή για συγκεκριμένο χρονικό διάστημα και σταμάτησε τη διεργασία, όταν ολοκληρωθεί το χρονικό διάστημα αυτό + +- `lockfile`: δημιουργήστε αρχεία σημαφόρους που μπορούν να διαγραφούν μόνο με `rm -f` + +- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs + +- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα, εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές + +- `tac`: τυπώστε αρχεία ανεστραμμένα + +- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο + +- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή + +- `pv`: παρακολουθήστε την πρόοδο των δεδομένων κατά μήκος μίας σωλήνωσης + +- `hd`, `hexdump`, `xxd`, `biew` και `bvi`: δείτε ή επεξεργαστείτε το περιεχόμενο δυαδικών αρχείων + +- `strings`: εξάγετε κείμενο από δυαδικά αρχεία + +- `tr`: μετάφραση χαρακτήρων ή επεξεργασία + +- `iconv` ή `uconv`: μετατροπή κωδικοποίησης κειμένου + +- `split` και `csplit`: χώρισμα αρχείων + +- `sponge`: διαβάστε όλη την είσοδο πριν γράψετε σε αυτή, χρήσιμο όταν πρόκειται να διαβάσετε από ένα αρχείο και μετά να γράψετε σε αυτό, π.χ., `grep -v something some-file | sponge some-file` + +- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) + +- `apg`: δημιουργεί τυχαίους κωδικούς + +- `7z`: υψηλής αναλογίας συμπίεση αρχείων + +- `ldd`: πληροφορίες για δυναμικές βιβλιοθήκες + +- `nm`: σύμβολα από αντικειμενικά αρχεία + +- `ab`: συγκριτική αξιολόγηση web servers + +- `strace`: αποσφαλμάτωση κλήσης συστήματος + +- `mtr`: καλύτερο εργαλείο traceroute για αποσφαλμάτωση δικτύου + +- `cssh`: visual concurrent shell + +- `rsync`: συγχρονισμός αρχείων και καταλόγων μέσω SSH ή σε τοπικό σύστημα αρχείων + +- `wireshark` και `tshark`: συλλογή πακέτων και αποσφαλμάτωση συστήματος + +- `ngrep`: grep για το επίπεδο δικτύου + +- `host` και `dig`: αναζητήσεις DNS + +- `lsof`: επεξεργαστείτε περιγραφέα αρχείου και πληροφορίες socket + +- `dstat`: χρήσιμα στατιστικά συστήματος + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat`: στατιστικά χρήσης δίσκου + +- `mpstat`: στατιστικά χρήσης CPU + +- `vmstat`: στατιστικά χρήσης μνήμης + +- `htop`: βελτιωμένη έκδοση της top + +- `last`: ιστορικό σύνδεσης (login) + +- `w`: ποιος συνδέθηκε + +- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας + +- `sar`: ιστορικά στατιστικά συστήματος + +- `iftop` ή `nethogs`: χρήση δικτύου ανά socket ή διεργασία + +- `ss`: στατιστικά socket + +- `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος + +- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται + +- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA + +- `lsb_release`: πληροφορίες διανομής Linux + +- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους + +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, graphics, devices κλπ. + +- `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα + +- `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" From 8e9de53dcd50f9be93c18cd53b06b36e04cdb7df Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:01:16 +0200 Subject: [PATCH 223/337] el: Translate the section "OS X only" --- README-el.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README-el.md b/README-el.md index 3adb389..98b0236 100644 --- a/README-el.md +++ b/README-el.md @@ -392,5 +392,21 @@ - `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +## Μόνο για OS X +Τα παρακάτω σημεία σχετίζονται *μόνο* με OS X. + +- Διαχείριση πακέτων λογισμικού `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. + +- Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. + +- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". + +- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή, χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. + +- Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. + +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε αν βρίσκεται τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. + +- Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. From 3749c0296a90fa045c8752fec33940f2e21e7b52 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:07:04 +0200 Subject: [PATCH 224/337] el: Translate the section "Processing files and data" --- README-el.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 98b0236..78e58e6 100644 --- a/README-el.md +++ b/README-el.md @@ -181,6 +181,86 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. + +## Επεξεργασία αρχείων και δεδομένων + +- Για να εντοπίσετε ένα αρχείο με βάση το όνομά του στον τρέχοντα κατάλογο, `find . -iname '*something*'` (ή με παρόμοιο τρόπο). Για να βρείτε ένα αρχείο με το όνομά του οπουδήποτε, χρησιμοποιήστε `locate something` (αλλά να έχετε στον νου σας ότι η `updatedb` μπορεί να μην έχει δημιουργήσει ευρετήριο για αρχεία που δημιουργήθηκαν πρόσφατα). + +- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`), χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). + +- Για να μετατρέψετε HTML σε κείμενο: `lynx -dump -stdin` + +- Για Markdown, HTML και άλλου είδους μετατροπές κειμένου, δοκιμάστε [`pandoc`](http://pandoc.org/). + +- Αν χρειάζεται να χειριστείτε XML, `xmlstarlet` είναι παλιά αλλά καλή. + +- Για JSON, χρησιμοποιήστε [`jq`](http://stedolan.github.io/jq/). + +- Για YAML, χρησιμοποιήστε [`shyaml`](https://github.com/0k/shyaml). + +- Για αρχεία Excel ή CSV , η [csvkit](https://github.com/onyxfish/csvkit) παρέχει τις `in2csv`, `csvcut`, `csvjoin`, `csvgrep` κλπ. + +- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. + +- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- δείτε τις εντολές σε μία γραμμή παρακάτω. Δείτε επίσης `comm`. + +- Να γνωρίζετε για τις `cut`, `paste`, και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut` αλλά ξεχνούν την `join`. + +- Να γνωρίζετε για την `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). + +- Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. + +- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότν η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες entirely και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. + +- Μπορείτε να ορίσετε ένα συγκεκριμένο περιβάλλον για μία εντολή προσθέτοντάς της ως πρόθεμα τις ρυθμίσεις της μεταβλητής περιβάλλοντος, όπως στην `TZ=Pacific/Fiji date`. + +- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορα και σύντομα από την αντίστοιχη υλοποίηση σε Python. + +- Για να αντικαταστήσετε επί τόπου όλες τις εμφανίσεις ενός αλφαριθμητικού σε ένα ή περισσότερα αρχεία: +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` + +- Για να μετονομάσετε πολλά και/ή να αναζητήσετε και να αντικαταστήσετε σε αρχεία, δοκιμάστε την [`repren`](https://github.com/jlevy/repren). (Σε ορισμένες περιπτώσεις η εντολή `rename` επιτρέπει επίσης πολλαπλές μετονομασίες, αλλά να είστε προσεχτικοί καθώς δε συμπεριφέρεται με τον ίδιο τρόπο σε όλες τις διανομές Linux.) +```sh + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak +``` + +- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` + +- Χρησιμοποιήστε την `shuf` για να ανακατέψετε ή να επιλέξετε τυχαίες γραμμές από ένα αρχείο. + +- Να γνωρίζετε τις επιλογές της `sort`. Για αριθμούς χρησιμοποιήστε τις `-n`, ή `-h` για χειρισμό αριθμών που είναι εύκολο να διαβαστούν από άνθρωπο (π.χ. από `du -h`). Να γνωρίζετε πως λειτουργούν τα πλήκτρα (`-t` και `-k`). Συγκεκριμένα, προσέξτε ότι χρειάζεται να γράψετε `-k1,1` για να ταξινομήσετε με βάση μόνο το πρώτο πεδίο· `-k1` σημαίνει ταξινόμηση με βάση όλη τη γραμμή. Η σταθερή ταξινόμηση (`sort -s`) μπορεί να είναι χρήσιμη. Για παράδειγμα, για να ταξινομήσετε πρώτα με βάση το πεδίο 2 και δευτερευόντως με βάση το πεδίο 1, μπορείτε να χρησιμοποιήσετε `sort -k1,1 | sort -s -k2,2`. + +- Αν πότε χρειαστεί να γράψετε έναν χαρακτήρα στηλοθέτη στη γραμμή εντολών στον Bash (π.χ. για να ταξινομήσετε με βάση το όρισμα της επιλογής -t), πιέστε **ctrl-v** **[Tab]** ή γράψτε `$'\t'` (το τελευταίο είναι καλύτερο, γιατί μπορείτε να το αντιγράψετε/επικολλήσετε). + +- Τα συνήθη εργαλεία διόρθωσης πηγαίου κώδικα είναι οι εντολές `diff` και `patch`. Επίσης, δείτε την `diffstat` για περίληψη στατιστικών στοιχείων μίας diff και `sdiff` για εμφάνιση diff πλάι-πλάι. Σημειώστε ότι η `diff -r` λειτουργεί για ολόκληρους καταλόγους. Χρησιμοποιήστε την `diff -r tree1 tree2 | diffstat` για μια περίληψη αλλαγών. Χρησιμοποιήστε την `vimdiff` για να συγκρίνετε και να επεξεργαστείτε αρχεία. + +- Για δυαδικά αρχεία, χρησιμοποιήστε τις `hd`, `hexdump` ή την `xxd` για απλά δεκαεξαδικά dumps και τις `bvi` ή `biew` για επεξεργασία σε δυαδική μορφή. + +- Επίσης, για δυαδικά αρχεία η `strings` (και η `grep` κλπ.) σας δίνει τη δυνατότητα να βρείτε bits κειμένου. + +- Για δυαδικές διαφορές (συμπίεση δέλτα), χρησιμοποιήστε `xdelta3`. + +- Για να μετατρέψετε κωδικοποίηση κειμένου, δοκιμάστε την `iconv`. Ή `uconv` για πιο προχωρημένη χρήση· υποστηρίζει πιο προχωρημένα Unicode πράγματα. Για παράδειγμα, μετατρέπει σε πεζούς χαρακτήρες και απαλείφει τους τόνους (by expanding and dropping them): +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` + +- Για να σπάσετε αρχεία σε κομμάτια, δείτε τη `split` (για να σπάσετε με βάση το μέγεθος) και τη `csplit` (για να σπάσετε με βάση πρότυπο). + +- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). + +- Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). @@ -221,7 +301,6 @@ - Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). - ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: From 382a4a4e877f92d29d6ed676c5d5dad711f24220 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:08:25 +0200 Subject: [PATCH 225/337] el: Translate the section "More resources" --- README-el.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-el.md b/README-el.md index 78e58e6..bb4588d 100644 --- a/README-el.md +++ b/README-el.md @@ -489,3 +489,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. +## Περισσότερες πηγές + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Μία προσεγμένη λίστα με εργαλεία και πηγές σχετικές με τον φλοιό . +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Ένας περισσότερο εις βάθος οδηγός της γραμμής εντολών του OS X. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. +- [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. + + From 3ba89b88c2fe1226e304bf487b4214ab27d5248f Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:11:01 +0200 Subject: [PATCH 226/337] el: Translate the section "Disclaimer" --- README-el.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-el.md b/README-el.md index bb4588d..d881428 100644 --- a/README-el.md +++ b/README-el.md @@ -497,4 +497,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. +## Αποποίηση ευθύνης + +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) From be7c0a24d62efcd5f0ca9e8673eecb9337786a58 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 21:12:26 +0200 Subject: [PATCH 227/337] el: Translate the section "License" --- README-el.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README-el.md b/README-el.md index d881428..1f3ff95 100644 --- a/README-el.md +++ b/README-el.md @@ -501,3 +501,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +## Άδεια χρήσης + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Η εργασία αυτή έχει αδειοδοτηθεί με [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). + + From b5d0cbda4d3489a5d0eb974281699ad06c3b1597 Mon Sep 17 00:00:00 2001 From: _anna Date: Thu, 28 Jan 2016 22:07:58 +0200 Subject: [PATCH 228/337] el: Polish the translation --- README-el.md | 62 ++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README-el.md b/README-el.md index 1f3ff95..823eedb 100644 --- a/README-el.md +++ b/README-el.md @@ -42,14 +42,14 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, το περιεχόμενο περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά -- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). +- Μάθετε τα βασικά του φλοιού Bash. Πράγματι, πληκτρολογήστε `man bash` και τουλάχιστον ρίξτε μια ματιά σε αυτό που εμφανίζεται· είναι αρκετά εύκολο να το ακολουθήσετε κι όχι και τόσο μεγάλο. Άλλοι φλοιοί μπορεί να είναι μια χαρά, αλλά ο φλοιός Bash έχει πολλές δυνατότητες και είναι πάντα διαθέσιμος (το να μάθετε *μόνο* zsh, fish κλπ., αν και δελεαστικό όσο δουλεύετε στο δικό σας laptop, σας περιορίζει σε πολλές περιπτώσεις, όπως στην περίπτωση servers που ήδη υπάρχουν). -- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE, ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). +- Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). - Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. @@ -69,7 +69,7 @@ - Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. -- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). ## Καθημερινή χρήση @@ -102,7 +102,7 @@ - Να γνωρίζετε τα διάφορα σήματα που μπορείτε να στείλετε σε διεργασίες. Για παράδειγμα, για να αναστείλετε μία διεργασία χρησιμοποιήστε `kill -STOP [pid]`. Για ολόκληρη τη λίστα, δείτε `man 7 signal` -- Χρησιμοποιήστε `nohup` ή `disown` αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. +- Χρησιμοποιήστε `nohup` ή `disown`, αν θέλετε μία διεργασία παρασκηνίου να συνεχίσει να εκτελείται για πάντα. - Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). @@ -120,7 +120,7 @@ - Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. -- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που εμφανίζονται σε σωληνώσεις εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -148,11 +148,11 @@ - Χρησιμοποιήστε `man ascii` για έναν καλό πίνακα ASCII, με δεξαεξαδικές και δεκαδικές τιμές. Για γενικές πληροφορίες που αφορούν την κωδικοποίηση, οι `man unicode`, `man utf-8` και `man latin1`είναι χρήσιμες. -- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία των σημάτων της οθόνης, ιδιαίτερα χρήσιμο σε απομακρυσμένες ssh sessions και για να διακόψετε ή να επαναφέρετε ένα session. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση sessions είναι η `dtach`. +- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία των σημάτων της οθόνης, ιδιαίτερα χρήσιμο σε απομακρυσμένα ssh sessions και για να διακόψετε ή να επαναφέρετε ένα session. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση sessions είναι η `dtach`. - Με ssh, το να γνωρίζετε πως να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. -- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που πέφτουν σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: +- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -165,9 +165,9 @@ - Μερικές άλλες επιλογές σχετικές με την ssh είναι ευαίσθητες όσον αφορά την ασφάλεια και θα πρέπει να ενεργοποιούνται με προσοχή, π.χ. ανά υποδίκτυο ή host ή σε έμπιστα δίκτυα: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- ´Εχετε υπόψη σας την εντολή [`mosh`](https://mosh.mit.edu/) ως μία εναλλακτική της ssh που χρησιμοποιεί UDP, αποφεύγοντας τις συνδέσεις που πέφτουν και διευκολύνοντας τη διαδικασία (απαιτεί ρύθμιση στον server). +- ´Εχετε υπόψη σας την εντολή [`mosh`](https://mosh.mit.edu/) ως μία εναλλακτική της ssh που χρησιμοποιεί UDP, αποφεύγοντας τις συνδέσεις που διακόπτονται και διευκολύνοντας τη διαδικασία (απαιτεί ρύθμιση στον server). -- Για να πάρετε τα δικαιώματα ενός αρχείου σε οκταδική μορφή, πράγμα που είναι χρήσιμο για την παραμετροποίηση του συστήματος αλλά δεν είναι διαθέσιμο με την `ls` και είναι εύκολο να γίνει άτσαλα, χρησιμοποιήστε κάτι όπως +- Για να πάρετε τα δικαιώματα ενός αρχείου σε οκταδική μορφή, πράγμα που είναι χρήσιμο για την παραμετροποίηση του συστήματος, αλλά δεν είναι διαθέσιμο με την `ls` και είναι εύκολο να γίνει άτσαλα, χρησιμοποιήστε κάτι όπως ```sh stat -c '%A %a %n' /etc/timezone ``` @@ -177,7 +177,7 @@ - Για διάδραση με αρχεία με βάση την έξοδο μιας άλλη εντολής (όπως της `git`), χρησιμοποιήστε `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). - Για έναν απλό web server και για όλα τα αρχεία στον τρέχοντα κατάλογο (και υποκαταλόγους) διαθέσιμα σε οποιονδήποτε στο δίκτυο, χρησιμοποιήστε: -`python -m SimpleHTTPServer 7777` (για τη θύρα 7777 και Python 2) και `python -m http.server 7777` (για θύρα 7777 και Python 3). +`python -m SimpleHTTPServer 7777` (για τη θύρα 7777 και Python 2) και `python -m http.server 7777` (για τη θύρα 7777 και Python 3). - Για την εκτέλεση μίας εντολής με δικαιώματα, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. @@ -186,13 +186,13 @@ - Για να εντοπίσετε ένα αρχείο με βάση το όνομά του στον τρέχοντα κατάλογο, `find . -iname '*something*'` (ή με παρόμοιο τρόπο). Για να βρείτε ένα αρχείο με το όνομά του οπουδήποτε, χρησιμοποιήστε `locate something` (αλλά να έχετε στον νου σας ότι η `updatedb` μπορεί να μην έχει δημιουργήσει ευρετήριο για αρχεία που δημιουργήθηκαν πρόσφατα). -- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`), χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). +- Για γενική αναζήτηση σε αρχεία πηγαίου κώδικα ή αρχεία δεδομένων (πιο προχωρημένη από την `grep -r`) χρησιμοποιήστε την [`ag`](https://github.com/ggreer/the_silver_searcher). - Για να μετατρέψετε HTML σε κείμενο: `lynx -dump -stdin` - Για Markdown, HTML και άλλου είδους μετατροπές κειμένου, δοκιμάστε [`pandoc`](http://pandoc.org/). -- Αν χρειάζεται να χειριστείτε XML, `xmlstarlet` είναι παλιά αλλά καλή. +- Αν χρειάζεται να χειριστείτε XML, η `xmlstarlet` είναι παλιά αλλά καλή. - Για JSON, χρησιμοποιήστε [`jq`](http://stedolan.github.io/jq/). @@ -200,21 +200,21 @@ - Για αρχεία Excel ή CSV , η [csvkit](https://github.com/onyxfish/csvkit) παρέχει τις `in2csv`, `csvcut`, `csvjoin`, `csvgrep` κλπ. -- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) is convenient and [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. +- Για Amazon S3, η [`s3cmd`](https://github.com/s3tools/s3cmd) είναι βολική και η [`s4cmd`](https://github.com/bloomreach/s4cmd) είναι γρηγορότερη. Η [`aws`](https://github.com/aws/aws-cli) της Amazon και η βελτιωμένη [`saws`](https://github.com/donnemartin/saws) είναι απαραίτητες για εργασίες που σχετίζονται με AWS. -- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- δείτε τις εντολές σε μία γραμμή παρακάτω. Δείτε επίσης `comm`. +- Να γνωρίζετε για τις `sort` και `uniq`, συμπεριλαμβανομένων των επιλογών `-u` και `-d` της uniq -- παρακάτω δείτε το κομμάτι που αφορά τις εντολές σε μία γραμμή. Δείτε επίσης την `comm`. -- Να γνωρίζετε για τις `cut`, `paste`, και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut` αλλά ξεχνούν την `join`. +- Να γνωρίζετε για τις `cut`, `paste` και `join` για να χειρίζεστε αρχεία κειμένου. Πολλοί χρησιμοποιούν την `cut`, αλλά ξεχνούν την `join`. -- Να γνωρίζετε για την `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). +- Να γνωρίζετε για τη `wc` για να μετράτε νέες γραμμές (`-l`), χαρακτήρες (`-m`), λέξεις (`-w`) και bytes (`-c`). - Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. -- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότν η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες entirely και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. +- Να γνωρίζετε ότι το locale επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες σχετικές με locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότι η ταξινόμηση μπορεί να αλλάξει, αν αλλάξετε locale. Και να γνωρίζετε ότι οι i18n ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές i18n ρουτίνες και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. - Μπορείτε να ορίσετε ένα συγκεκριμένο περιβάλλον για μία εντολή προσθέτοντάς της ως πρόθεμα τις ρυθμίσεις της μεταβλητής περιβάλλοντος, όπως στην `TZ=Pacific/Fiji date`. -- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορα και σύντομα από την αντίστοιχη υλοποίηση σε Python. +- Να γνωρίζετε τα βασικά για τις `awk` και `sed` για απλή επεξεργασία δεδομένων. Για παράδειγμα, την πρόσθεση όλων των αριθμών της τρίτης στήλης ενός αρχείου κειμένου: `awk '{ x += $3 } END { print x }'`. Αυτό είναι μάλλον 3X πιο γρήγορο και σύντομο από την αντίστοιχη υλοποίηση σε Python. - Για να αντικαταστήσετε επί τόπου όλες τις εμφανίσεις ενός αλφαριθμητικού σε ένα ή περισσότερα αρχεία: ```sh @@ -257,7 +257,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να σπάσετε αρχεία σε κομμάτια, δείτε τη `split` (για να σπάσετε με βάση το μέγεθος) και τη `csplit` (για να σπάσετε με βάση πρότυπο). -- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). +- Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). - Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. @@ -285,7 +285,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. -- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). - Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). -- Χρησιμοποιήστε την `dmesg` όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). +- Χρησιμοποιήστε την `dmesg`, όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). ## Εντολές σε μία γραμμή @@ -381,7 +381,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs -- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα, εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές +- `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές - `tac`: τυπώστε αρχεία ανεστραμμένα @@ -389,7 +389,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή -- `pv`: παρακολουθήστε την πρόοδο των δεδομένων κατά μήκος μίας σωλήνωσης +- `pv`: παρακολουθήστε την πορεία των δεδομένων κατά μήκος μίας σωλήνωσης - `hd`, `hexdump`, `xxd`, `biew` και `bvi`: δείτε ή επεξεργαστείτε το περιεχόμενο δυαδικών αρχείων @@ -403,7 +403,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sponge`: διαβάστε όλη την είσοδο πριν γράψετε σε αυτή, χρήσιμο όταν πρόκειται να διαβάσετε από ένα αρχείο και μετά να γράψετε σε αυτό, π.χ., `grep -v something some-file | sponge some-file` -- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) +- `units`: μετατροπές μονάδων και υπολογισμοί· κάνει ό,τι μετατροπές μπορείτε να σκεφτείτε (δείτε επίσης `/usr/share/units/definitions.units`) - `apg`: δημιουργεί τυχαίους κωδικούς @@ -433,7 +433,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `dstat`: χρήσιμα στατιστικά συστήματος -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): υψηλού επιπέδου επισκόπηση πολλαπλών υποσυστημάτων - `iostat`: στατιστικά χρήσης δίσκου @@ -465,7 +465,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους -- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, graphics, devices κλπ. +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα @@ -475,19 +475,19 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Τα παρακάτω σημεία σχετίζονται *μόνο* με OS X. -- Διαχείριση πακέτων λογισμικού `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. +- Διαχείριση πακέτων λογισμικού με `brew` (Homebrew) και/ή `port` (MacPorts). Μπορούν να χρησιμοποιηθούν για εγκατάσταση σε OS X πολλών από τις παραπάνω εντολές. - Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. - Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". -- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή, χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. +- Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε αν βρίσκεται τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. -- Για να πάρετε πληροφορίες για την έκδοση OS X, χρησιμοποιήστε `sw_vers`. +- Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. ## Περισσότερες πηγές From ac24cf9c9e16948a88130ff07c8b379f44ffd075 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 29 Jan 2016 03:40:41 +0100 Subject: [PATCH 229/337] sl: update translation --- README-sl.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README-sl.md b/README-sl.md index 9868289..e9a9fc2 100644 --- a/README-sl.md +++ b/README-sl.md @@ -65,6 +65,8 @@ Opombe: - Osnovno upravljanje omrežja: `ip` or `ifconfig`, `dig`. +- Naučite se in uporabljajte sistem za nadzor različic, kot je `git`. + - Poznajte tudi splošne izraze in različne zastavice za `grep`/`egrep`. Opcije `-i`, `-o`, `-v`, `-A`, `-B` in `-C` so vredne poznavanja. - Naučite se uporabljati `apt-get`, `yum`, `dnf` ali `pacman` (odvisno od distribucije), da najdete in namestite pakete. In zagotovite, da imate `pip`, da lahko nameščate orodja ukazne vrstice na osnovi Python-a (nekaj spodnjih je najenostavneje namestiti preko `pip`). @@ -83,6 +85,8 @@ Opombe: - Da vidite nedavne ukaze, `history`. Na voljo je tudi veliko okrajšav, kot je `!$` (zadnji argument) in `!!` zadnji ukaz, čeprav so te pogostokrat enostavno zamenjani s **ctrl-r** in **alt-.**. +- Pojdite v vaš domači direktorij s `cd`. Dostopajte do datotek relativno glede na vaš domači direktorij s predpono `~` (npr. `~/.bashrc`). V `sh` skriptah se sklicujte na domači direktorij kot `$HOME`. + - Da greste nazaj na prejšnji delovni dirketorij: `cd -` - Če ste na pol poti skozi vpisovanje ukaza, vendar si premislite, vtipkajte **alt-#**, da dodate `#` na začetek in ga vnesete kot komentar (ali uporabite **ctrl-a**, **#**, **enter**). Nato se lahko vrnete k njemu kasneje preko zgodovine ukazov. @@ -110,6 +114,12 @@ Opombe: - Uporabite `alias`, da ustvarite bližnjice za pogosto uporabljene ukaze. Na primer, `alias ll='ls -latr'` ustvari nov alias `ll`. +- Shranite aliase, nastavitve lupine in funkcije, ki jih pogosto uporabljate v `~/.bashrc` in [uredite prijave lupin za izvorno kodo](http://superuser.com/a/183980/7106). To bo naredilo vašo namestitev na voljo v vseh sejah vaše lupine. + +- Dajte nastavitve spremenljivk okolja kot tudi ukaze, ki bi morali biti izvršeni, ko se prijavite v `~/.bash_profile`. Ločena nastavitev bo potrebna za lupine, ki jih zaženete iz prijave grafičnega okolja in s periodičnimi opravili `cron`. + +- Sinhronizirajte vaše nastavitvene datoteke (npr. `.bashrc` in `.bash_profile`) med različnimi računalniki s pomočjo Git. + - Razumite, da je potrebna skrb, ko spremenljivke in imena datotek vsebujejo prazne znake. Obdajte vaše spremenljivke Bash s citati, npr. `"$FOO"`. Raje cenite opciji `-0` ali `-print0`, da omogočite razmejevanje imen datotek z ničelnimi znaki, npr. `locate -0 pattern | xargs -0 ls -al` ali `find / -print0 -type d | xargs -0 ls -al`. Za iteracijo v for zanki na imenih datotek, ki vsebujejo prazne znake, nastavite da vaš IFS za nove vrstice uporablja samo `IFS=$'\n'`. - V skriptah Bash uporabite `set -x` (ali varianto `set -v`, ki beleži dnevnik surovega izpisa, vključno z nerazširjenimi spremenljivkami in komentarji) za razhroščevanje izpisa. Uporabite striktni način razen, če imate dober razlog, da ga ne: Uporabite `set -e`, da preskočite napake (neničelna koda izhoda). Uporabite `set -u`, da zaznate uporabo nenastavljenih spremenljivk. Premislite tudi o `set -o pipefail`, da na napakah znotraj pip, (vendar preberite o tem več, če boste to uporabili, saj je ta tema nekoliko subtilna). Za bolj vključene skripte, uporabite tudi `trap` pri EXIT ali ERR. Uporabna navada je tako začeti skripto, kar bo naredilo, da lahko zazna ali prekliče na pogostih napakah in izpiše sporočilo: @@ -204,6 +214,8 @@ Opombe: - Vedite, da lokalizacija vpliva na veliko orodij ukazne vrstice na subtilne načine, vključno z vrstnim redom (kolokacijo) in uspešnostjo. Večina namestitev Linux-a bo nastavila `LANG` ali druge spremenljivke lokalizacije na lokalne nastavitve kot je US English. Vendar bodite pozorni, saj se bo vrstni red spremenil, če spremenite lokalizacijo. In vedite, da rutine i18n lahko naredijo sortiranje ali poganjanje drugih ukazov *nekajkrat* počasnejše. V nekaterih situacijah (kot je skupek operacij ali unikatnih operacij spodaj) lahko v celoti varno ignorirate počasne rutine i18n in uporabite tradicionalne vrstne rede na osnovi bajtov z uporabo `export LC_ALL=C`. +- Nastavite lahko določeno okolje ukaza s predpono njegovega sklicevanja na nastavitve spremenljivk okolja, kot pri `TZ=Pacific/Fiji date`. + - Spoznajte osnove `awk` in `sed` za enostavno manipuliranje podatkov. Na primer, povzetek vseh številk v tretjem stolpcu tekstovne datoteke: `awk '{ x += $3 } END { print x }'`. To je verjetno 3X hitrejše in 3X krajše kot ekvivalent v Python-u. - Da zamenjate vsa pojavljanja niza na mestu v eni ali večih datotekah: From 247ccfb06e9f8cb34554f522e60eae29587be522 Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Fri, 29 Jan 2016 14:00:59 +0200 Subject: [PATCH 230/337] Diverse small changes following agreed review --- README-el.md | 103 ++++++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/README-el.md b/README-el.md index 823eedb..26be839 100644 --- a/README-el.md +++ b/README-el.md @@ -20,7 +20,8 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους, αλλά βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. +Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους. +Όμως η ευχέρια αυτή βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. Αυτή η εργασία είναι αποτέλεσμα [πολλών συγγραφέων και μεταφραστών](AUTHORS.md). @@ -35,7 +36,7 @@ Αντικείμενο: -- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις), και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. +- Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. - Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. @@ -51,39 +52,39 @@ - Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). -- Να γνωρίζετε πως να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. το 1 είναι "απλές" εντολές, το 5 αρχεία/συμβάσεις και το 8 είναι για διαχείριση). Αναζητήστε man σελίδες με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. +- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. - Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. -- Μάθετε για την επέκταση αρχείων glob με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) +- Μάθετε για την επέκταση αρχείων μπαλαντέρ (glob) με `*` (και ίσως του `?` και `[`...`]`) και τη χρήση εισαγωγικών και τη διαφορά ανάμεσα στα διπλά `"` και τα μονά `'` εισαγωγικά. (Δείτε περισσότερα για την επέκταση μεταβλητών παρακάτω.) - Εξοικειωθείτε με τη διαχείριση εργασιών στον Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` κλπ. - Να γνωρίζετε την εντολή `ssh` και τα βασικά της αυθεντικοποίησης χωρίς κωδικό με χρήση των `ssh-agent`, `ssh-add` κλπ. -- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη της `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). +- Βασική διαχείριση αρχείων: `ls` και `ls -l` (συγκεκριμένα, μάθετε τι σημαίνει κάθε στήλη που εμφανίζει η `ls -l`), `less`, `head`, `tail` και `tail -f` (ή ακόμη καλύτερα, `less +F`), `ln` και `ln -s` (μάθετε τις διαφορές και τα πλεονεκτήματα των κανονικών συνδέσμων σε σύγκριση με τους συμβολικούς), `chown`, `chmod`, `du` (για μία γρήγορη περίληψη της χρήσης του δίσκου: `du -hs *`). Για διαχείριση του συστήματος αρχείων, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. Μάθετε τι είναι inode (`ls -i` ή `df -i`). - Βασική διαχείριση δικτύου: `ip` ή `ifconfig`, `dig`. - Μάθετε και χρησιμοποιήστε ένα σύστημα διαχείρισης και ελέγχου εκδόσεων, όπως το `git`. -- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`, και `-C` αξίζει να τις γνωρίζετε. +- Να γνωρίζετε καλά κανονικές εκφράσεις και τις διάφορες επιλογές (flags) για τις `grep`/`egrep`. Τις επιλογές `-i`, `-o`, `-v`, `-A`, `-B`και `-C` αξίζει να τις γνωρίζετε. -- Μάθετε να χρησιμοποιείτε τις `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). +- Μάθετε να χρησιμοποιείτε τις εντολές `apt-get`, `yum`, `dnf` ή `pacman` (ανάλογα με τη διανομή του λειτουργικού σας συστήματος) για να βρίσκετε και να εγκαθιστάτε πακέτα λογισμικού. Και βεβαιωθείτε ότι έχετε την `pip` για να εγκαθιστάτε εργαλεία της γραμμής εντολών που βασίζονται σε Python (μερικά από τα παρακάτω είναι πιο εύκολο να εγκατασταθούν με `pip`). ## Καθημερινή χρήση - Στον Bash, χρησιμοποιήστε **Tab** για να ολοκληρώσετε ορίσματα ή να εμφανίσετε σε λίστα όλες τις διαθέσιμες εντολές, **ctrl-r** για να αναζητήσετε στο ιστορικό των εντολών (αφού πατήσετε, πληκτρολογήστε για να αναζητήσετε, πατήστε **ctrl-r** επαναλαμβανόμενα για να περιηγηθείτε σε περισσότερα αποτελέσματα αναζήτησης, πατήστε **Enter** για να εκτελέσετε την εντολή που βρήκατε ή πατήστε το δεξί βέλος για να μεταφέρετε το αποτέλεσμα στην τρέχουσα γραμμή ώστε να μπορείτε να το επεξεργαστείτε). -- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα glob. +- Στον Bash, χρησιμοποιήστε **ctrl-w** για να διαγράψετε την τελευταία λέξη και **ctrl-u** για να τα διαγράψετε όλα μέχρι την αρχή της γραμμής. Χρησιμοποιήστε **alt-b** και **alt-f** για να μετακινηθείτε κατά μια λέξη, **ctrl-a** για να μετακινήσετε τον δείκτη στην αρχή της γραμμής, **ctrl-e** για να μετακινήσετε τον δείκτη στο τέλος της γραμμής, **ctrl-k** για να διαγράψετε ως το τέλος της γραμμής, **ctrl-l** για να καθαρίσετε την οθόνη. Δείτε τη `man readline` για όλες τις συντομεύσεις πληκτρολογίου στον Bash. Υπάρχουν πολλές. Για παράδειγμα, η **alt-.** επαναλαμβάνει κυκλικά τα προηγούμενα ορίσματα και η **alt-** αναπτύσσει ένα μπαλαντέρ (glob). - Εναλλακτικά, αν σας αρέσουν οι συντομεύσεις τύπου vi, χρησιμοποιήστε `set -o vi` (και `set -o emacs` για να επαναφέρετε). -- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή όπως γίνεται με vi, **escape-v**. +- Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή αν έχετε ορίσει συντομεύσεις τύπου vi, **escape-v**. - Για να δείτε πρόσφατες εντολές, `history`. Επίσης, υπάρχουν πολλές συντομεύσεις όπως `!$` (τελευταίο όρισμα) και `!!` (τελευταία εντολή), αν και συχνά αντικαθίστανται από **ctrl-r** και **alt-.**. -- Πηγαίνετε στον κατάλογο home με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον home κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον κατάλογο home ως `$HOME`. +- Πηγαίνετε στον προσωπικό σας κατάλογο (home) με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον προσωπικό κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον προσωπικό σας κατάλογο ως `$HOME`. - Για να πάτε στον προηγούμενο κατάλογο όπου εργαζόσαστε: `cd -`. @@ -106,21 +107,21 @@ - Ελέγξτε ποιες διεργασίες είναι σε αναμονή για κλήση listen με `netstat -lntp` ή `ss -plat` (για TCP· προσθέστε `-u` για UDP). -- Δείτε επίσης `lsof` για ανοιχτά sockets και αρχεία. +- Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. -- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`, και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. +- Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. - Βάλτε τις ρυθμίσεις των μεταβλητών περιβάλλοντος καθώς και τις εντολές που χρειάζεται να εκτελεστούν με την είσοδό σας στο `~/.bash_profile`. Ξεχωριστές ρυθμίσεις θα χρειαστούν για τους φλοιούς που εκτελούνται από είσοδο από γραφικό περιβάλλον και εργασίες `cron`. - Συγχρονίστε τα αρχεία με τις ρυθμίσεις σας (π.χ. `.bashrc` και `.bash_profile`) μεταξύ διαφορετικών υπολογιστών χρησιμοποιώντας Git. -- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόγχο επανάληψης for, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. +- Κατανοήστε ότι χρειάζεται προσοχή, όταν μεταβλητές και ονόματα αρχείων περιέχουν κενούς (whitespace) χαρακτήρες. Περικλείετε τις μεταβλητές του Bash σε εισαγωγικά, π.χ. `"$FOO"`. Προτιμήστε τις επιλογές `-0` ή `-print0` για να επιτρέψετε σε κενούς χαρακτήρες να διαχωρίζουν ονόματα αρχείων, π.χ. `locate -0 pattern | xargs -0 ls -al` ή `find / -print0 -type d | xargs -0 ls -al`. Για να περάσετε ένα προς ένα από όλα τα αρχεία που περιέχουν κενούς χαρακτήρες σε έναν βρόχο επανάληψης `for`, ορίστε τη μεταβλητή IFS να είναι ο χαρακτήρας νέας γραμμής χρησιμοποιώντας `IFS=$'\n'`. -- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, which logs raw input, including unexpanded variables and comments) για να αποσφαλματώσετε την έξοδο. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών, επίσης (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: +- Σε scripts για Bash, χρησιμοποιήστε `set -x` (ή την παραλλαγή `set -v`, που γράφει τα πρωτογενή στοιχεία, όπως σχόλια και μεταβλητές πριν αντικατασταθούν) για να τα αποσφαλματώσετε. Χρησιμοποιείτε αυστηρές λειτουργίες (strict modes) εκτός κι αν έχετε σημαντικό λόγο να μην το κάνετε: Χρησιμοποιήστε `set -e` για να εγκαταλείψετε την εκτέλεση σε περίπτωση σφάλματος (μη μηδενικός κωδικός εξόδου). Χρησιμοποιήστε `set -u` για να ανιχνεύσετε τη χρήση μεταβλητών χωρίς τιμή. Έχετε υπόψη σας και την εντολή `set -o pipefail`, για να εμφανίσετε τα σφάλματα που προκύπτουν στο ενδιάμεσο σωληνώσεων εντολών (αλλά διαβάστε περισσότερο για αυτή, αν τη χρησιμοποιήσετε καθώς αυτό το θέμα είναι ιδιαίτερα λεπτό). Για πιο πολύπλοκα scripts, χρησιμοποιήστε επίσης την εντολή `trap` για κωδικούς εξόδου EXIT ή ERR. Μια χρήσιμη συνήθεια είναι να ξεκινάτε ένα script έτσι, κάνοντάς το να ανιχνεύει και να τερματίζει σε συνήθη σφάλματα και να τυπώνει ένα μήνυμα: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -144,13 +145,13 @@ - Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει έναν χειριστή αρχείου ανοιχτό στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει μια σύνδεση αρχείου ανοιχτή στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `; ::Any-NFC; ' < input.txt > output.txt ``` @@ -259,13 +260,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). -- Χρησιμοποιήστε `zless`, `zmore`, `zcat`, και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. +- Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). -- Για να γνωρίζετε την τρέχουσα κατάσταση της CPU και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`, και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τη CPU ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. +- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. - Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. @@ -279,23 +280,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. -- Για να βρείτε ποιο socket ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. +- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. - Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. -- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή καταγραφής (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). +- Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή μέτρησης (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). - Να γνωρίζετε για την `ldd` ώστε να ελέγχετε διαμοιραζόμενες βιβλιοθήκες κλπ. -- Να γνωρίζετε πως να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. +- Να γνωρίζετε πώς να συνδέεστε σε μία διεργασία που εκτελείται με `gdb` και να παίρνετε τα ίχνη της στοίβας της. -- Χρησιμοποιήστε την `/proc`. Είναι εκπληκτικά χρήσιμη ορισμένες φορές, όταν αποσφαλματώνετε live προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). +- Χρησιμοποιήστε τον κατάλογο `/proc`. Είναι εκπληκτικά χρήσιμος ορισμένες φορές, όταν αποσφαλματώνετε ζωντανά προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). -- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για CPU, μνήμη, δίκτυο κλπ. +- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για επεξεργαστή, μνήμη, δίκτυο κλπ. -- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), και [`sysdig`](https://github.com/draios/sysdig). +- Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))και [`sysdig`](https://github.com/draios/sysdig). - Ελέγξτε ποιο είναι το λειτουργικό σύστημά σας με `uname` ή `uname -a` (γενικές πληροφορίες Unix/πυρήνα) ή `lsb_release -a` (πληροφορίες διανομής Linux). @@ -305,11 +306,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir Μερικά παραδείγματα σωλήνωσης εντολών: -- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Έστωσαν `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H Sort δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρό root διαμέρισμα. Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). +- Είναι εξαιρετικά βοηθητικό ορισμένες φορές το γεγονός ότι μπορείτε να εφαρμόσετε τις πράξεις της τομής, της ένωσης και της διαφοράς σε αρχεία κειμένου με τις εντολές `sort`/`uniq`. Ας πούμε ότι έχετε `a` και `b` αρχεία κείμενου που καμία γραμμή τους δεν επαναλαμβάνεται. Αυτό είναι γρήγορο και δουλεύει σε αρχεία οποιουδήποτε μεγέθους έως πολλά gigabytes. (H `sort` δεν περιορίζεται από τη μνήμη, αν και ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `-T`, αν ο `/tmp` βρίσκεται σε μικρή κατάτμηση (partition). Επίσης, δείτε την παρατήρηση παραπάνω για τη μεταβλητή `LC_ALL` και την επιλογή `-u` της εντολής `sort` (παραλείπεται παρακάτω ώστε να είναι πιο ξεκάθαρο το παράδειγμα). ```sh - cat a b | sort | uniq > c # c is a union b - cat a b | sort | uniq -d > c # c is a intersect b - cat a b b | sort | uniq -u > c # c is set difference a - b + cat a b | sort | uniq > c # το c είναι a ένωση b + cat a b | sort | uniq -d > c # c είναι a τομή b + cat a b b | sort | uniq -u > c # το c είναι a διαφορά b ``` - Χρησιμοποιήστε `grep . *` για να εξετάσετε γρήγορα το περιεχόμενο όλων των αρχείων ενός καταλόγου (έτσι κάθε γραμμή αρχείου εμφανίζεται σε ζεύγος με το όνομα του αρχείου), ή `head -100 *` (έτσι κάθε αρχείο έχει μια κεφαλίδα). Αυτό μπορεί να είναι χρήσιμο για καταλόγους γεμάτους με αρχεία ρυθμίσεων όπως αυτά στους καταλόγους `/sys`, `/proc`, `/etc`. @@ -325,7 +326,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir find . -type f -ls ``` -- Έστω ότι έχετε ένα αρχείο κειμένου, όπως log ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` @@ -345,9 +346,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Ασυνήθιστες αλλά χρήσιμες -- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή υπολογίστε κανονικές εκφράσεις +- `expr`: εκτελέστε αριθμητικές και λογικές πράξεις ή εφαρμόζετε κανονικές εκφράσεις -- `m4`: απλός macro επεξεργαστής +- `m4`: απλός μακροεπεξεργαστής - `yes`: τυπώστε ένα αλφαριθμητικό πολλές φορές @@ -379,7 +380,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lockfile`: δημιουργήστε αρχεία σημαφόρους που μπορούν να διαγραφούν μόνο με `rm -f` -- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με email logs +- `logrotate`: περιστρέψτε, συμπιέστε και στείλτε με ηλ-ταχ αρχεία καταγραφής (logs). - `watch`: εκτελέστε μία εντολή επαναλαμβανόμενα εμφανίζοντας αποτελέσματα ή/και επισημαίνοντας αλλαγές @@ -429,7 +430,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `host` και `dig`: αναζητήσεις DNS -- `lsof`: επεξεργαστείτε περιγραφέα αρχείου και πληροφορίες socket +- `lsof`: εμφανίστε περιγραφείς αρχείου και πληροφορίες δικτυακών συνδέσεων - `dstat`: χρήσιμα στατιστικά συστήματος @@ -437,7 +438,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `iostat`: στατιστικά χρήσης δίσκου -- `mpstat`: στατιστικά χρήσης CPU +- `mpstat`: στατιστικά χρήσης επεξεργαστή - `vmstat`: στατιστικά χρήσης μνήμης @@ -451,9 +452,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή `nethogs`: χρήση δικτύου ανά socket ή διεργασία +- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία -- `ss`: στατιστικά socket +- `ss`: στατιστικά ανά δικτυακή σύνδεση - `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος @@ -465,11 +466,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους -- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων CPU, BIOS, RAID, γραφικών, συσκευών κλπ. +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`, και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" ## Μόνο για OS X @@ -485,7 +486,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις εκδόσεις GNU μπορούν να εγκατασταθούν, επίσης (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. @@ -495,11 +496,11 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Ένας περισσότερο εις βάθος οδηγός της γραμμής εντολών του OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. -- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πως να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πώς να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. ## Αποποίηση ευθύνης -Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας έχει γραφτεί ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφετε ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) ## Άδεια χρήσης From 593b5ca5ead4d5e9fc9a7966ac9eed673ec6c0f8 Mon Sep 17 00:00:00 2001 From: _anna Date: Sat, 30 Jan 2016 13:07:37 +0200 Subject: [PATCH 231/337] el: Fix minor typo --- README-el.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index 26be839..2784804 100644 --- a/README-el.md +++ b/README-el.md @@ -500,7 +500,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Αποποίηση ευθύνης -Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφετε ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) +Με την εξαίρεση πολύ μικρών εργασιών, ο κώδικας πρέπει να γράφεται ώστε να μπορούν οι άλλοι να τον διαβάζουν. Η δύναμη συνεπάγεται ευθύνη. Το γεγονός ότι *μπορείτε* να κάνετε κάτι με Bash δε σημαίνει απαραίτητα ότι θα έπρεπε! ;) ## Άδεια χρήσης From 1380920e1b8e957352950fbd1361e57f598b6dd1 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 1 Feb 2016 03:30:07 +0200 Subject: [PATCH 232/337] sync Ukraine translate with English version --- README-uk.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index 782b4f2..1971332 100644 --- a/README-uk.md +++ b/README-uk.md @@ -23,7 +23,8 @@ Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують Вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в Linux. Деякі з них - прості та очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md). -Багато з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), почавши там, схоже, що варто розмістити і на Github, де знаходяться дуже талановиті люди і можуть допомогти. Якщо Ви замітили помилки (чи у будь-якому із перекладів), будь ласка залиште опис [issue](https://github.com/jlevy/the-art-of-command-line/issues) або зробіть Pull requests (звичайно перевіривши уже існуючі). +Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де знаходяться дуже талановиті люди які зробили багато удосконалень. +[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви замітили помилку або можете щось покращити! ## Опис @@ -52,6 +53,7 @@ - Знайте `ssh` та основи беспарольної аутентифікації через `ssh-agent`, `ssh-add`, і т.д. - Основи роботи з файлами: `ls` і `ls -l` (зокрема, дізнайтеся, що значить кожен стовпець в `ls -l`), `less`, `head`,` tail` і `tail -f` (або навіть краще - `less + F`), `ln` і `ln -s` (дізнайтеся різницю між символьними посиланнями і жорсткими посиланнями, і чому жорсткі посилання краще), `chown`, `chmod`, `du` (для отримання швидкої інформації по використанню диска: `du -hk *`). Для менеджменту файлової системи, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Основи роботи з мережею: `ip` або `ifconfig`, `dig`. +- Вивчіть і використовуйте систему управління версіями, наприклад таку як `git`. - Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. - Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). @@ -63,6 +65,7 @@ - Якщо Вам подобаються шорткати vim, виконайте `set -o vi` (`set -o emacs` що б повернути налаштування). - Для редагування довгих команд після налаштування вашого консольного редактора (наприклад `export EDITOR=vim`), **ctrl-x** **ctrl-e** відкриє поточну команду в редакторі для багаторядкового редагування команди. Або у vi стилі, **escape-v**. - Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються шорткати **ctrl-r** та **alt-.**. +- Перейти в домашню директорию можна за допомогою `cd`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` - Якщо Ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. - Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: @@ -78,6 +81,10 @@ - Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. - Команда `uptime` or `w` показує як довго працює система. - Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. +- Збережіть свої синоніми (aliases), налаштування і фунції які Ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх Ваших сесіях shell. +- Синхронізуйте Ваші конфігураційні файли (наприклад `.bashrc` та `.bash_profile`) між різними комп'ютерами за допомогою Git. +- Вставте настройки змінних середовища і команди, які повинні бути виконані при вході у систему в файл `~/.bash_profile`. Окремі налаштування будуть потрібні для оболонок, які запускаються із під графічного інтерфейсу та з під `cron` задач. +- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть Ваші Bash змінні в подвійні кавички: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть Ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. - У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. Корисною буде звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилках і вивести повідомлення: ```bash @@ -140,6 +147,7 @@ - Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`). - Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`. - Не забувайте, що Ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для Вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. +- Вb можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`. - Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. - Щоб замінити всі знаходження підрядка в одному або декількох файлах: ```sh From 296caf610a3f06fcf7d3fc9f34e9588fe67381e5 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 1 Feb 2016 03:40:39 +0200 Subject: [PATCH 233/337] fix links --- README-uk.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README-uk.md b/README-uk.md index 1971332..27e4ebd 100644 --- a/README-uk.md +++ b/README-uk.md @@ -13,7 +13,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [Тільки для OS X](#os-x-only) +- [Тільки для OS X](#Тільки-для-os-x) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) @@ -32,7 +32,7 @@ Основне: - Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). -- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#os-x-only)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#Тільки-для-os-x)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). - Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. @@ -42,7 +42,7 @@ - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. -##Основи +## Основи - Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на Вашому лептопі і ні в чому Вас не обмежують, наприклад Ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). - Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо Ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор). @@ -58,7 +58,7 @@ - Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). -##Щоденне-використання +## Щоденне використання - Використовуйте клавішу таб в Bash для автодоповнення аргументів до команд та **ctrl-r** для пошуку по історії командного рядка. - Використовуйте **ctrl-w** в Bash для того, щоб видалити останнє слово в команді; **ctrl-u** для того, щоб видалити команду повністю. Використовуйте **alt-b** і **alt-f** для того, щоб переміщатись між словами у команді, **ctrl-k** для того, щоб перейти в кінець рядка, **ctrl-l** для того, щоб очистити екран. Гляньте на `man readline` щоб дізнатися про всі шорткати Bash. Їх багато! Наприклад, **alt-.** переміщається між попередніми аргументам команди, а **alt-*** максимально розширює аргументи. @@ -131,7 +131,7 @@ - Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або gsl іншим користувачем. -##Обробка-файлів-та-інформації +## Обробка файлів та інформації - Для того, щоб знайти файл в поточній директорії, виконайте `find. -iname '*something*'`. Для того, щоб шукати файл по всій системі, використовуйте `locate something` (але не забувайте, що `updatedb` міг ще не проіндексувати нещодавно створені файли). - Для пошуку по вмісту або фалах (більш детально зробити пошук допоможе `grep -r`) використовуйте [`ag`](https://github.com/ggreer/the_silver_searcher). @@ -180,7 +180,7 @@ - Використовуйте `zless`, `zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. -##Дебаггінг +## Дебаггінг - Для веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). - Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`, `netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. @@ -202,7 +202,7 @@ - Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами). -##Одним-рядком +## Одним рядком Кілька прикладів склеювання команд: - Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше: @@ -241,7 +241,7 @@ ``` -##Складно-але-корисно +## Складно але корисно - `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів - `m4`: простий макро-процесор @@ -320,7 +320,7 @@ - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -##os-x-only +## Тільки для OS X Деякі речі, які підходять *тільки* для Мака. @@ -331,7 +331,7 @@ - Не забувайте, що MacOS створений на основі BSD Unix і багато команд (наприклад `ps`, `ls`, `tail`, `awk`, `sed`) мають невеликі відмінності від лінуксових. Це обумовлено впливом `UNIX System V` і `GNU Tools`. Різницю можна помітити, побачивши заголовок "BSD General Commands Manual." Інколи на MacOS можна поставити GNU-версії програм, наприклад `gawk` і `gsed`. Коли пишете кросплатформені Bash-скрипти, намагайтеся уникати використовувати команди, які можуть відрізнятися (наприклад, краще використовуйте Python або `perl`), або ретельно все перевіряйте. -##Інші-джерела +## Інші джерела - [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the Mac OS command line. @@ -340,7 +340,7 @@ - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): The sadly complex minutiae on how to handle filenames correctly in shell scripts. -##Декламація +## Декламація За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) From 8f94e44f8fbd5e7949c33db438a8e24ff817a30a Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 31 Jan 2016 18:06:48 -0800 Subject: [PATCH 234/337] Greek translation links. Follow-up to #366. --- README-cs.md | 2 +- README-el.md | 41 +++++++++++++++++++---------------------- README-es.md | 2 +- README-fr.md | 4 ++-- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 4 ++-- README-sl.md | 3 +-- README-uk.md | 2 +- README-zh-Hant.md | 3 +-- README-zh.md | 2 +- README.md | 2 +- 14 files changed, 34 insertions(+), 39 deletions(-) diff --git a/README-cs.md b/README-cs.md index c7a78a2..fd7460a 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-el.md b/README-el.md index 2784804..da277db 100644 --- a/README-el.md +++ b/README-el.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Η Τέχνη της Γραμμής Εντολών @@ -153,7 +152,7 @@ - Με ssh, το να γνωρίζετε πώς να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. -- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: +- Μπορεί να είναι χρήσιμο να κάνετε μερικές βελτιστοποιήσεις στις ssh ρυθμίσεις σας· για παράδειγμα, αυτό `~/.ssh/config` περιέχει ρυθμίσεις για να αποφεύγετε τις συνδέσεις που διακόπτονται σε ορισμένα περιβάλλοντα δικτύου, χρησιμοποιεί συμπίεση (που είναι χρήσιμη με scp σε συνδέσεις με περιορισμένο εύρος ζώνης) και πολύπλεξη καναλιών στον ίδιο server με τοπικό αρχείο έλέγχου: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -261,12 +260,12 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να χειριστείτε εκφράσεις ημερομηνίας και χρόνου, χρησιμοποιήστε τις `dateadd`, `datediff`, `strptime` κλπ. από [`dateutils`](http://www.fresse.org/dateutils/). - Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. - + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). -- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. +- Για να γνωρίζετε την τρέχουσα κατάσταση του επεξεργαστή και των δίσκων, τα κλασικά εργαλεία είναι η `top` (ή η καλύτερη `htop`), η `iostat`και η `iotop`. Χρησιμοποιήστε την `iostat -mxz 15` για βασικά στατιστικά που αφορούν τον επεξεργαστή ή για λεπτομερή στατιστικά των δίσκων ανά διαμέρισμα και για να έχετε μια εικόνα της απόδοσης. - Για λεπτομέρειες που αφορούν τη σύνδεση δικτύου, χρησιμοποιήστε τη `netstat` και την `ss`. @@ -326,7 +325,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir find . -type f -ls ``` -- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: +- Έστω ότι έχετε ένα αρχείο κειμένου, όπως το αρχείο καταγραφής (log)/υπ ενός web server και μία συγκεκριμένη τιμή που εμφανίζεται σε μερικές γραμμές, όπως μία παράμετρος `acct_id` που εμφανίζεται στο URL. Αν θέλετε μια καταμέτρηση του πόσα αιτήματα έγιναν για κάθε `acct_id`: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` @@ -386,9 +385,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `tac`: τυπώστε αρχεία ανεστραμμένα -- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο +- `shuf`: τυχαία επιλογή γραμμών από ένα αρχείο -- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή +- `comm`: συγκρίνετε ταξινομημένα αρχεία γραμμή προς γραμμή - `pv`: παρακολουθήστε την πορεία των δεδομένων κατά μήκος μίας σωλήνωσης @@ -396,7 +395,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strings`: εξάγετε κείμενο από δυαδικά αρχεία -- `tr`: μετάφραση χαρακτήρων ή επεξεργασία +- `tr`: μετάφραση χαρακτήρων ή επεξεργασία - `iconv` ή `uconv`: μετατροπή κωδικοποίησης κειμένου @@ -412,7 +411,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ldd`: πληροφορίες για δυναμικές βιβλιοθήκες -- `nm`: σύμβολα από αντικειμενικά αρχεία +- `nm`: σύμβολα από αντικειμενικά αρχεία - `ab`: συγκριτική αξιολόγηση web servers @@ -428,7 +427,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ngrep`: grep για το επίπεδο δικτύου -- `host` και `dig`: αναζητήσεις DNS +- `host` και `dig`: αναζητήσεις DNS - `lsof`: εμφανίστε περιγραφείς αρχείου και πληροφορίες δικτυακών συνδέσεων @@ -438,39 +437,39 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `iostat`: στατιστικά χρήσης δίσκου -- `mpstat`: στατιστικά χρήσης επεξεργαστή +- `mpstat`: στατιστικά χρήσης επεξεργαστή - `vmstat`: στατιστικά χρήσης μνήμης - `htop`: βελτιωμένη έκδοση της top -- `last`: ιστορικό σύνδεσης (login) +- `last`: ιστορικό σύνδεσης (login) - `w`: ποιος συνδέθηκε -- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας +- `id`: πληροφορίες ταυτότητας χρήστη/ομάδας - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία +- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία -- `ss`: στατιστικά ανά δικτυακή σύνδεση +- `ss`: στατιστικά ανά δικτυακή σύνδεση - `dmesg`: μηνύματα για σφάλματα κατά την εκκίνηση ή σφάλματα συστήματος -- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται +- `sysctl`: δείτε και ρυθμίστε τις παραμέτρους του πυρήνα Linux, ενώ εκτελείται -- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA +- `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA - `lsb_release`: πληροφορίες διανομής Linux -- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους +- `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" ## Μόνο για OS X @@ -507,5 +506,3 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) Η εργασία αυτή έχει αδειοδοτηθεί με [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). - - diff --git a/README-es.md b/README-es.md index ebb390b..466f891 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-fr.md b/README-fr.md index 7914430..e6eaff0 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # L'art de la ligne de commande @@ -138,7 +138,7 @@ Pour la liste complète, consultez `man 7 signal`. Par exemple, `alias ll='ls -latr'` crée un nouvel alias `ll`. - Comprennez qu'il convient d'être prudent lorsque des variables et des noms de fichiers contiennent des espaces. -Mettez vos variables entre guillemets, par exemple `"$FOO"`. +Mettez vos variables entre guillemets, par exemple `"$FOO"`. Préférez les options `-0` ou `-print0` qui permettent de délimiter les noms des fichiers avec le caractère nul, par exemple `locate -0 pattern | xargs -0 ls -al` ou `find / -print0 -type d | xargs -0 ls -al`. Pour itérer sur des noms de fichiers contenant des espaces dans une boucle for, positionnez la variable IFS avec le caractère de retour à la ligne à l'aide de `IFS=$'\n'`. diff --git a/README-it.md b/README-it.md index 074ae95..9662262 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 181fdc2..f3cb4d6 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index c282a64..c9fa8da 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index e6c9245..d436a0a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index f1373f2..5b26524 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки @@ -79,7 +79,7 @@ - Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. - + - Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. - Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В `sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME` diff --git a/README-sl.md b/README-sl.md index e9a9fc2..82079b6 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 2240a57..4d4166e 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d28abab..d6f6f50 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -1,6 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* - +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # 命令列的藝術 diff --git a/README-zh.md b/README-zh.md index 2c6b768..d1ce094 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 diff --git a/README.md b/README.md index 1491ff5..3283210 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From 19b032ba4a409fafbf9a267e14919877e77f87b5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 31 Jan 2016 18:11:28 -0800 Subject: [PATCH 235/337] Update author roles and stats. --- AUTHORS.md | 15 +++++++++------ admin/authors-info.yml | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4b8fc70..39b34d7 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -4,18 +4,20 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +* [0xCD](https://github.com/0xCD) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=0xCD)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3A0xCD) * [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) * [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) * [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) +* [anna-d (anna-d)](https://github.com/anna-d) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translator and maintainer (el)_ * [Chong Guo (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ * [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) * [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) -* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) +* [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) * [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) * [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) @@ -30,8 +32,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) * [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ +* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [8+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) -* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) * [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ @@ -45,7 +48,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [128+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[23+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [130+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[24+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -70,7 +73,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [35+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[26+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) * [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) @@ -85,7 +88,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [31+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) @@ -96,7 +99,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) * [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ * [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) * [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang) — _translator (zh)_ * [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) * [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 4bbdf76..dafe76e 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -46,3 +46,4 @@ roles: ericguirbal: translator and maintainer (fr) rverchere: translator (fr) kevingo: translator and maintainer (zh-Hant) + anna-d: translator and maintainer (el) From 05bb84eec032d20da17d572c961a2655b1dcb6c8 Mon Sep 17 00:00:00 2001 From: mudongliang Date: Thu, 4 Feb 2016 12:33:12 +0800 Subject: [PATCH 236/337] =?UTF-8?q?modify=20"=E4=B8=AD=E6=96=87"=20to=20"?= =?UTF-8?q?=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit modify "中文" to "简体中文" to show the differences with "繁体中文"。 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3283210..7e4fd64 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line From b5d4416af3c3686da61afbfbe68f56d3a6160011 Mon Sep 17 00:00:00 2001 From: Timur Date: Sun, 7 Feb 2016 04:19:14 +0300 Subject: [PATCH 237/337] Break list of package managers into separate words Otherwise, they are seen by Markdown as a very long word. Indirectly, that might lead to the line break in the word "apt-get". Resolves: #337 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3283210..29dc42a 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Scope: Notes: -- To keep this to one page, content is implicitly included by reference. You're smart enough to look up more detail elsewhere once you know the idea or command to Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (as appropriate) to install new programs. +- To keep this to one page, content is implicitly included by reference. You're smart enough to look up more detail elsewhere once you know the idea or command to Google. Use `apt-get`, `yum`, `dnf`, `pacman`, `pip` or `brew` (as appropriate) to install new programs. - Use [Explainshell](http://explainshell.com/) to get a helpful breakdown of what commands, options, pipes etc. do. From d6dd7ce5d8dcb9caccb51d898c340267503937ab Mon Sep 17 00:00:00 2001 From: Timur M Date: Tue, 9 Feb 2016 01:59:52 +0300 Subject: [PATCH 238/337] =?UTF-8?q?Break=20the=20list=20of=20package=20man?= =?UTF-8?q?agers=20=E2=80=93=20finishing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The change in the list of package managers has been reproduced in those translations which used the original delimeter (forward slash, "/"). --- README-cs.md | 2 +- README-el.md | 2 +- README-es.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 2 +- README-zh.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README-cs.md b/README-cs.md index fd7460a..48d9079 100644 --- a/README-cs.md +++ b/README-cs.md @@ -40,7 +40,7 @@ Rozsah: Poznámky: -- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` podle distribuce k instalaci nových progamů. +- Pro udržení délky textu na jednu stranu, obsah je implicitně obsažen v odkazech. Jste dostatečně inteligentní aby jste si vyhledali více detailů z jiných zdrojů jakmile znáte příkaz či myšlenku na Googlu. Použijte `apt-get`, `yum`, `dnf`, `pacman`, `pip` nebo `brew` podle distribuce k instalaci nových progamů. - Použijte [Explainshell](http://explainshell.com/) pro užitečné vysvětlení co příkazy, možnosti, roury a jiné dělají. diff --git a/README-el.md b/README-el.md index da277db..14e3d4a 100644 --- a/README-el.md +++ b/README-el.md @@ -42,7 +42,7 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`, `yum`, `dnf`, `pacman`, `pip` ή `brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά diff --git a/README-es.md b/README-es.md index 466f891..f2e6cbd 100644 --- a/README-es.md +++ b/README-es.md @@ -41,7 +41,7 @@ Alcance: Notas: -- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (según proceda) para instalar los nuevos programas. +- Para mantener esto en una página, el contenido está incluido implícitamente por referencia. Eres lo suficientemente inteligente para consultar más detalles en otros lugares buscando en Google una vez conoces la idea o el comando. Usa `apt-get`, `yum`, `dnf`, `pacman`, `pip` o `brew` (según proceda) para instalar los nuevos programas. - Usa [Explainshell](http://explainshell.com/) para obtener detalles de ayuda sobre que hacen los comandos, las opciones, las pipes, etc. diff --git a/README-it.md b/README-it.md index 9662262..c8ba329 100644 --- a/README-it.md +++ b/README-it.md @@ -39,7 +39,7 @@ Obiettivi: Note: -- Per tenere tutto su una sola pagina, il contenuto è stato incluso tramite reference. Crediamo che tu sia abbastanza intelligente da cercare i dettagli su qualcosa di specifico, o su un comando, usando Google. Usa `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (in base alla situazione) per installare i nuovi programmi. +- Per tenere tutto su una sola pagina, il contenuto è stato incluso tramite reference. Crediamo che tu sia abbastanza intelligente da cercare i dettagli su qualcosa di specifico, o su un comando, usando Google. Usa `apt-get`, `yum`, `dnf`, `pacman`, `pip` o `brew` (in base alla situazione) per installare i nuovi programmi. - Se vuoi, usa [Explainshell](http://explainshell.com/) per avere uno spaccato più completo su cosa fanno comandi, pipe, opzioni e così via. diff --git a/README-ja.md b/README-ja.md index f3cb4d6..8d7820f 100644 --- a/README-ja.md +++ b/README-ja.md @@ -34,7 +34,7 @@ 注意 : -- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(どれか適したもの)を使おう。 +- 1ページ内に収めるために、内容には暗黙的に書かれていることがある。ここで取りかかりを知ったりコマンドが分かれば、詳細をどこかで調べたりするくらいはできるだろう。新しいプログラムをインストールするには、`apt-get`、`yum`、`dnf`、`pacman`、`pip`、`brew`(どれか適したもの)を使おう。 - コマンドやオプション、パイプを分解して理解する手助けに、[Explainshell](http://explainshell.com/)を使おう。 ## 基本 diff --git a/README-pt.md b/README-pt.md index d436a0a..b0cb8a2 100644 --- a/README-pt.md +++ b/README-pt.md @@ -34,7 +34,7 @@ Escopo: Notas: -- Para manter este guia em uma única página, o conteúdo implícito será incluído por referência. Você é competente o suficiente para verificar mais detalhes em outros lugares, desde que você já tenha entendido a ideia ou saiba o que procurar no Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (quando adequado) para instalar novos programas. +- Para manter este guia em uma única página, o conteúdo implícito será incluído por referência. Você é competente o suficiente para verificar mais detalhes em outros lugares, desde que você já tenha entendido a ideia ou saiba o que procurar no Google. Use `apt-get`, `yum`, `dnf`, `pacman`, `pip` ou `brew` (quando adequado) para instalar novos programas. - Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre o que fazem os comandos, as opções, pipes e etc. diff --git a/README-ru.md b/README-ru.md index 5b26524..6e298e8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -38,7 +38,7 @@ Заметки: -- Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. +- Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` или `brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. - На [Explainshell](http://explainshell.com/) можно найти простое и подробное объяснение того, что такое команды, флаги, пайпы и т.д. diff --git a/README-sl.md b/README-sl.md index 82079b6..a1be039 100644 --- a/README-sl.md +++ b/README-sl.md @@ -40,7 +40,7 @@ Obseg: Opombe: -- Da se obdrži to na eni strani, je vsebina implicitno vključena z referencami. Ste dovolj pametni, da poiščete več podrobnosti drugje, ko enkrat poznate idejo ali ukaz za iskanje na Google-u. Uporabite `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (kot je ustrezno), da namestite nove programe. +- Da se obdrži to na eni strani, je vsebina implicitno vključena z referencami. Ste dovolj pametni, da poiščete več podrobnosti drugje, ko enkrat poznate idejo ali ukaz za iskanje na Google-u. Uporabite `apt-get`, `yum`, `dnf`, `pacman`, `pip` ali `brew` (kot je ustrezno), da namestite nove programe. - Uporabite [Explainshell](http://explainshell.com/), da dobite uporabne razčlenitve, kaj ukazi, opcije, cevi itd. naredijo. diff --git a/README-uk.md b/README-uk.md index 4d4166e..2304b28 100644 --- a/README-uk.md +++ b/README-uk.md @@ -38,7 +38,7 @@ Нотатки: -- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d6f6f50..b596421 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -39,7 +39,7 @@ 注意事項: -- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合適的包管理器)來安裝新程式。 +- 為了能在一頁內展示盡量多的東西,一些具體的資訊會被間接的包含在引用頁裡。聰明機智的你如果掌握了使用 Google 搜尋引擎的基本方法與命令,那麼你將可以查閱到更多的詳細資訊。使用`apt-get`,`yum`,`dnf`,`pacman`,`pip` 或`brew`(以及其它合適的包管理器)來安裝新程式。 - 使用 [Explainshell](http://explainshell.com/) 去獲取相關命令、參數、管道等解釋。 diff --git a/README-zh.md b/README-zh.md index d1ce094..8d8fe15 100644 --- a/README-zh.md +++ b/README-zh.md @@ -39,7 +39,7 @@ 注意事项: -- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew`(以及其它合适的包管理器)来安装新程序。 +- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`,`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 - 使用 [Explainshell](http://explainshell.com/) 去获取相关命令、参数、管道等内容的解释。 From a1e446ff197165b5c843834d21a390fdcad39695 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 12 Feb 2016 11:02:37 +0200 Subject: [PATCH 239/337] el: Update translation --- README-el.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index da277db..f81a2a7 100644 --- a/README-el.md +++ b/README-el.md @@ -42,7 +42,7 @@ Σημειώσεις: -- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. +- Για να κρατηθεί το παρόν σε μία σελίδα, υπάρχει περιεχόμενο που περιλαμβάνεται έμμεσα κάνοντας αναφορά σε αυτό. Είστε αρκετά έξυπνοι ώστε να αναζητήσετε περαιτέρω λεπτομέρειες αλλού, μόλις καταλάβετε την ιδέα ή την εντολή που χρειάζεται να αναζητήσετε στο Google. Χρησιμοποιήστε `apt-get`, `yum`, `dnf`, `pacman`, `pip` ή `brew` (ανάλογα με την περίπτωση) για να εγκαταστήσετε νέα προγράμματα. - Χρησιμοποιήστε [Explainshell](http://explainshell.com/) για να έχετε μια χρήσιμη ανάλυση του τι κάνουν κάνουν εντολές, επιλογές, σωληνώσεις κλπ. ## Τα βασικά @@ -109,7 +109,7 @@ - Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. - +AP - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. - Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. From 76ccdfd8d8b101d5bacbe91b9057c636e337e917 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 12 Feb 2016 11:04:39 +0200 Subject: [PATCH 240/337] el: Fix typo --- README-el.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index f81a2a7..14e3d4a 100644 --- a/README-el.md +++ b/README-el.md @@ -109,7 +109,7 @@ - Δείτε επίσης `lsof` για ανοιχτές συνδέσεις δικτύου (sockets) και αρχεία. - Δείτε `uptime` ή `w` για να δείτε για πόσο το σύστημα βρίσκεται σε λειτουργία. -AP + - Χρησιμοποιήστε `alias` για να δημιουργήσετε συντομεύσεις για συχνά χρησιμοποιούμενες εντολές. Για παράδειγμα, η `alias ll='ls -latr'` δημιουργεί μία νέα συντόμευση `ll`. - Αποθηκεύστε συντομεύσεις, ρυθμίσεις φλοιού και μεθόδους που χρησιμοποιείτε συχνά στο `~/.bashrc`και [προβλέψτε ώστε οι login φλοιοί να τα διαβάζουν](http://superuser.com/a/183980/7106). Αυτό θα κάνει τις ρυθμίσεις σας διαθέσιμες κάθε φορά που χρησιμοποιείτε τον φλοιό. From f8f812f8ad001a58afa9dbb46816ee71de8b3ae6 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:33:59 +0530 Subject: [PATCH 241/337] nano editor for beginners --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3283210..e4029af 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). +- If you are a newcomer use `Nano` text editor, its the easiest to learn compared to `Vim` and `Emcas`. + ## Everyday use From 4e1abd4391ed786a35f80cbaa704b7bd0a19768c Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:40:37 +0530 Subject: [PATCH 242/337] basic calculator --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e4029af..f62cca9 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,11 @@ Notes: - For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `su` or `sudo bash` to actually run a shell as that user. Use `su -` to simulate a fresh login as root or another user. +- For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, +``` +>>> 2+3 +5 +``` ## Processing files and data From f4544843b279ab60522628fced4b2f17ed5e34ee Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 01:48:01 +0530 Subject: [PATCH 243/337] prefer rsync over scp --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f62cca9..359f5f5 100644 --- a/README.md +++ b/README.md @@ -244,6 +244,7 @@ Notes: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` +Also use `rsync` instead of `scp`, so that after network interruption you resume the file transfer rather than restarting from scratch. - Use `shuf` to shuffle or select random lines from a file. From a38a24a1ed4bcfdeb1c2b1a8c07687b030fefde6 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:00:50 +0530 Subject: [PATCH 244/337] fix typo: Emacs not Emcas --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 359f5f5..8958ee1 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). -- If you are a newcomer use `Nano` text editor, its the easiest to learn compared to `Vim` and `Emcas`. +- If you are a newcomer use `Nano` text editor, it's the easiest to learn compared to `Vim` and `Emacs`. ## Everyday use From e64c2f3c09dc8f5810e3c4f2e8e7117038f2eda9 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:07:52 +0530 Subject: [PATCH 245/337] Verify disk space with lsof --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8958ee1..69a91ea 100644 --- a/README.md +++ b/README.md @@ -312,6 +312,8 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). +- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: +`lsof | grep deleted | grep "filename-of-my-big-file"` ## One-liners From f8fc819af23bfb6469926a07f7f4dde17a41053f Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:11:02 +0530 Subject: [PATCH 246/337] 128K limit on commandline --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 69a91ea..b7bef5b 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,8 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` +- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) + ## One-liners A few examples of piecing together commands: From b1ad68b2151c9b1da6277a20da8402dcdb01d0dd Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:15:51 +0530 Subject: [PATCH 247/337] chattr to protect accidental file delete --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index b7bef5b..8910a5c 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,9 @@ Notes: 5 ``` +- File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` + + ## Processing files and data - To locate a file by name in the current directory, `find . -iname '*something*'` (or similar). To find a file anywhere by name, use `locate something` (but bear in mind `updatedb` may not have indexed recently created files). From fb7d95ea97f52403de20b5ce17a29b401a989389 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:18:34 +0530 Subject: [PATCH 248/337] save and restore file permissions --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8910a5c..769f767 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,12 @@ Notes: - File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` +- Use `getfacl` and `setfcle` to save and restore file permissions. For example: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` + ## Processing files and data From 0ee468155b4ad10447c6d72ad1f68cbf97f0cdc1 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Mon, 15 Feb 2016 02:22:42 +0530 Subject: [PATCH 249/337] Fix for review comments --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 769f767..3dc5d5c 100644 --- a/README.md +++ b/README.md @@ -191,9 +191,9 @@ Notes: 5 ``` -- File attributes are settable via `chattr` and offer an alternative, lower-level alternative to file permissions. For example, to protect accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` +- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` -- Use `getfacl` and `setfcle` to save and restore file permissions. For example: +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt From 7a3e0333462362d94ed3c4908d0f5d29e45feff9 Mon Sep 17 00:00:00 2001 From: mudongliang Date: Mon, 15 Feb 2016 15:09:14 +0800 Subject: [PATCH 250/337] =?UTF-8?q?modify=20=E4=B8=AD=E6=96=87=20to=20?= =?UTF-8?q?=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87=20in=20all=20the=20languag?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-cs.md | 2 +- README-el.md | 2 +- README-es.md | 2 +- README-fr.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 2 +- README-zh.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README-cs.md b/README-cs.md index fd7460a..b7d466c 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umění příkazové řádky diff --git a/README-el.md b/README-el.md index da277db..f2edfb7 100644 --- a/README-el.md +++ b/README-el.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Η Τέχνη της Γραμμής Εντολών diff --git a/README-es.md b/README-es.md index 466f891..4255fc2 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-fr.md b/README-fr.md index c2cd9c5..8794b35 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # L'art de la ligne de commande diff --git a/README-it.md b/README-it.md index 9662262..5aa59cd 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index f3cb4d6..066c686 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* 原文のコミット [ee4b00bc396087d27231f60512aeb77b19ce734e](https://github.com/jlevy/the-art-of-command-line/blob/ee4b00bc396087d27231f60512aeb77b19ce734e/README.md) diff --git a/README-ko.md b/README-ko.md index c9fa8da..67162f6 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pt.md b/README-pt.md index d436a0a..5583551 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ru.md b/README-ru.md index 5b26524..f85d3e4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Искусство командной строки diff --git a/README-sl.md b/README-sl.md index 82079b6..294f8cf 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index 4d4166e..0f9dbaa 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # Мистецтво командного рядка diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d6f6f50..648ab58 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # 命令列的藝術 diff --git a/README-zh.md b/README-zh.md index d1ce094..6e48cd3 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ 🌍 -*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* +*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* # 命令行的艺术 From 6b13ea552da86236e3b54ac3524e0e9fdf531dd1 Mon Sep 17 00:00:00 2001 From: "Lakshmipathi.G" Date: Tue, 16 Feb 2016 16:55:50 +0530 Subject: [PATCH 251/337] Remove nano tip --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3dc5d5c..b1c2685 100644 --- a/README.md +++ b/README.md @@ -71,8 +71,6 @@ Notes: - Learn to use `apt-get`, `yum`, `dnf` or `pacman` (depending on distro) to find and install packages. And make sure you have `pip` to install Python-based command-line tools (a few below are easiest to install via `pip`). -- If you are a newcomer use `Nano` text editor, it's the easiest to learn compared to `Vim` and `Emacs`. - ## Everyday use From 5440364e800f4b46ec21d7afb6f3a129e7c79ce3 Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Tue, 16 Feb 2016 18:10:29 +0300 Subject: [PATCH 252/337] Synced russian version to original line-by-line to merge changes easly. Corrected a couple of words, removed a duplicate, joined few strings --- README-ru.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README-ru.md b/README-ru.md index 426fb4d..63677d0 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,6 +1,7 @@ 🌍 *[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + # Искусство командной строки [![Вступайте в англоязычный чат проекта https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -22,10 +23,12 @@ Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете! Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md) -Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +Многое из того, что тут написано, +[изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). +начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста +[**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание @@ -39,9 +42,9 @@ Заметки: - Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` или `brew` (в зависимости от вашей системы управления пакетами) для установки новых программ. - - На [Explainshell](http://explainshell.com/) можно найти простое и подробное объяснение того, что такое команды, флаги, пайпы и т.д. + ## Основы - Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноутбуке во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере). @@ -68,15 +71,15 @@ - Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). + ## Ежедневное использование - Используйте таб в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки (после нажатия введите запрос, нажмите **ctrl-r** снова чтобы натйи следующее сопадение, нажмите **Enter** для выполнения текущей найденной команды или стрелку вправо чтобы отредактировать команду). - Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing). -- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). -- Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. +- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. @@ -94,6 +97,7 @@ cat hosts | xargs -I{} ssh root@{} hostname ``` + - `pstree -p` – полезный тип вывода дерева процессов. - Используйте `pgrep` или `pkill` для того, чтобы находить/слать сигналы к процессам по имени (`-f` помогает). @@ -124,7 +128,6 @@ trap "echo 'error: Script failed: see failed command above'" ERR ``` - - В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так: ```bash # do something in current dir @@ -197,7 +200,6 @@ - Для работы с YAML используйте [`shyaml`](https://github.com/0k/shyaml). - - Для работы с Excel и CSV-файлами используйте [csvkit](https://github.com/onyxfish/csvkit) (программа предоставляет команды `in2csv`, `csvcut`, `csvjoin`, `csvgrep` и т.д.) - Для работы с Amazon S3 удобно работать с [`s3cmd`](https://github.com/s3tools/s3cmd) и [`s4cmd`](https://github.com/bloomreach/s4cmd) (последний работает быстрее). Для остальных сервисов Амазона используйте стандартный [`aws`](https://github.com/aws/aws-cli) или улучшенный [`saws`](https://github.com/donnemartin/saws). @@ -231,7 +233,7 @@ rename 's/\.bak$//' *.bak ``` -- Как говорит man, `rsync` действительно быстрая и очень универсальная утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -251,7 +253,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы посмотреть разницу в бинарниках (дельта-кодирование) используйте `xdelta3`. - Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (которые бывают, например, в испанском языке) - ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` @@ -262,11 +263,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. + ## Отладка системы -- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie). - - +- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). - Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. @@ -304,6 +304,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). + ## В одну строчку Давайте соберем все вместе и напишем несколько команд: @@ -323,17 +324,16 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir awk '{ x += $3 } END { print x }' myfile ``` -- Если вам нужно посмотреть размеры и даты создания дерева файлов используйте: +- Чтобы посмотреть размеры и даты в дереве файлов, есть почти как рекурсивная `ls -l`, но легче читаемая, чем `ls -lR`: ```sh find . -type f -ls ``` -Это почти как рекурсивная `ls -l`, но выглядит более читабельно чем `ls -lR`: - -- Давайте представим, что у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: +- Скажем, у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе: ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` + - Для непрерывного мониторинга измененний используйте `watch`, например, проверка измений файлов в директории: `watch -d -n 2 'ls -rtlh | tail'` или сетевых настроек во время устранения проблем с вашей wifi сетью: `watch -d -n 2 ifconfig`. - Запустите этот скрипт, чтобы получить случайный совет из этой инструкции: @@ -412,7 +412,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `watch`: повторный запуск команды с выводом результата или подсветкой изменений -- `tac`: вывести файл посимвольно наоборот ("ласипан") +- `tac`: вывести файл построчно в обратном порядке - `shuf`: случайная выборка строк из файла @@ -498,7 +498,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsmod` и `modinfo`: информация о модулях ядра. -- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезные" веселые цитатки и поезда, пересекающие ваш терминал :) +- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :) + ## OS X only @@ -518,6 +519,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы получить информацию о версии OS X используйте `sw_vers`. + ## Больше информации по теме - [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки. @@ -529,9 +531,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Дисклеймер -За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. - -Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) +За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) ## Лицензия From 99e681db865086c761d3af65f3f3a4b6433b3cdd Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Tue, 16 Feb 2016 18:22:32 +0300 Subject: [PATCH 253/337] typo --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 63677d0..8b18db5 100644 --- a/README-ru.md +++ b/README-ru.md @@ -266,7 +266,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Отладка системы -- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). +- Для веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). - Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. From c7d9d1478a62cdd675bf1cf618e695253fae4132 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 16 Feb 2016 22:37:38 -0800 Subject: [PATCH 254/337] Rework ordering on #375 additions. --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 85bb455..ebe622e 100644 --- a/README.md +++ b/README.md @@ -184,20 +184,14 @@ Notes: - For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `su` or `sudo bash` to actually run a shell as that user. Use `su -` to simulate a fresh login as root or another user. +- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) + - For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, ``` >>> 2+3 5 ``` -- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` - -- Use `getfacl` and `setfacl` to save and restore file permissions. For example: -```sh - getfacl -R /some/path > permissions.txt - setfacl --restore=permissions.txt -``` - ## Processing files and data @@ -279,6 +273,13 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. +- File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` + +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## System debugging @@ -323,7 +324,6 @@ Also use `rsync` instead of `scp`, so that after network interruption you resume - If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` -- Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) ## One-liners From 7124a1d070761ac6720791306f24a6b093325726 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 16 Feb 2016 22:41:01 -0800 Subject: [PATCH 255/337] Two more small adjustments to #375. --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ebe622e..12536c5 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Notes: - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) -- For a basic calculator (and of course access to Python in general), use `python` interpreter. For example, +- For a basic calculator (and of course access to Python in general), use the `python` interpreter. For example, ``` >>> 2+3 5 @@ -242,11 +242,10 @@ Notes: rename 's/\.bak$//' *.bak ``` -- As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: +- As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. When security restrictions allow, using `rsync` instead of `scp` allows recovery of a transfer without restarting from scratch. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` -Also use `rsync` instead of `scp`, so that after network interruption you resume the file transfer rather than restarting from scratch. - Use `shuf` to shuffle or select random lines from a file. From 9244963cacfc7d138bf914d9b9f54f9e6507fb63 Mon Sep 17 00:00:00 2001 From: mkwardakov Date: Thu, 18 Feb 2016 22:18:37 +0300 Subject: [PATCH 256/337] merged and translated latest changes --- README-ru.md | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/README-ru.md b/README-ru.md index 8b18db5..799fd5f 100644 --- a/README-ru.md +++ b/README-ru.md @@ -13,6 +13,7 @@ - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) +- [Windows only](#windows-only) - [OS X only](#os-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -35,7 +36,7 @@ Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[OS X only](#os-x-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). +- Этот документ написан для пользователей Linux, за исключеним секций "[OS X only](#os-x-only)" и "[Windows only](#windows-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу. - Эта инструкция включает в себя стандартные Unix команды и те, для которых нужно устанавливать сторонние пакеты. Они настолько полезны, что стоят того, чтобы их установили. @@ -183,6 +184,14 @@ - Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы эмулировать свежий логин от рута или другого пользователя. +- Знайте про [ограничение 128Кб](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) в командной строке. Ошибка "Argument list too long" часто бывает, когда маска по имени включает большое количество файлов. (В таких случаях помогают варианты с `find` или `xargs`.) + +- В качестве простого калькулятора (и, конечно, вообще для работы с Python) используйте интерпретатор `python`. Например, +``` +>>> 2+3 +5 +``` + ## Обработка файлов и информации @@ -233,7 +242,7 @@ rename 's/\.bak$//' *.bak ``` -- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: +- Как говорит man, `rsync` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Если есть доступ, `rsync` в отличие от `scp` позволяет возобновить процесс копирования, не начиная заново. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -263,6 +272,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. +- `chattr` устанавливает атрибуты файлов, которые также являются низкоуровневой альтернативой правам доступа. Например, от случайного удаления файла защитит атрибут неизменяемости: `sudo chattr +i /critical/directory/or/file` + +- Используйте `getfacl` и `setfacl` для сохранения и восстановления файловых прав доступа. Например: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## Отладка системы @@ -304,6 +320,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). +- Если вы удалили файл и это вопреки ожиданиям не освободило место на диске, как показывает `du`, проверьте, использует ли файл какой-нибудь процесс: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## В одну строчку @@ -519,6 +538,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы получить информацию о версии OS X используйте `sw_vers`. +## Windows only + +- Используйте силу Unix shell в Microsoft Windows, установив [Cygwin](https://cygwin.com/). Большая часть описанных в этом документе возможностей заработает сразу. + +- Установите еще Unix программ с помощью встроенного в Cygwin менеджера пакетов. + +- Используйте `mintty` в качестве терминала. + +- Работайте с буфером обмена Windows с помощью `/dev/clipboard`. + +- Запустите `cygstart`, чтобы открыть файл в приложении по умолчанию. + +- Работайте с реестром Windows с помощью `regtool`. + +- Имейте в виду, что виндовый диск `C:\` доступен в Cygwin по пути `/cygdrive/c`, и cygwin''ский `/` является папкой `C:\cygwin` в Windows. Конвертируйте файловые пути в виндовые и обратно с помощью `cygpath`. Это самый полезный скрипт, который запускает программы Windows. + +- Вы можете запускать и автоматизировать большинство задач по администрированию Windows из командной строк, освоив `wmic`. ## Больше информации по теме @@ -531,7 +567,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Дисклеймер -За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) +За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. С большой силой приходит большая ответственность. Из того, что вы *способны* что-то сделать в Баше, вовсе не следует, что это нужно делать! ;) ## Лицензия From 4c2fc0211e9d561f724518bd859fbff7ccee67fa Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 29 Jan 2016 20:15:52 +0100 Subject: [PATCH 257/337] fr: Translate the section "Windows only" --- README-fr.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 8794b35..f19c271 100644 --- a/README-fr.md +++ b/README-fr.md @@ -13,6 +13,7 @@ - [Unilignes](#unilignes) - [Obscures mais utiles](#obscures-mais-utiles) - [Uniquement OS X](#uniquement-os-x) +- [Uniquement Windows](#uniquement-windows) - [Autres ressources](#autres-ressources) - [Avertissement](#avertissement) @@ -36,7 +37,7 @@ Contexte : - Ce guide est destiné aux débutants et aux utilisateurs chevronnés. Les objectifs sont l'*envergure* (tout est important), la *spécificité* (donner des exemples concrets des cas les plus courants) et la *concision* (éviter tout ce qui n'est pas essentiel et les digressions disponibles facilement ailleurs). Chaque astuce est indispensable dans certaines situations ou fait gagner beaucoup de temps par rapport aux solutions alternatives. -- Il est écrit pour Linux, à l'exception de la section « [Uniquement OS X](#uniquement-os-X) ». +- Il est écrit pour Linux, à l'exception des sections « [Uniquement OS X](#uniquement-os-X) » et « [Uniquement Windows](#uniquement-windows) ». Beaucoup d'items s'appliquent ou peuvent être installés sur d'autres Unices ou Mac OS (ou même Cygwin). - L'accent est mis sur l'utilisation intéractive de Bash, bien que de nombreuses astuces s'appliquent aux autres shells et à l'écriture de scripts en Bash. - Il inclut les commandes « standard » d'Unix aussi bien que celles qui nécessitent l'installation de paquets spéciaux — tant qu'ils sont suffisamment importants pour mériter d'être mentionnés. @@ -612,6 +613,28 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com - Pour obtenir des informations sur la version de Mac OS, utilisez `sw_vers`. +## Uniquement Windows + +- Installez [Cygwin](http://cygwin.com) pour bénéficier de la puissance du shell Unix sous Microsoft Windows. +La majorité de ce qui est décrit dans ce document fonctionnera *out of the box*. + +- Installez des programmes Unix supplémentaires à l'aide du gestionnaire de paquets de Cygwin. + +- Utilisez `mintty` comme fenêtre de ligne de commande. + +- Accédez au presse-papier de Windows par `/dev/clipboard`. + +- Exécutez `cygstart` pour ouvrir un fichier quelconque à l'aide de son application enregistrée. + +- Accédez à la base de registres de Windows avec `regtool`. + +- Sachez qu'on accède au lecteur `C:\` depuis Cygwin via `/cygdrive/c` et que le chemin Cygwin `\` devient `C:\cygwin` sous Windows. +Effectuez des conversions entre les deux types de chemin avec l'utilitaire `cygpath`. +C'est particulièrement utile pour invoquer des programmes Windows dans les scripts. + +- Vous pouvez accomplir et scripter la plupart des tâches d'administration système de Windows depuis la ligne de commande en apprenant et en utilisant `wmic`. + + ## Autres ressources - [awesome-shell](https://github.com/alebcay/awesome-shell) : une liste organisée d'outils et de ressources pour le shell. From 2deada1c73f5f192f633a6a04fb6271a686d4b95 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Thu, 18 Feb 2016 23:41:57 +0100 Subject: [PATCH 258/337] fr: Synchronize the translation --- README-fr.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-fr.md b/README-fr.md index f19c271..55a919e 100644 --- a/README-fr.md +++ b/README-fr.md @@ -235,6 +235,14 @@ Une alternative plus légère pour la persistance des sessions seulement est `dt Utilisez `su` ou `sudo bash` pour exécuter un shell sous cette utilisateur. Utilisez `su -` pour simuler une nouvelle connexion en tant que root ou un autre utilisateur. +- Sachez que l'argument de la ligne de commande a une [taille limite de 128 Kio](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong). L'erreur « Argument list too long » est fréquente avec les jokers qui reconnaissent un grand nombre de fichiers (quand cela se produit des alternatives comme `find` et `xargs` peuvent aider). + +- Pour une calculatrice basique (et bien sûr accéder à Python en général), utilisez l'interpréteur `python`. +Par exemple, +``` +>>> 2+3 +5 +``` ## Traitement des fichiers et des données @@ -298,6 +306,7 @@ C'est probablement trois fois plus rapide et trois fois plus petit que son équi - Selon sa page de manuel, `rsync` est un outil de duplication de fichiers vraiment rapide et incroyablement polyvalent. Il est connu pour faire de la synchronisation entre machines, mais est également utile pour un usage local. +Lorsque les mesures de sécurité l'autorisent, utiliser `rsync` au lieu de `scp` permet de reprendre un transfert interrompu sans devoir le recommencer zéro. Il est aussi l'un des outils [les plus rapides](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) pour effacer un grand nombre de fichiers : ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir @@ -338,6 +347,14 @@ Par exemple, cette commande met en minuscules et retire tous les accents (en les - Utilisez `zless`, `zmore`, `zcat` et `zgrep` pour opérer sur des fichiers compressés. +- Les attributs d'un fichier peuvent être modifiés avec `chattr` et proposent une alternative de plus bas niveau aux permissions d'accès aux fichiers. +Par exemple, l'attribut *immutable* protège un fichier contre toute suppression accidentelle: `sudo chattr +i /critical/directory/or/file`. + +- Utilisez `getfacl` et `setfacl` pour sauvegarder et restorer les permissions. Par exemple: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## Débogage du système @@ -389,6 +406,9 @@ Elle fournit un historique concernant l'usage du CPU, de la mémoire, du réseau - Utilisez `dmesg` à chaque fois que quelque chose de bizarre se produit (pour des problèmes liés au matériel ou aux drivers). +- Si vous effacez un fichier et que `du` indique que l'espace occupé n'a pas été libéré, alors vérifiez si le fichier n'est pas utilisé par un processus: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## Unilignes From cce22b284014f5c80d4ee38cbe1497bddee79996 Mon Sep 17 00:00:00 2001 From: _anna Date: Fri, 19 Feb 2016 02:27:59 +0200 Subject: [PATCH 259/337] el: Update translation Translate the section "Windows only" and other smaller additions --- README-el.md | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/README-el.md b/README-el.md index 685627f..f5c1b41 100644 --- a/README-el.md +++ b/README-el.md @@ -13,6 +13,7 @@ - [Εντολές σε μία γραμμή](#one-liners) - [Ασυνήθιστες αλλά χρήσιμες](#ασυνήθιστες-αλλά-χρήσιμες) - [Μόνο για OS X](#os-x-only) +- [Μόνο για Windows](#windows-only) - [Περισσότερες πηγές](#more-resources) - [Αποποίηση ευθύνης](#disclaimer) @@ -36,7 +37,7 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση του τμήματος "[Μόνο για OS X](#os-x-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων "[Μόνο για OS X](#os-x-only)" και "[Μόνο για Windows](#windows-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. - Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. @@ -181,6 +182,12 @@ - Για την εκτέλεση μίας εντολής με δικαιώματα άλλων, χρησιμοποιήστε `sudo` (για root) ή `sudo -u` (για άλλον χρήστη). Χρησιμοποιήστε `su` ή `sudo bash` για να εκτελέσετε τον φλοιό ως αυτός ο χρήστης. Χρησιμοποιήστε `su -` για να προσμοιώσετε μια εκ νέου είσοδο ως root ή ως άλλος χρήστης. +- Έχετε υπόψη σας τον [περιορισμό των 128K](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) για τις γραμμές εντολών. Το σφάλμα "Η λίστα των ορισμάτων είναι πολύ μεγάλη" είναι κοινό, όταν γίνεται ταίριασμα με χαρακτήρα wildcard ενάντι μεγάλου αριθμού αρχείων. (Όταν συμβαίνει αυτό, εναλλακτικές όπως οι `find` και `xargs` μπορεί να βοηθήσουν.) + +- Για έναν βασικό υπολογιστή (και βέβαια γενικά για πρόσβαση σε Python), χρησιμοποιήστε τον διερμηνευτή `python`. Για παράδειγμα, +``` +>>> 2+3 +5 ## Επεξεργασία αρχείων και δεδομένων @@ -231,7 +238,7 @@ rename 's/\.bak$//' *.bak ``` -- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: +- Όπως λέει η σελίδα man, η `rsync` είναι πράγματι ένα γρήγορο και εξαιρετικά ευέλικτο εργαλείο αντιγραφής αρχείων. Είναι γνωστή για τον συγχρονισμό μεταξύ υπολογιστών, αλλά είναι εξίσου χρήσιμη και τοπικά. Όταν οι περιορισμοί ασφάλειας το επιτρέπουν, η χρήση της `rsync` αντί της `scp` επιτρέπει τη συνέχιση μιας μεταφοράς χωρίς να ξεκινήσει από την αρχή. Επίσης, είναι ανάμεσα στους [πιο γρήγορους τρόπους](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) να διαγράψει κανείς μεγάλο αριθμό αρχείων: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -261,6 +268,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε `zless`, `zmore`, `zcat`και `zgrep` για να χειριστείτε συμπιεσμένα αρχεία. +- Ιδιότητες αρχείων μπορούν να οριστούν με την `chattr` και προσφέρει μία εναλλακτική για τα δικαιώματα των αρχείων σε χαμηλό επίπεδο. Για παράδειγμα, για να προστατευτείτε από κατά λάθος διαγραφή αρχείου χρησιμοποιήστε την επιλογή immutable: `sudo chattr +i /critical/directory/or/file` + +- Χρησιμοποιήστε τις `getfacl` και `setfacl` για να αποθηκεύσετε και να επαναφέρετε δικαιώματα αρχείων. Για παράδειγμα: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` + ## Αποσφαλμάτωση συστήματος - Για web αποσφαλμάτωση, οι εντολές `curl` και `curl -I` είναι χρήσιμες, ή οι ισοδύναμες `wget`, ή η πιο καινούρια [`httpie`](https://github.com/jkbrzt/httpie). @@ -301,6 +316,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε την `dmesg`, όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). +- Αν διαγράψετε ένα αρχείο και δεν απελευθερωθεί ο σύμφωνα με την `du` αναμενομένος χώρος στον δίσκο, ελέξτε αν το αρχείο χρησιμοποιείται από κάποια διεργασία: +`lsof | grep deleted | grep "filename-of-my-big-file"` + + ## Εντολές σε μία γραμμή Μερικά παραδείγματα σωλήνωσης εντολών: @@ -489,6 +508,24 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. +## Μόνο για Windows + +- Αποκτήστε πρόσβαση στη δύναμη του φλοιού του Unix σε περιβάλλον Microsoft Windows εγκαθιστώντας το [Cygwin](https://cygwin.com/). Τα περισσότερα από αυτά που περιγράφονται σε αυτό το έγγραφο θα λειτουργήσουν μεμιάς. + +- Εγκαταστήστε πρόσθετα προγράμματα Unix με τον διαχειριστή πακέτων του Cygwin. + +- Χρησιμοποιήστε το `mintty` ως το παράθυρο γραμμής εντολών σας. + +- Αποκτήστε πρόσβαση στο πρόχειρο (clipboard) των Windows μέσω του `/dev/clipboard`. + +- Εκτελέστε τη `cygstart` για να ανοίξετε ένα οποιοδήποτε αρχείο με την εφαρμογή που είναι ορισμένη να χρησιμοποιείται για το άνοιγμά του. + +- Αποκτήστε πρόσβαση στο μητρώο των Windows με `regtool`. + +- Σημειώστε ότι η διαδρομή `C:\` των Windows γίνεται `/cygdrive/c` στο Cygwin και ότι το `/` του Cygwin εμφανίζεται ως `C:\cygwin` στα Windows. Μετατρέψετε διαδρομές αρχείων από τη μορφή που χρησιμοποιεί το Cygwin σε αυτή που χρησιμοποιούν τα Windows και αντίστροφα με `cygpath`. Αυτό είναι πολύ χρήσιμο σε scripts που καλούν προγράμματα Windows. + +- Μπορείτε να εκτελέσετε και να γράψετε scripts για τις περισσότερες εργασίες διαχείρισης συστήματος των Windows από τη γραμμή εντολών μαθαίνοντας και χρησιμοποιώντας την `wmic`. + ## Περισσότερες πηγές - [awesome-shell](https://github.com/alebcay/awesome-shell): Μία προσεγμένη λίστα με εργαλεία και πηγές σχετικές με τον φλοιό . From df965362a3303a55c34f0922653aeec34224ee65 Mon Sep 17 00:00:00 2001 From: Michael Kwardakov Date: Fri, 19 Feb 2016 13:23:01 +0300 Subject: [PATCH 260/337] Update README-ru.md --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 799fd5f..3c3eba2 100644 --- a/README-ru.md +++ b/README-ru.md @@ -284,7 +284,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie). -- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска. +- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения базовой информации о процессоре и детализированной о каждом разделе жесткого диска. - Для получения информации о сетевых соедиениях используйте `netstat` и `ss`. From fcdaa321e72746ca025d99d15894f8674768f19f Mon Sep 17 00:00:00 2001 From: Timur M Date: Fri, 19 Feb 2016 16:24:24 +0300 Subject: [PATCH 261/337] Remove a redundant mention of `lsb_release' Made in all translations as well. Resolves: #382 --- README-cs.md | 2 -- README-el.md | 2 -- README-es.md | 2 -- README-fr.md | 2 -- README-it.md | 2 -- README-ja.md | 2 -- README-ko.md | 2 -- README-pt.md | 2 -- README-ru.md | 2 -- README-sl.md | 2 -- README-uk.md | 3 +-- README-zh-Hant.md | 2 -- README-zh.md | 2 -- README.md | 2 -- 14 files changed, 1 insertion(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 1b5062d..e677f6e 100644 --- a/README-cs.md +++ b/README-cs.md @@ -472,8 +472,6 @@ Pár příkladů na spojování příkazů: - `hdparm`: SATA/ATA disková manipulace/výkon -- `lsb_release`: informace o Linuxové distribuci - - `lsblk`: seznam blokových zařízení: stromové zobrazení disků a diskových oddílů - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informace o hardwaru zahrnující CPU, BIOS, RAID, grafiku, zařízení, atd. diff --git a/README-el.md b/README-el.md index 685627f..de6ba5d 100644 --- a/README-el.md +++ b/README-el.md @@ -461,8 +461,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: διαχείριση/απόδοση δίσκου SATA/ATA -- `lsb_release`: πληροφορίες διανομής Linux - - `lsblk`: εμφανίστε σε λίστα συσκευές αποθήκευσης: μία προβολή σε δέντρο των δίσκων σας και των διαμερισμάτων τους - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: πληροφορίες υλικού, συμπεριλαμβανομένων επεξεργαστή, BIOS, RAID, γραφικών, συσκευών κλπ. diff --git a/README-es.md b/README-es.md index 5845eca..5851894 100644 --- a/README-es.md +++ b/README-es.md @@ -474,8 +474,6 @@ Algunos ejemplos de comandos reunidos: - `hdparm`: manipulación/rendimiento de discos SATA/ATA -- `lsb_release`: información de la distribución de Linux - - `lsblk`: lista de dispositivos de bloque: una vista tipo arbol de sus discos y particiones de disco - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: información de hardware, incluyendo CPU, BIOS, RAID, gráficos, dispositivos, etc diff --git a/README-fr.md b/README-fr.md index 8794b35..008e1e2 100644 --- a/README-fr.md +++ b/README-fr.md @@ -578,8 +578,6 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `hdparm` : manipulation et performances d'un disque SATA ou ATA. -- `lsb_release` : informations sur la distribution Linux. - - `lsblk` : affiche les périphériques blocs (une arborescence de vos disques et de leurs partitions). - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode` : informations sur le matériel, comprenant le CPU, le BIOS, le RAID, la carte graphique, les périphériques, etc. diff --git a/README-it.md b/README-it.md index 3e5ea28..221f4dd 100644 --- a/README-it.md +++ b/README-it.md @@ -487,8 +487,6 @@ Qualche esempio di combinazione di più comandi comandi: - `hdparm`: tool di gestione dischi SATA/ATA. -- `lsb_release`: informazioni sulla distribuzione Linux. - - `lsblk`: visualizzazione ad albero dei dischi e relative partizioni. - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informazioni sull'hardware, tra cui CPU, BIOS, RAID, scheda grafica e dispositivi di ogni tipo. diff --git a/README-ja.md b/README-ja.md index 1adca76..9dee638 100644 --- a/README-ja.md +++ b/README-ja.md @@ -478,8 +478,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: SATA/ATAディスクの操作やパフォーマンス確認 -- `lsb_release`: Linuxディストリビューション情報 - - `lsblk`: ブロックデバイスの一覧。ディスクとディスクパーティションのツリービュー - `lshw`、`lscpu`、`lspci`、`lsusb`、`dmidecode`: CPUやBIOS、RAID、グラフィック、その他デバイスなどのハードウェア情報 diff --git a/README-ko.md b/README-ko.md index 67162f6..c9af783 100644 --- a/README-ko.md +++ b/README-ko.md @@ -436,8 +436,6 @@ - `hdparm`: SATA/ATA disk들의 정보를 수정하거나 그것들이 작동하도록 합니다. -- `lsb_release`: Linux 배포판의 정보를 보여줍니다 - - `lsblk`: 블록 디바이스들의 목록을 보여줍니다 : 여러분의 디스크들이나 디스크파티션들을 트리의 형태로 보여줍니다 - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: CPU, BIOS, RAID, graphics, devices 등의 하드웨어 정보를 보여줍니다 diff --git a/README-pt.md b/README-pt.md index d7612dc..4659937 100644 --- a/README-pt.md +++ b/README-pt.md @@ -424,8 +424,6 @@ Alguns exemplos de como reunir os comandos. - `hdparm`: Manipulação/performance de discos SATA/ATA. -- `lsb_release`: Informações sobre a distribuição do Linux. - - `lsblk`: Lista os blocos dos dispositivos: uma visualização em forma de árvore dos seus discos e partições do disco. - `lshw` e `lspci`: informações do hardware, incluindo RAID, gráficos, etc. diff --git a/README-ru.md b/README-ru.md index 8b18db5..1f42d38 100644 --- a/README-ru.md +++ b/README-ru.md @@ -490,8 +490,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`: манипуляции с SATA/ATA -- `lsb_release`: информация о дистрибутиве Linux - - `lsblk`: cписок блочных устройств компьютера: дерево ваших дисков и логических дисков - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: информация о железе, включая CPU, BIOS, RAID, графику, девайсы, и т.д. diff --git a/README-sl.md b/README-sl.md index 6955cc6..aaf2034 100644 --- a/README-sl.md +++ b/README-sl.md @@ -489,8 +489,6 @@ Nekaj primerov sestavljanja ukazov skupaj: - `hdparm`: manipulacija/uspešnost SATA/ATA disk-a -- `lsb_release`: informacije distribucije Linux - - `lsblk`: izpiše blokovne naprave: drevesni pogled vaših diskov in particij diska - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: informacije strojne opreme, vključno s procesorjem, BIOS-om, RAID-om, grafiko, napravami itd. diff --git a/README-uk.md b/README-uk.md index 93b0349..0523945 100644 --- a/README-uk.md +++ b/README-uk.md @@ -198,7 +198,7 @@ - Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). - Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. - Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)) і [`sysdig`](https://github.com/draios/sysdig). -- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` або `lsb_release -a`. +- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` (інформація про ядро) або `lsb_release -a` (інформація про дистрибутив Linux). - Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами). @@ -313,7 +313,6 @@ - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене - `hdparm`: маніпуляція/налаштування SATA/ATA диску -- `lsb_release`: інформація про дистрибутив Linux - `lsblk`: cписок блокових пристроїв комп'ютера: дерево ваших дисків і логічних дисків - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: інформація про апаратне забезпечення, включає CPU, BIOS, RAID, графічну карту і т.д. - `lsmod` і `modinfo`: показує список і детальну інформацію модулів ядра. diff --git a/README-zh-Hant.md b/README-zh-Hant.md index af996ba..4e9e69d 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -465,8 +465,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`:SATA/ATA 磁碟更改及效能分析 -- `lsb_release`:Linux 發行版資訊 - - `lsblk`:列出塊裝置資訊:以樹形展示你的磁碟以及磁碟分區資訊 - `lshw`,`lscpu`,`lspci`,`lsusb` 和`dmidecode`:檢視硬體資訊,包括CPU、BIOS、RAID、顯示卡、USB裝置等 diff --git a/README-zh.md b/README-zh.md index 8eaedd5..c1bd688 100644 --- a/README-zh.md +++ b/README-zh.md @@ -467,8 +467,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `hdparm`:SATA/ATA 磁盘更改及性能分析 -- `lsb_release`:Linux 发行版信息 - - `lsblk`:列出块设备信息:以树形展示你的磁盘以及磁盘分区信息 - `lshw`,`lscpu`,`lspci`,`lsusb` 和 `dmidecode`:查看硬件信息,包括 CPU、BIOS、RAID、显卡、USB设备等 diff --git a/README.md b/README.md index 12536c5..a4324ab 100644 --- a/README.md +++ b/README.md @@ -509,8 +509,6 @@ A few examples of piecing together commands: - `hdparm`: SATA/ATA disk manipulation/performance -- `lsb_release`: Linux distribution info - - `lsblk`: list block devices: a tree view of your disks and disk partitions - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: hardware information, including CPU, BIOS, RAID, graphics, devices, etc. From 7a9da6b09e4343560dc7063e12da089cd1ea8207 Mon Sep 17 00:00:00 2001 From: Timur M Date: Fri, 19 Feb 2016 16:26:51 +0300 Subject: [PATCH 262/337] Translate the "or" word in the Russian version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit or → или --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 1f42d38..cbd64b4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -300,7 +300,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для анализа более сложных систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig). -- Узнайте, какая у вас ОС, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве). +- Узнайте, какая у вас ОС, через `uname` или `uname -a` (основная Unix-информация/информация о ядре), или `lsb_release -a` (информация о дистрибутиве). - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). From 4f40e23d2a51d9205ec945c77be14d1e3f192324 Mon Sep 17 00:00:00 2001 From: mudongliang Date: Fri, 19 Feb 2016 21:58:22 +0800 Subject: [PATCH 263/337] add netstat -a | grep ssh for history --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 12536c5..34917c8 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Notes: - For editing long commands, after setting your editor (for example `export EDITOR=vim`), **ctrl-x** **ctrl-e** will open the current command in an editor for multi-line editing. Or in vi style, **escape-v**. -- To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument) and `!!` last command, though these are often easily replaced with **ctrl-r** and **alt-.**. +- To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument), `!n` (nth command) and specially `!!` (last command), though these are often easily replaced with **ctrl-r** and **alt-.**. - Go to your home directory with `cd`. Access files relative to your home directory with the `~` prefix (e.g. `~/.bashrc`). In `sh` scripts refer to the home directory as `$HOME`. From e536b4efb87d66de2bf0c676fcf882b4cdebe5a4 Mon Sep 17 00:00:00 2001 From: _anna Date: Sat, 20 Feb 2016 13:12:31 +0200 Subject: [PATCH 264/337] el: Improve translation Use greek quotes and make small improvements Reviewed-by: Diomidis Spinellis --- README-el.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README-el.md b/README-el.md index f5c1b41..7982122 100644 --- a/README-el.md +++ b/README-el.md @@ -37,9 +37,9 @@ Αντικείμενο: - Αυτός ο οδηγός απευθύνεται τόσο σε αρχάριους όσο και σε έμπειρους. Οι στόχοι είναι το *εύρος* (ό,τι είναι σημαντικό), η *ακρίβεια* (να δοθούν συγκεκριμένα παραδείγματα για τις συνηθέστερες περιπτώσεις)και η *συντομία* (να αποφευχθούν πράγματα που δεν είναι αναγκαία ή παρεκβάσεις που μπορεί κανείς εύκολα να αναζητήσει αλλού). Κάθε συμβουλή είναι απαραίτητη σε κάποια περίπτωση ή εξοικονομεί χρόνο σε σημαντικό βαθμό σε σύγκριση με εναλλακτικές. -- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων "[Μόνο για OS X](#os-x-only)" και "[Μόνο για Windows](#windows-only)". Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). +- Το παρόν είναι γραμμένο για Linux, με εξαίρεση των τμημάτων «[Μόνο για OS X](#os-x-only)» και «[Μόνο για Windows](#windows-only)». Πολλά από τα υπόλοιπα κομμάτια ισχύουν ή μπορούν να εγκατασταθούν σε άλλα Unices ή OS X (ή ακόμη και Cygwin). - Εστιάζεται στον διαδραστικό φλοιό Bash, αν και πολλές συμβουλές ισχύουν και για άλλους φλοιούς και γενικότερα στη συγγραφή scripts για Bash. -- Περιλαμβάνει τόσο τις "τυπικές" εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. +- Περιλαμβάνει τόσο τις «τυπικές» εντολές Unix καθώς και άλλες που απαιτούν την εγκατάσταση ειδικών πακέτων λογισμικού -- αρκεί να είναι αρκετά σημαντικές ώστε να αξίζει να περιληφθούν. Σημειώσεις: @@ -143,7 +143,7 @@ diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- Να γνωρίζετε για το "here documents" στον Bash, όπως στην `cat <logfile 2>&1` ή `some-command &>logfile`. Συχνά για να βεβαιωθείτε ότι μία εντολή δεν αφήνει μια σύνδεση αρχείου ανοιχτή στην είσοδο, δεσμεύοντας τον στο τερματικό που βρίσκεστε, είναι μία καλή πρακτική να προσθέτετε `>> 2+3 5 @@ -286,7 +286,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για μια γρήγορη επισκόπηση του τι συμβαίνει σε ένα σύστημα, η `dstat` είναι ιδιαίτερα χρήσιμη. Για καλύτερη επισκόπηση με λεπτομέρειες, χρησιμοποιήστε [`glances`](https://github.com/nicolargo/glances). -- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η "cached" τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως "free" τιμή. +- Για να γνωρίζετε την κατάσταση της μνήμης, εκτελέστε και κατανοήστε την έξοδο των `free` και `vmstat`. Συγκεκριμένα, να έχετε υπόψη ότι η «cached» τιμή είναι μνήμη που δεσμεύει ο πυρήνας του Linux ως προσωρινά αποθηκευμένο αρχείο, ώστε στην ουσία προσμετράται ως «free» τιμή. - Η αποσφαλμάτωση συστημάτων Java είναι άλλη ιστορία, αλλά ένα απλό κόλπο για το JVM της Oracle και άλλων είναι να τρέξετε την εντολή `kill -3 ` και ένα πλήρες ίχνος στοίβας και περίληψη σωρού (συμπεριλαμβανομένων και λεπτομερειών που αφορούν τη συλλογή απορριμάτων σε γενιές, που μπορεί να είναι πολύ κατατοπιστικές) θα εμφανιστούν στο stderr/logs. Οι εντολές του JDK `jps`, `jstat`, `jstack`, `jmap` είναι χρήσιμες. [Τα εργαλεία SJK](https://github.com/aragozin/jvm-tools) είναι για πιο προχωρημένους. @@ -488,7 +488,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lsmod` και `modinfo`: εμφανίστε σε λίστα και προβάλλετε λεπτομέρειες για λειτουργικές μονάδες του πυρήνα -- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy "χρήσιμα" +- `fortune`, `ddate`και `sl`: ε, λοιπόν, εξαρτάται από το αν θεωρείτε τα τρένα με ατμομηχανή και τις ρήσεις του Zippy «χρήσιμα» ## Μόνο για OS X @@ -498,13 +498,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Αντιγράψτε την έξοδο οποιασδήποτε εντολής σε μια desktop εφαρμογή με `pbcopy` και επικολλήστε στην είσοδο με `pbpaste`. -- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε "Χρήση Option ως μετα-πλήκτρου". +- Για να ενεργοποιήσετε το πλήκτρο Option σε τερματικό OS X ως πλήκτρο alt (όπως χρησιμοποιείται στις παραπάνω εντολές όπως **alt-b**, **alt-f** κλπ.), ανοίξτε Προτιμήσεις -> Προφίλ -> Πληκτρολόγιο και επιλέξτε «Χρήση Option ως μετα-πλήκτρου». - Για να ανοίξετε ένα αρχείο με μια desktop εφαρμογή χρησιμοποιήστε `open` ή `open -a /Applications/Whatever.app`. - Spotlight: Αναζητήστε αρχεία με `mdfind` και εμφανίστε σε λίστα μεταδεδομένα (όπως τις πληροφορίες EXIF μιας φωτογραφίας) με `mdls`. -- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα "Εγχειρίδιο γενικών εντολών BSD". Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. +- Έχετε υπόψη σας ότι το OS X βασίζεται σε BSD Unix και πολλές εντολές (για παράδειγμα `ps`, `ls`, `tail`, `awk`, `sed`) έχουν μικρές διαφορές από το Linux, που έχει ευρέως επηρεαστεί από το System V-style Unix και τα εργαλεία GNU. Συνήθως μπορείτε να βρίσκετε τη διαφορά επισημαίνοντας ότι μια man σελίδα έχει την επικεφαλίδα «Εγχειρίδιο γενικών εντολών BSD». Σε ορισμένες περιπτώσεις μπορούν επίσης να εγκατασταθούν εκδόσεις GNU, (όπως οι `gawk` και `gsed` για τις GNU awk και sed). Αν γράφετε Bash scripts που στοχεύετε να εκτελούνται σε διάφορες πλατφόρμες, αποφύγετε τέτοιες εντολές (για παράδειγμα, έχετε υπόψη σας την Python ή `perl`) ή ελέγξτε προσεχτικά. - Για να πάρετε πληροφορίες για την έκδοση OS X χρησιμοποιήστε `sw_vers`. From a6760444927f1016486131f8d5472924fbffd458 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sat, 20 Feb 2016 10:57:31 -0800 Subject: [PATCH 265/337] Update rolses and credits. Also clarify that maintainers can be for a translation or a section (now in the case of Windows). --- AUTHORS.md | 53 ++++++++++++++++++++++++------------------ admin/authors-info.yml | 32 ++++++++++++++----------- 2 files changed, 48 insertions(+), 37 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 39b34d7..36530b3 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -3,6 +3,9 @@ This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. +Some contributors are also assigned roles as maintainers. +They have kindly agreed to review and help update future contributions for the translation or section they own. + * [0xCD](https://github.com/0xCD) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=0xCD)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3A0xCD) * [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) @@ -11,17 +14,17 @@ Contributors are listed in alphabetical order by GitHub login. * [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) * [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) -* [anna-d (anna-d)](https://github.com/anna-d) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translator and maintainer (el)_ +* [anna-d (anna-d)](https://github.com/anna-d) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translation maintainer (el)_ * [Chong Guo (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ * [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) * [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translation maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) -* [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) -* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) +* [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) +* [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) * [Chris Rhodes (crr0004)](https://github.com/crr0004) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004) * [Chelsea Voss (csvoss)](https://github.com/csvoss) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss) * [Daniel t. (danasmera)](https://github.com/danasmera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera) @@ -31,36 +34,37 @@ Contributors are listed in alphabetical order by GitHub login. * [Jamie Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) * [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) -* [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ -* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [8+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) +* [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translation maintainer (ja)_ +* [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) — _section maintainer (Windows)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) -* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translator and maintainer (fr)_ +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translation maintainer (fr)_ * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) * [Yessou Sami (fnzv)](https://github.com/fnzv) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fnzv)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afnzv) -* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translator and maintainer (it)_ +* [Francesco Malatesta (francescomalatesta)](https://github.com/francescomalatesta) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=francescomalatesta)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afrancescomalatesta) — _translation maintainer (it)_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ * [Grigory Rechistov (grigory-rechistov)](https://github.com/grigory-rechistov) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=grigory-rechistov)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrigory-rechistov) — _translator (ru)_ * [Konstantin Gribov (grossws)](https://github.com/grossws) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=grossws)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agrossws) -* [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) +* [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ -* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) +* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) * [Hyojin Kwak (hyojin)](https://github.com/hyojin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hyojin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahyojin) * [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [J Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) * [James Kolce (jameskolce)](https://github.com/jameskolce) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jameskolce)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajameskolce) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [130+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[24+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [133+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _orignal author and project maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) -* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) * [Colin Chan (kalgynirae)](https://github.com/kalgynirae) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae) * [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) * [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ * [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) -* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translator and maintainer (zh-Hant)_ +* [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translation maintainer (zh-Hant)_ * [Konstantin Ilyashenko (kostya13)](https://github.com/kostya13) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kostya13)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akostya13) * [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) +* [Lakshmipathi (Lakshmipathi)](https://github.com/Lakshmipathi) — [10+](https://github.com/jlevy/the-art-of-command-line/commits?author=Lakshmipathi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ALakshmipathi) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) -* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translator and maintainer (cs)_ +* [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translation maintainer (cs)_ * [Luke Yeager (lukeyeager)](https://github.com/lukeyeager) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lukeyeager)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alukeyeager) * [TAKAGI Masahiro (m-takagi)](https://github.com/m-takagi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=m-takagi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Am-takagi) * [Matjaž Lipuš (matjaz)](https://github.com/matjaz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=matjaz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amatjaz) @@ -68,14 +72,16 @@ Contributors are listed in alphabetical order by GitHub login. * [Michael Barlow (michaelbarlow7)](https://github.com/michaelbarlow7) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=michaelbarlow7)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amichaelbarlow7) * [Crisoforo Gaspar Hernández (mitogh)](https://github.com/mitogh) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mitogh)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amitogh) * [miuc (miuc)](https://github.com/miuc) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=miuc)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amiuc) -* [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) -* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translator and maintainer (pt)_ -* [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ +* [Michael Kwardakov (mkwardakov)](https://github.com/mkwardakov) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mkwardakov)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amkwardakov) +* [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) +* [慕冬亮 (mudongliang)](https://github.com/mudongliang) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mudongliang)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amudongliang) +* [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translation maintainer (pt)_ +* [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translation maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translation maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) -* [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translation maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) @@ -88,18 +94,19 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintainer (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translation maintainer (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) * [Thomas Lee (ThomasLee969)](https://github.com/ThomasLee969) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=ThomasLee969)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AThomasLee969) -* [René Ribaud (uggla)](https://github.com/uggla) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[9+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) +* [Timur (tim-teufel)](https://github.com/tim-teufel) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=tim-teufel)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Atim-teufel) +* [René Ribaud (uggla)](https://github.com/uggla) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=uggla)/[10+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Auggla) * [Sungjin Kang (ujuc)](https://github.com/ujuc) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=ujuc)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aujuc) — _translator (ko)_ -* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translator and maintainer (ko)_ +* [Ungsik Yun (Ungsik-Yun)](https://github.com/Ungsik-Yun) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=Ungsik-Yun)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AUngsik-Yun) — _translation maintainer (ko)_ * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) * [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ * [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) -* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) +* [Okunev Yu Dmitry (xaionaro)](https://github.com/xaionaro) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=xaionaro)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axaionaro) * [Chunyang Xu (xuchunyang)](https://github.com/xuchunyang) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=xuchunyang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Axuchunyang) — _translator (zh)_ * [Yasuhiroki (yasuhiroki)](https://github.com/yasuhiroki) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yasuhiroki)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayasuhiroki) * [Yiufung Cheong (yiufung)](https://github.com/yiufung) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=yiufung)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayiufung) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index dafe76e..d75223c 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -4,6 +4,9 @@ header: | This work is the result of the effort of many people around the world. Contributors are listed in alphabetical order by GitHub login. + Some contributors are also assigned roles as maintainers. + They have kindly agreed to review and help update future contributions for the translation or section they own. + footer: | Numbers link to commits/issues. For simplicity, this file is maintained only in English. @@ -18,32 +21,33 @@ exclude: ReadmeCritic roles: - jlevy: original author and maintainer - ceoaliongroo: translator and maintainer (es) + jlevy: orignal author and project maintainer + ceoaliongroo: translation maintainer (es) aaossa: translator (es) BishopWolf: translator (es) - doublemarket: translator and maintainer (ja) - Ungsik-Yun: translator and maintainer (ko) + doublemarket: translation maintainer (ja) + Ungsik-Yun: translation maintainer (ko) Snowcat8436: translator (ko) ujuc: translator (ko) hunkim: translator (ko) - niltonvasques : translator and maintainer (pt) + niltonvasques : translation maintainer (pt) vcvpaiva: translator (pt) - olegberman: translator and maintainer (ru) + olegberman: translation maintainer (ru) spmbt: translator (ru) osmero: translator (ru) grigory-rechistov: translator (ru) kastian: translator (ru) githubashto: translator (ru) - peterkokot: translator and maintainer (sl) - Psycho7: translator and maintainer (zh) + peterkokot: translation maintainer (sl) + Psycho7: translation maintainer (zh) xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translator and maintainer (uk) - francescomalatesta: translator and maintainer (it) - lsrom: translator and maintainer (cs) - ericguirbal: translator and maintainer (fr) + stepan0904: translation maintainer (uk) + francescomalatesta: translation maintainer (it) + lsrom: translation maintainer (cs) + ericguirbal: translation maintainer (fr) rverchere: translator (fr) - kevingo: translator and maintainer (zh-Hant) - anna-d: translator and maintainer (el) + kevingo: translation maintainer (zh-Hant) + anna-d: translation maintainer (el) + dspinellis: section maintainer (Windows) From 93cf69d67d79a1b076423fe830e18bc4f57632ab Mon Sep 17 00:00:00 2001 From: "L. Mountrakis" Date: Thu, 25 Feb 2016 01:17:25 +0100 Subject: [PATCH 266/337] FIX: Closed code quotes for "el" translation --- README-el.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-el.md b/README-el.md index ffbe974..dd7600c 100644 --- a/README-el.md +++ b/README-el.md @@ -185,9 +185,10 @@ - Έχετε υπόψη σας τον [περιορισμό των 128K](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) για τις γραμμές εντολών. Το σφάλμα «Η λίστα των ορισμάτων είναι πολύ μεγάλη» είναι κοινό, όταν γίνεται ταίριασμα με χαρακτήρα wildcard ενάντι μεγάλου αριθμού αρχείων. (Όταν συμβαίνει αυτό, εναλλακτικές όπως οι `find` και `xargs` μπορεί να βοηθήσουν.) - Για να κάνετε μια απλή πράξη αριθμητικής (και βέβαια γενικά για πρόσβαση σε Python), χρησιμοποιήστε τον διερμηνευτή `python`. Για παράδειγμα, -``` +```python >>> 2+3 5 +``` ## Επεξεργασία αρχείων και δεδομένων From 10d854ef44b11c2e2dbbf35316b52fa171f91bd9 Mon Sep 17 00:00:00 2001 From: Igor Veksler Date: Wed, 2 Mar 2016 19:28:18 -0600 Subject: [PATCH 267/337] add "Data Science at the Commande Line" link to More Resources --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a4324ab..80a0b81 100644 --- a/README.md +++ b/README.md @@ -561,7 +561,7 @@ These are items relevant *only* on OS X. - [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. - +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Creating Data Science pipelines within the commandline ## Disclaimer From d7a1ae1b3b31967028dec604d9cea9f0053b9e03 Mon Sep 17 00:00:00 2001 From: Carlos Mantilla Date: Thu, 3 Mar 2016 10:50:08 +0200 Subject: [PATCH 268/337] es: update translation. --- README-es.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README-es.md b/README-es.md index 5851894..e9a7b7d 100644 --- a/README-es.md +++ b/README-es.md @@ -13,6 +13,7 @@ - [One-liners](#one-liners) - [Obscuro pero útil](#osbcuro-pero-útil) - [Solo para OS X](#solo-para-os-x) +- [Solo para Windows](#solo-windows) - [Más recursos](#más-recursos) - [Advertencia](#advertencia) @@ -35,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. -- Está escrita para Linux, con excepción de la sección "[Solo para OS X](#os-x-only)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o MacOS (o incluso Cygwin). +- Está escrita para Linux, con excepción de la secciones "[Solo para OS X](#os-x-only)" y "[Solo para Windows](#solo-windows)". Muchos de los otros puntos aplican o pueden ser instalados en otros Unices o OS X (o incluso Cygwin). - Se centra en Bash interactivo, aunque muchos de los consejos aplican para otros shells y al Bash scripting por lo general. - Incluye tanto comandos "estándar" Unix así como los que requieren instalaciones de paquetes especiales -- siempre que sean lo suficientemente importantes para merecer su inclusión. @@ -65,6 +66,8 @@ Notas: - Administración básica de redes: `ip` o `ifconfig`, `dig`. +- Aprende y usa un sistema de control de versiones, por ejemplo `git`. + - Conoce bien las expresiones regulares y varias opciones (flags) para `grep`/`egrep`. Las opciones `-i`, `-o`, `-v`, `-A`, `-B` y `-C` son dignas de ser recordadas. - Aprende el uso de `apt-get`, `yum`, `dnf` o `pacman` (dependiendo de la distribución "distro") para buscar e instalar paquetes. Y asegúrate que tienes `pip` para instalar la herramienta de línea de comando basada en Python (un poco más abajo esta explicado como instalar vía `pip`). @@ -82,7 +85,9 @@ Notas: - Para ver los últimos comandos, `history`. También existen abreviaciones, tales como, `!$` (último argumento) y `!!` último comando, aunque son fácilmente remplazados con **ctrl-r** y **alt-.**. -- Para volver al directorio de trabajo previo: `cd -` +- Para volver al directorio principal con `cd`. Accede a los archivos relativos a tu directorio principal con el prefijo `~` (ej. `~/.bashrc`). En scripts `h`refierete al directorio principal con `$HOME`. + +- Para volver al directorio de trabajo previo: `cd -`. - Si estás a medio camino al escribir un comando pero cambias de opinión, presiona **alt-#** para agregar un `#` al principio y lo agrega como comentario (o usa **ctrl-a**, **#**, **enter**). Luego puedes regresar a este vía comando `history`. From 90540dcaa8bf826ea82f79529b24b1eee8287467 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 4 Mar 2016 08:16:14 -0800 Subject: [PATCH 269/337] Tweak language for #389. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80a0b81..aefeace 100644 --- a/README.md +++ b/README.md @@ -561,7 +561,7 @@ These are items relevant *only* on OS X. - [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. -- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Creating Data Science pipelines within the commandline +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): More commands and tools helpful for doing data science, from the book of the same name ## Disclaimer From d14eb3ff5826be8b0a0bb52faa9e1942ff61874e Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Fri, 4 Mar 2016 17:59:11 +0100 Subject: [PATCH 270/337] fr: Synchronize the translation --- README-fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index bbdc26b..42a9454 100644 --- a/README-fr.md +++ b/README-fr.md @@ -660,7 +660,7 @@ C'est particulièrement utile pour invoquer des programmes Windows dans les scri - [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. - +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools) : d'autres outils en ligne de commande, utiles en science des données et discutés dans le livre du même nom. ## Avertissement From cdcc51d5587bff1de7cc4ae6e480557f16fdafb9 Mon Sep 17 00:00:00 2001 From: Evan Wong Date: Sat, 5 Mar 2016 18:27:40 +0800 Subject: [PATCH 271/337] zh: Sync with the English version, line by line --- README-zh.md | 104 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 82 insertions(+), 22 deletions(-) diff --git a/README-zh.md b/README-zh.md index c1bd688..8b4cded 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,11 +1,12 @@ 🌍 *[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + # 命令行的艺术 [![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) -- [必读](#必读) +- [前言](#前言) - [基础](#基础) - [日常使用](#日常使用) - [文件及数据处理](#文件及数据处理) @@ -13,27 +14,29 @@ - [单行脚本](#单行脚本) - [冷门但有用](#冷门但有用) - [仅限 OS X 系统](#仅限-os-x-系统) +- [仅限 Windows 系统](#仅限windows系统) - [更多资源](#更多资源) - [免责声明](#免责声明) -- [授权条款](#授权条款) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 -这篇文章是[许多作者和译者](AUTHORS.md)共同的成果。这里的大部分内容 +这篇文章是[许多作者和译者](AUTHORS.md)共同的成果。 +这里的部分内容 [首次](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [出现](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) -于 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know),但考虑到这里的人们都具有学习的天赋且乐于接受别人的建议,使用 Github 来做这件事是更佳的选择。如果你在本文中发现了错误或者存在可以改善的地方,请果断提交 Issue 或 Pull Request!(当然在提交前请看一下必读节和已有的 PR/issue)。 +于 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +但已经迁移到了 Github,并由众多高手做出了许多改进。 +如果你在本文中发现了错误或者存在可以改善的地方,请[**贡献你的一份力**](/CONTRIBUTING.md)。 - -## 必读 +## 前言 涵盖范围: - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 -- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)节。其它节中的大部分内容都适用于其它 Unix 系统或 MacOS 系统,甚至 Cygwin。 +- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)和[仅限 Windows 系统](#仅限windows系统)的部分。其它节中的大部分内容都适用于其它 Unix 系统或 OS X,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -63,6 +66,8 @@ - 学习基本的网络管理:`ip` 或 `ifconfig`,`dig`。 +- 学习并使用一种版本控制管理系统,例如 `git`。 + - 熟悉正则表达式,以及 `grep`/`egrep` 里不同参数的作用,例如 `-i`,`-o`,`-v`,`-A`,`-B` 和 `-C`,这些参数是值得学习并掌握的。 - 学会使用 `apt-get`,`yum`,`dnf` 或 `pacman` (取决于你使用的 Linux 发行版)来查找或安装软件包。并确保你的环境中有 `pip` 来安装基于 Python 的命令行工具 (接下来提到的部分程序使用 `pip` 来安装会很方便)。 @@ -74,12 +79,15 @@ - 在 Bash 中,可以使用 **ctrl-w** 删除你键入的最后一个单词,使用 **ctrl-u** 删除整行,使用 **alt-b** 和 **alt-f** 以单词为单位移动光标,使用 **ctrl-a** 将光标移至行首,使用 **ctrl-e** 将光标移至行尾,使用 **ctrl-k** 删除光标至行尾的所有内容,使用 **ctrl-l** 清屏。键入 `man readline` 查看 Bash 中的默认快捷键,内容很多。例如 **alt-.** 循环地移向前一个参数,以及 **alt-*** 展开通配符。 + - 你喜欢的话,可以键入 `set -o vi` 来使用 vi 风格的快捷键,而 `set -o emacs` 可以把它改回来。 - 为了方便地键入长命令,在设置你的编辑器后(例如 `export EDITOR=vim`),键入 **ctrl-x** **ctrl-e** 会打开一个编辑器来编辑当前命令。在 vi 模式下则键入 **escape-v** 实现相同的功能。 - 键入 `history` 查看命令行历史记录。其中有许多缩写,例如 `!$`(最后键入的参数)和 `!!`(最后键入的命令),尽管通常被 **ctrl-r** 和 **alt-.** 取代。 +- 要进入家目录可以用 `cd`。要访问你的家目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代家目录。 + - 回到上一个工作路径:`cd -` - 如果你输入命令的时候改变了主意,按下 **alt-#** 来在行首添加 `#`,或者依次按下 **ctrl-a**, **#**, **enter**。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。 @@ -90,6 +98,7 @@ cat hosts | xargs -I{} ssh root@{} hostname ``` + - `pstree -p` 有助于展示进程树。 - 使用 `pgrep` 和 `pkill` 根据名字查找进程或发送信号(`-f` 参数通常有用)。 @@ -104,7 +113,15 @@ - 使用 `uptime` 或 `w` 来查看系统已经运行多长时间。 -- 使用 `alias` 来创建常用命令的快捷形式。例如:`alias ll='ls -latr'` 使你可以方便地执行`ls -latr`命令。 +- 使用 `alias` 来创建常用命令的快捷形式。例如:`alias ll='ls -latr'` 创建了一个新的命令别名 `ll`。 + +- 把别名、shell 选项和常用函数保存在 `~/.bashrc`,然后[安排登陆 shell 来读取](http://superuser.com/a/183980/7106)。这样你就可以在所有 shell 会话中使用你的设定。 + +- 把环境变量的设定以及登陆时要执行的命令保存在 `~/.bash_profile`。对于从图形界面启动的,以及 `cron` 工作的 shell,需要单独配置。 + +- 要在几台电脑中同步你的配置文件(例如 `.bashrc` 和 `.bash_profile`),可以用 Git。 + +- 当变量和文件名中包含空格的时候要格外小心。Bash 变量要用引号括起来,比如 `"FOO"`。尽量使用 `-0` 或 `-print0` 选项以便用空字符来分隔文件名,例如 `locate -0 pattern | xargs -0 ls -al` 或 `find / -print0 -type d | xargs -0 ls -al`。如果 for 循环中循环访问的文件名含有空格,只需用 `IFS=$'\n'` 把内部字段分隔符设为换行符。 - 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -u` 来检查是否使用了未赋值的变量,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息: ```bash @@ -167,6 +184,15 @@ - 以某种权限执行命令,使用`sudo`(root 权限)或`sudo -u`(其他用户)。使用`su`或者`sudo bash`来启动一个以对应用户权限运行的 shell。使用`su -`模拟其他用户的登录。 +- 了解命令行的 [128K 限制](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong)。使用通配符匹配大量文件名时,常会遇到“Argument list too long”的错误信息。(这种情况下换用 `find` 或 `xargs` 通常可以解决。) + +- 要实现基本的计算器功能(或者一般地使用 Python),可以使用 `python` 解释器。例如: +``` +>>> 2+3 +5 +``` + + ## 文件及数据处理 - 在当前路径下通过文件名定位一个文件,`find . -iname '*something*'`(或类似的)。在所有路径下通过文件名查找文件,使用 `locate something` (但请记住 `updatedb` 可能没有对最近新建的文件建立索引)。 @@ -197,6 +223,8 @@ - 了解语言环境对许多命令行工具的微妙影响,包括排序的顺序和性能。大多数 Linux 的安装过程会将 `LANG` 或其他有关的变量设置为符合本地的设置。意识到当你改变语言环境时,排序的结果可能会改变。明白国际化可能会使 sort 或其他命令运行效率下降*许多倍*。某些情况下(例如集合运算)你可以放心的使用 `export LC_ALL=C` 来忽略掉国际化并使用基于字节的顺序。 +- 你可以单独指定某一条命令的环境,只需在调用时把环境变量设定放在前面,例如 `TZ=Pacific/Fiji date`。 + - 了解 `awk` 和 `sed` 关于数据的简单处理的用法。例如,将文本文件中第三列的所有数字求和:`awk '{ x += $3 } END { print x }'`. 这可能比同等作用的 Python 代码快三倍且代码量少三倍。 - 替换一个或多个文件中出现的字符串: @@ -206,15 +234,15 @@ - 使用 [`repren`](https://github.com/jlevy/repren) 来批量重命名,或是在多个文件中搜索替换。(有些时候 `rename` 命令也可以批量重命名,但要注意,它在不同 Linux 发行版中的功能并不完全一样。) ```sh - # Full rename of filenames, directories, and contents foo -> bar: + # 将文件、目录和内容全部重命名 foo -> bar: repren --full --preserve-case --from foo --to bar . - # Recover backup files whatever.bak -> whatever: + # 还原所有备份文件 whatever.bak -> whatever: repren --renames --from '(.*)\.bak' --to '\1' *.bak - # Same as above, using rename, if available: + # 用 rename 实现上述功能(若可用): rename 's/\.bak$//' *.bak ``` -- 根据 man 页面的描述,`rsync` 真的是一个快速且非常灵活的文件复制工具。它通常被用于机器间的同步,但在本地也同样有用。它同时也是删除大量文件的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)之一: +- 根据 man 页面的描述,`rsync` 真的是一个快速且非常灵活的文件复制工具。它通常被用于机器间的同步,但在本地也同样有用。在安全限制允许下,用 `rsync` 代替 `scp` 可以实现续传,而不用重新从头开始。它同时也是删除大量文件的[最快方法](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html)之一: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -244,10 +272,17 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 使用 `zless`,`zmore`,`zcat` 和 `zgrep` 对压缩过的文件进行操作。 +- 文件属性可以通过 `chattr` 进行设置,它比文件权限更加底层。例如,为了保护文件不被意外删除,可以使用不可修改标记:`sudo chattr +i /critical/directory/or/file` + +- 使用 `getfacl` 和 `setfacl` 以保存和恢复文件权限。例如: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## 系统调试 -- `curl` 和 `curl -I` 可以便捷地被应用于 web 调试中,它们的好兄弟 `wget` 也可以,或者是更潮的 [`httpie`](https://github.com/jakubroztocil/httpie)。 +- `curl` 和 `curl -I` 可以便捷地被应用于 web 调试中,它们的好兄弟 `wget` 也可以,或者是更潮的 [`httpie`](https://github.com/jkbrzt/httpie)。 - 使用 `iostat`、`netstat`、`top` (`htop` 更佳)和 `dstat` 去获取硬盘、cpu 和网络的状态。熟练掌握这些工具可以使你快速的对系统的当前状态有一个大概的认识。 @@ -279,12 +314,15 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 当调试一些之前出现的问题的时候,`sar` 非常有用。它展示了 cpu、内存以及网络等的历史数据。 -- 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 +- 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 - 查看你当前使用的系统,使用 `uname` , `uname -a` (Unix/kernel 信息) 或者 `lsb_release -a` (Linux 发行版信息)。 - 无论什么东西工作得很欢乐时试试 `dmesg`(可能是硬件或驱动问题)。 +- 如果你删除了一个文件,但通过 `du` 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## 单行脚本 @@ -299,6 +337,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 使用 `grep . *`(每行都会附上文件名)或者 `head -100 *`(每个文件有一个标题)来阅读检查目录下所有文件的内容。这在检查一个充满配置文件的目录(如 `/sys`、`/proc`、`/etc`)时特别好用。 + - 计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍): ```sh awk '{ x += $3 } END { print x }' myfile @@ -314,6 +353,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` +- 要连续地监测变化,可以使用 `watch`,例如检查某个文件夹中文件的改变,可以用 `watch -d -n 2 'ls -rtlh | tail'`;或者在排查 WiFi 设置故障时要监测网络设置的更改,可以用 `watch -d -n 2 ifconfig`。 + - 运行这个函数从这篇文档中随机获取一条技巧(解析 Markdown 文件并抽取项目): ```sh function taocl() { @@ -326,7 +367,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir } ``` - ## 冷门但有用 - `expr`:计算表达式或正则匹配 @@ -383,6 +423,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `time`:执行命令,并计算执行时间 +- `timeout`:在指定时长范围内执行命令,并在规定时间结束后停止进程 + - `lockfile`:使文件只能通过 `rm -f` 移除 - `logrotate`: 切换、压缩以及发送日志文件 @@ -475,33 +517,51 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `fortune`,`ddate` 和 `sl`:额,这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用” + ## 仅限 OS X 系统 -以下是*仅限于* MacOS 系统的技巧 +以下是*仅限于* OS X 系统的技巧 -- 用 `brew` (Homebrew)或者 `port` (MacPorts)进行包管理。这些可以用来在 Mac 系统上安装以上的大多数命令。 +- 用 `brew` (Homebrew)或者 `port` (MacPorts)进行包管理。这些可以用来在 OS X 系统上安装以上的大多数命令。 - 用 `pbcopy` 复制任何命令的输出到桌面应用,用 `pbpaste` 粘贴输入。 -- 若要在 Mac OS 终端中将 Option 键视为 alt 键(例如在上面介绍的 **alt-b**, **alt-f** 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。 +- 若要在 OS X 终端中将 Option 键视为 alt 键(例如在上面介绍的 **alt-b**, **alt-f** 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。 - 用 `open` 或者 `open -a /Applications/Whatever.app` 使用桌面应用打开文件。 - Spotlight: 用 `mdfind` 搜索文件,用 `mdls` 列出元数据(例如照片的 EXIF 信息)。 -- 注意 MacOS 系统是基于 BSD UNIX 的,许多命令(例如 `ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 "BSD General Commands Manual" 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如 `gawk` 和 `gsed` 对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者 `perl` )或者经过仔细的测试。 +- 注意 OS X 系统是基于 BSD UNIX 的,许多命令(例如 `ps`,`ls`,`tail`,`awk`,`sed`)都和 Linux 中有些微的不同,这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 "BSD General Commands Manual" 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装(例如 `gawk` 和 `gsed` 对应 GNU 中的 awk 和 sed )。如果要写跨平台的 Bash 脚本,避免使用这些命令(例如,考虑 Python 或者 `perl` )或者经过仔细的测试。 -- 用 `sw_vers` 获取 MacOS 的版本信息。 +- 用 `sw_vers` 获取 OS X 的版本信息。 +## 仅限 Windows 系统 + +- 要在 Microsoft Windows 中使用 Unix shell,可以安装 [Cygwin](https://cygwin.com/)。本文档中介绍的大多数内容都将适用。 + +- 通过 Cygwin 的包管理器来安装额外的 Unix 程序。 + +- 使用 `mintty` 作为你的命令行窗口。 + +- 要访问 Windows 剪贴板,可以通过 `/dev/clipboard`。 + +- 运行 `cygstart` 以通过默认程序打开一个文件。 + +- 要访问 Windows 注册表,可以使用 `regtool`。 + +- 注意 Windows 驱动器路径 `C:\` 在 Cygwin 中用 `/cygdrive/c` 代表,而 Cygwin 的 `/` 在 Windows 中显示在 `C:\cygwin`。要转换 Cygwin 和 Windows 风格的路径可以用 `cygpath`。这在需要调用 Windows 程序的脚本里很有用。 + +- 学会使用 `wmic`,你就可以从命令行执行大多数 Windows 系统管理任务,并编成脚本。 ## 更多资源 - [awesome-shell](https://github.com/alebcay/awesome-shell):一份精心组织的命令行工具及资源的列表。 -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line):一份针对 Mac OS 命令行的更深入的指南。 +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line):一份针对 OS X 命令行的更深入的指南。 - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/):为了编写更好的脚本文件。 - [shellcheck](https://github.com/koalaman/shellcheck):一个静态 shell 脚本分析工具,本质上是 bash/sh/zsh 的 lint。 - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html):有关如何在 shell 脚本里正确处理文件名的细枝末节。 - +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools):用于数据科学的一些命令和工具,摘自同名书籍。 ## 免责声明 From 8c40d83b7ddecb081bf9febc8f37f2d89edf75b9 Mon Sep 17 00:00:00 2001 From: Michael Kwardakov Date: Mon, 7 Mar 2016 10:32:39 +0300 Subject: [PATCH 272/337] Added link to Data Science --- README-ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-ru.md b/README-ru.md index 8bde804..7aac649 100644 --- a/README-ru.md +++ b/README-ru.md @@ -558,10 +558,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки. - [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Более детальные гайды по терминалу в OS X. -- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) Для того, чтобы писать шелл-скрипты лучше. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/): Для того, чтобы писать шелл-скрипты лучше. - [shellcheck](https://github.com/koalaman/shellcheck): Статический анализатор скриптов. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Сборник мелочей о правильной обработке имен файлов в скриптах. - +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Обзор команд и утилит, используемых для обработки данных, из одноименной книги ## Дисклеймер From c15908791af7fedbded6479debc112b6bcbc528a Mon Sep 17 00:00:00 2001 From: Evan Wong Date: Mon, 7 Mar 2016 20:46:42 +0800 Subject: [PATCH 273/337] fix broken link for the Windows section --- README-zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-zh.md b/README-zh.md index 8b4cded..6f443b9 100644 --- a/README-zh.md +++ b/README-zh.md @@ -14,7 +14,7 @@ - [单行脚本](#单行脚本) - [冷门但有用](#冷门但有用) - [仅限 OS X 系统](#仅限-os-x-系统) -- [仅限 Windows 系统](#仅限windows系统) +- [仅限 Windows 系统](#仅限-windows-系统) - [更多资源](#更多资源) - [免责声明](#免责声明) @@ -36,7 +36,7 @@ 涵盖范围: - 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 -- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)和[仅限 Windows 系统](#仅限windows系统)的部分。其它节中的大部分内容都适用于其它 Unix 系统或 OS X,甚至 Cygwin。 +- 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)和[仅限 Windows 系统](#仅限-windows-系统)的部分。其它节中的大部分内容都适用于其它 Unix 系统或 OS X,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 From fe4747b35bb7dc4544812d9623a765f6c4445b45 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 12 Mar 2016 21:57:48 +0100 Subject: [PATCH 274/337] sl: Update translation --- README-sl.md | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/README-sl.md b/README-sl.md index aaf2034..a1e043e 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,7 @@ 🌍 *[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + # Umetnost ukazne vrstice [![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -13,6 +14,7 @@ - [V eni vrstici](#v-eni-vrstici) - [Nepregledno vendar uporabno](#nepregledno-vendar-uporabno) - [Samo za OS X](#samo-za-os-x) +- [Samo za Windows](#samo-za-windows) - [Več virov](#več-virov) - [Pogoji uporabe](#pogoji-uporabe) @@ -34,7 +36,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 OS X (ali celo Cygwin). +- To je napisano za Linux z izjemo sekcij "[Samo za OS X](#samo-za-os-x)" in "[Samo za Windows](#samo-za-windows)". 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. @@ -182,6 +184,14 @@ Opombe: - Za pogon ukaza s privilegiji, uporabite `sudo` (za root) ali `sudo -u` (za drugega uporabnika). Uporabite `su` ali `sudo bash`, da dejansko poženete lupino kot ta uporabnik. Uporabite `su -`, da simulirate svežo prijavo kot root ali drug uporabnik. +- Spoznajte [omejitev 128K](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) v ukaznih vrsticah. Ta napaka "Argument list too long" je pogosta, ko se nadomestni znak ujema z velikim številom datotek. (Ko se to zgodi, lahko pomagajo alternative kot sta `find` in `xargs`.) + +- Za osnovni kalkulator (in seveda splošni dostop do Python-a) uporabite interpreter `python`. Na primer, +``` +>>> 2+3 +5 +``` + ## Procesiranje datotek in podatkov @@ -232,7 +242,7 @@ Opombe: rename 's/\.bak$//' *.bak ``` -- Kot pravi stran vodiča, je `rsync` resnično hiter in izredno vsestransko orodje kopiranja datotek. Znano je po sinhronizaciji med napravami vendar je enakovredno uporaben tudi lokalno. Je tudi eden izmed [najhitrejših načinov](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) za izbris velikega števila datotek: +- Kot pravi stran vodiča, je `rsync` resnično hiter in izredno vsestransko orodje kopiranja datotek. Znano je po sinhronizaciji med napravami vendar je enakovredno uporaben tudi lokalno. Ko omejitve varnosti omogočajo, uporaba `rsync` namesto `scp` omogoča povrnitev prenosa brez ponovnega zagona od začetka. Je tudi eden izmed [najhitrejših načinov](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) za izbris velikega števila datotek: ```sh mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ``` @@ -262,6 +272,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Uporabite `zless`, `zmore`, `zcat` in `zgrep` za operiranje na kompresiranih datotekah. +- Atributi datotek so nastavljivi preko `chattr` in ponujajo nizko nivojsko alternativo pravicam datotek. Na primer za zaščito pred ponesrečenim brisanjem datoteke se uporabi nespremenljiva zastavica: `sudo chattr +i /critical/directory/or/file` + +- Uporabite `getfacl` in `setfacl`, da shranite in povrnete pravice datotek. Na primer: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` + ## Sistemsko razhroščevanje @@ -293,7 +311,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Vedite, kako se povezati k procesu v pogonu z `gdb` in dobiti njegove sledi skladovnice. -- Uporabite `/proc`. Včasih je izjemno v pomoč, ko se razhroščuje probleme v živo. Primeri: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, ``/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kjer je `xxx` id procesa ali pid). +- Uporabite `/proc`. Včasih je izjemno v pomoč, ko se razhroščuje probleme v živo. Primeri: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, ``/proc/xxx/cwd`,asdf `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kjer je `xxx` id procesa ali pid). - Ko se razhroščuje, zakaj je šlo nekaj narobe v preteklosti, je lahko zelo uporaben `sar`. Prikazuje statistiko zgodovine na procesorju, spominu, omrežju itd. @@ -303,6 +321,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Uporabite `dmesg` kadarkoli gre nekaj dejansko čudno (lahko je težava strojne opreme ali gonilnika). +- Če izbrišete datoteko in se prostor na voljo ne poveča, kot je pričakovano s poročilom `du`, preverite ali datoteko uporablja proces: +`lsof | grep deleted | grep "filename-of-my-big-file"` ## V eni vrstici @@ -516,6 +536,23 @@ To so elementi pomembni *samo* za OS X. - Da dobite informacije o izdaji OS X, uporabite `sw_vers`. +## Samo za Windows + +- Dostopajte do moči lupine Unix na Microsoft Windows z namestitvijo [Cygwin](https://cygwin.com/). Večina stvari opisanih v tem dokumentu bo delala "Out of the Box". + +- Namestite dodatne programe Unix z upraviteljem paketov Cygwin. + +- Uporabite `mintty` za vaše okno ukazne vrstice. + +- Do odložišča Windows dostopajte preko `/dev/clipboard`. + +- Poženite `cygstart`, da odprete poljubno datoteko preko njene registrirane aplikacije. + +- Do registra Windows dostopajte z `regtool`. + +- Upoštevajte, da pot diska Windows `C:\` postane v Cygwin `/cygdrive/c` in Cigwin-ov `/` se na Windows pojavi pod `C:\cygwin`. Pretvorite med Cygwin in Windows stilom poti datotek s `cygpath`. To je najbolj uporabno v skriptah, ki se sklicujejo na programe Windows. + +- Večino opravil sistemske administracije Windows iz ukazne vrstice lahko izvajate tako, da se naučite uporabljati `wmic`. ## Več virov @@ -524,7 +561,7 @@ To so elementi pomembni *samo* za OS X. - [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. - +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Več koristnih ukazov in orodij za uporabo v znanosti podatkov iz knjige z enakim imenom. ## Pogoji uporabe From 1f6491d0a469c62bc5ffaf67408b212653373f12 Mon Sep 17 00:00:00 2001 From: gaga5lala Date: Sat, 19 Mar 2016 13:01:26 +0800 Subject: [PATCH 275/337] zh-hant: Translate the section "Windows only" --- README-zh-Hant.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 4e9e69d..a214578 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -13,6 +13,7 @@ - [單行指令碼](#單行指令碼) - [冷門但有用](#冷門但有用) - [僅限 OS X 系統](#僅限-os-x-系統) +- [僅限 Windows 系統](#僅限-windows-系统) - [更多資源](#更多資源) - [免責聲明](#免責聲明) - [授權條款](#授權條款) @@ -33,7 +34,7 @@ 涵蓋範圍: - 這篇文章對剛接觸命令列的新手以及具有命令列使用經驗的人都有用處。本文致力於做到*覆蓋面廣*(盡量包括一切重要的內容),*具體*(給出最常見的具體的例子)以及*簡潔*(避免不必要的,或是可以在其他地方輕鬆查到的細枝末節)。每個技巧都是在特定情境下必備的,或是能顯著減省時間的。 -- 本文為 Linux 所寫,除​​了 [僅限OS X 系統](#僅限-os-x-系統) 章節外,其它章節中的大部分內容都適用於其它 Unix 系統或 MacOS 系統,甚至 Cygwin。 +- 本文為 Linux 所寫,除了 [僅限OS X 系統](#僅限-os-x-系統) 和 [僅限 Windows 系統](#僅限-windows-系统) 章節外,其它章節中的大部分內容都適用於其它 Unix 系統或 MacOS 系統,甚至 Cygwin。 - 本文關注於互動式 Bash,儘管很多技巧也適用於其他 shell 或 Bash 指令碼。 - 本文包括了“標準的” Unix 命令和需要安裝特定套件的命令,只要它們足夠重要。 @@ -492,6 +493,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用 `sw_vers` 獲取 MacOS 的版本資訊。 +## 僅限 Windows 系统 + +- 要在 Microsoft Windows 中使用 Unix shell,可以安装 [Cygwin](https://cygwin.com/)。本文件中介绍的大多數内容都將適用。 + +- 透過 Cygwin 的套件管理器來安裝額外的 Unix 指令。 + +- 使用 `mintty` 作為你的命令列視窗。 + +- 要訪問 Windows 剪貼簿,可以透過 `/dev/clipboard`。 + +- 執行 `cygstart` 以透過預設程式打開一個文件。 + +- 要訪問 Windows 登錄檔,可以使用 `regtool`。 + +- 注意 Windows 磁碟機路徑 `C:\` 在 Cygwin 中用 `/cygdrive/c` 代表,而 Cygwin 的 `/` 在 Windows 中顯示在 `C:\cygwin`。要轉換 Cygwin 和 Windows 風格的路徑可以用 `cygpath`。這在需要使用 Windows 指令的脚本裡很有用。 + +- 學會使用 `wmic`,你就可以從命令列執行大多數 Windows 系統管理任務,並編成腳本。 ## 更多資源 From a7eef7d92d9dd7f92297fe17ab995989f22719e4 Mon Sep 17 00:00:00 2001 From: Colin Wang <260790736@qq.com> Date: Sun, 27 Mar 2016 15:14:33 +0800 Subject: [PATCH 276/337] =?UTF-8?q?docs:=20change=20some=20':'=20to=20'?= =?UTF-8?q?=EF=BC=9A'=20so=20it=20can=20keep=20in=20line=20whit=20the=20ot?= =?UTF-8?q?hers.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-zh.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6f443b9..aa1e70c 100644 --- a/README-zh.md +++ b/README-zh.md @@ -427,7 +427,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `lockfile`:使文件只能通过 `rm -f` 移除 -- `logrotate`: 切换、压缩以及发送日志文件 +- `logrotate`: 切换、压缩以及发送日志文件 - `watch`:重复运行同一个命令,展示结果并高亮有更改的部分 @@ -485,9 +485,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `iostat`:硬盘使用状态 -- `mpstat`: CPU 使用状态 +- `mpstat`: CPU 使用状态 -- `vmstat`: 内存使用状态 +- `vmstat`: 内存使用状态 - `htop`:top 的加强版 @@ -505,7 +505,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `dmesg`:引导及系统错误信息 -- `sysctl`: 在内核运行时动态地查看和修改内核的运行参数 +- `sysctl`: 在内核运行时动态地查看和修改内核的运行参数 - `hdparm`:SATA/ATA 磁盘更改及性能分析 From 63221605413b2a78c816a4d017e433cbbce990d3 Mon Sep 17 00:00:00 2001 From: senhtry Date: Thu, 7 Apr 2016 17:37:18 +0800 Subject: [PATCH 277/337] change some mouthful of words in chinese --- README-zh.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README-zh.md b/README-zh.md index aa1e70c..7a6866b 100644 --- a/README-zh.md +++ b/README-zh.md @@ -29,28 +29,28 @@ [出现](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) 于 [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), 但已经迁移到了 Github,并由众多高手做出了许多改进。 -如果你在本文中发现了错误或者存在可以改善的地方,请[**贡献你的一份力**](/CONTRIBUTING.md)。 +如果你在本文中发现了错误或者存在可以改善的地方,请[**贡献你的一份力量**](/CONTRIBUTING.md)。 ## 前言 涵盖范围: -- 这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子)以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 +- 这篇文章对刚接触命令行的新手,以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子),以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 - 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)和[仅限 Windows 系统](#仅限-windows-系统)的部分。其它节中的大部分内容都适用于其它 Unix 系统或 OS X,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 注意事项: -- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`,`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 +- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接地包含在引用页里。聪明机智的你,如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`,`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 - 使用 [Explainshell](http://explainshell.com/) 去获取相关命令、参数、管道等内容的解释。 ## 基础 -- 学习 Bash 的基础知识。具体来说,输入 `man bash` 并至少全文浏览一遍; 它很简单并且不长。其他的 shell 可能很好用,但 Bash 功能强大且几乎所有情况下都是可用的 ( *只*学习 zsh,fish 或其他的 shell 的话,在你自己的电脑上会显得很方便,但在很多情况下会限制你,比如当你需要在服务器上工作时)。 +- 学习 Bash 的基础知识。具体来说,输入 `man bash` 并至少全文浏览一遍; 它很简单并且不长。其他的 shell 可能很好用,但 Bash 功能强大到几乎所有情况下都是可用的 ( *只*学习 zsh,fish 或其他的 shell 的话,在你自己的电脑上会显得很方便,但在很多情况下会限制你,比如当你需要在服务器上工作时)。 -- 学习并掌握至少一个基于文本的编辑器。通常 Vim (`vi`) 会是你最好的选择,因为在终端里进行随机编辑 Vim 真的毫无敌手,哪怕是 Emacs、某大型 IDE 甚至时下非常流行的编辑器。 +- 学习并掌握至少一个基于文本的编辑器。通常 Vim (`vi`) 会是你最好的选择,因为在终端里进行随机编辑,Vim 真的毫无敌手,哪怕是 Emacs、某大型 IDE 甚至时下非常流行的编辑器。 - 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。 @@ -86,11 +86,11 @@ - 键入 `history` 查看命令行历史记录。其中有许多缩写,例如 `!$`(最后键入的参数)和 `!!`(最后键入的命令),尽管通常被 **ctrl-r** 和 **alt-.** 取代。 -- 要进入家目录可以用 `cd`。要访问你的家目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代家目录。 +- 要进入home目录可以用 `cd`。要访问你的home目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代home目录。 - 回到上一个工作路径:`cd -` -- 如果你输入命令的时候改变了主意,按下 **alt-#** 来在行首添加 `#`,或者依次按下 **ctrl-a**, **#**, **enter**。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。 +- 如果你输入命令的时候改变了主意,按下 **alt-#** 在行首添加 `#`,或者依次按下 **ctrl-a**, **#**, **enter**。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。 - 使用 `xargs` ( 或 `parallel`)。他们非常给力。注意到你可以控制每行参数个数(`-L`)和最大并行数(`-P`)。如果你不确定它们是否会按你想的那样工作,先使用 `xargs echo` 查看一下。此外,使用 `-I{}` 会很方便。例如: ```bash @@ -123,7 +123,7 @@ - 当变量和文件名中包含空格的时候要格外小心。Bash 变量要用引号括起来,比如 `"FOO"`。尽量使用 `-0` 或 `-print0` 选项以便用空字符来分隔文件名,例如 `locate -0 pattern | xargs -0 ls -al` 或 `find / -print0 -type d | xargs -0 ls -al`。如果 for 循环中循环访问的文件名含有空格,只需用 `IFS=$'\n'` 把内部字段分隔符设为换行符。 -- 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能的使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -u` 来检查是否使用了未赋值的变量,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息: +- 在 Bash 脚本中,使用 `set -x` 去调试输出,尽可能地使用严格模式,使用 `set -e` 令脚本在发生错误时退出而不是继续运行,使用 `set -u` 来检查是否使用了未赋值的变量,使用 `set -o pipefail` 严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用 `trap`。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息: ```bash set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR @@ -166,7 +166,7 @@ ControlPersist yes ``` -- 部分其他的关于 ssh 的选项是安全敏感且应当小心启用的。例如在可信任的网络中:`StrictHostKeyChecking=no`,`ForwardAgent=yes` +- 部分其他的关于 ssh 的选项是安全敏感的,而且应当小心启用。例如在可信任的网络中:`StrictHostKeyChecking=no`,`ForwardAgent=yes` - 考虑使用 [`mosh`](https://mosh.mit.edu/) 作为 ssh 的替代品,它使用 UDP 协议。 From c35f396aa47491ca38019edecd8371056dcfe2fe Mon Sep 17 00:00:00 2001 From: senhtry Date: Thu, 7 Apr 2016 17:49:15 +0800 Subject: [PATCH 278/337] change some mouthful of words in chinese --- README-zh.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 7a6866b..56b6d04 100644 --- a/README-zh.md +++ b/README-zh.md @@ -42,7 +42,8 @@ 注意事项: -- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接地包含在引用页里。聪明机智的你,如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`,`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 +- 为了能在一页内展示尽量多的东西,一些具体的信息会被间接地包含在引用页里。聪明机智的你,如果掌握了使用 Google 搜索引擎的基本思路与命令,那么你将可以查阅到更多的详细信息。使用 `apt-get`,`yum`,`dnf`,`pacman`, +`pip` 或 `brew`(以及其它合适的包管理器)来安装新程序。 - 使用 [Explainshell](http://explainshell.com/) 去获取相关命令、参数、管道等内容的解释。 From 44e685a0a3e6e9a2c5bd33968417dafaf66e8243 Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Mon, 11 Apr 2016 11:26:51 +0900 Subject: [PATCH 279/337] =?UTF-8?q?Replaces=20usage=20of=20=D0=92=D0=B8=20?= =?UTF-8?q?->=20=D0=B2=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to Ukrainian tradition capitalized version of You (Ви) is only used in person-to-person writings and is notused in publications or public address. --- README-uk.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README-uk.md b/README-uk.md index 0523945..c119235 100644 --- a/README-uk.md +++ b/README-uk.md @@ -20,7 +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) -Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують Вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в 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, де знаходяться дуже талановиті люди які зробили багато удосконалень. @@ -38,14 +38,14 @@ Нотатки: -- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. ## Основи -- Вивчіть основи 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. - Дізнайтеся побільше про `*` (а також `?` і `[`...`]`), кавички, а також різницю між подвійними `"` і одинарними `'` кавичками. @@ -60,15 +60,15 @@ ## Щоденне використання -- Використовуйте клавішу таб в 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` що б повернути налаштування). +- Використовуйте клавішу табуляції (**Tab**) в 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`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` -- Якщо Ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. -- Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: +- Якщо ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. +- Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -81,10 +81,10 @@ - Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. - Команда `uptime` or `w` показує як довго працює система. - Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. -- Збережіть свої синоніми (aliases), налаштування і фунції які Ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх Ваших сесіях shell. -- Синхронізуйте Ваші конфігураційні файли (наприклад `.bashrc` та `.bash_profile`) між різними комп'ютерами за допомогою Git. +- Збережіть свої синоніми (aliases), налаштування і фунції які ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх ваших сесіях shell. +- Синхронізуйте ваші конфігураційні файли (наприклад `.bashrc` та `.bash_profile`) між різними комп'ютерами за допомогою Git. - Вставте настройки змінних середовища і команди, які повинні бути виконані при вході у систему в файл `~/.bash_profile`. Окремі налаштування будуть потрібні для оболонок, які запускаються із під графічного інтерфейсу та з під `cron` задач. -- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть Ваші Bash змінні в подвійні кавички: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть Ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. +- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть ваші Bash змінні в подвійні кавички: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. - У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. Корисною буде звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилках і вивести повідомлення: ```bash @@ -146,8 +146,8 @@ - Знайте про `cut`, `paste`, і `join` для роботи з текстовими файлами. Багато людей використовують `cut`, забувши про `join`. - Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`). - Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`. -- Не забувайте, що Ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для Вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. -- Вb можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`. +- Не забувайте, що ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. +- Ви можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`. - Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. - Щоб замінити всі знаходження підрядка в одному або декількох файлах: ```sh @@ -169,7 +169,7 @@ - Якщо вам коли-небудь доведеться написати код символу табуляції в терміналі, наприклад, для сортування за табуляції з прапором -t, використовуйте скорочення **ctrl-v** **[Tab]** або напишіть `$'\t'`. Останнє краще, тому що його можна скопіювати/вставити. - Стандартні інструменти для виправлення вихідного коду це `diff` і `patch`. Також зверніть увагу на `diffstat` для перегляду статистики diff і `sdiff` для крок за кроком diff. Запамятайте `diff -r` працює рекурсивно по всій директорії. Використовуйте `diff -r tree1 tree2 | diffstat` для повного зведення змін. Використовуйте `vimdiff` порівняти і редагувати файли. - Для бінарних файлів використовуйте `hd`, `hexdump` або `xxd` для простих hex-дампом, і `bvi` або `biew` для зміни бінарників. -- Також для бінарних файлів, `strings` (плюс `grep`, і т.п.) дозволить Вам знайти біти тексту. +- Також для бінарних файлів, `strings` (плюс `grep`, і т.п.) дозволить вам знайти біти тексту. - Щоб подивитися різницю в бінарниках (дельта-кодування): `xdelta3`. - Для конвертування кодувань використовуйте `iconv`. Для більш складних завдань - `uconv`, він підтримує деякі складні фічі Юникода. Наприклад, ця команда переводить рядки з файлу в нижній регістр і прибирає наголоси (наприклад в іспанській мові) ```sh @@ -191,8 +191,8 @@ - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. -- Для більш серйозного дебаггінга мережі використовуйте `wireshark`, `tshark`, і `ngrep`. -- Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість дебаггінга (`-c`) і можливість причепитися до процесу по pid (` -p`). +- Для більш серйозної відладки мережі використовуйте `wireshark`, `tshark`, і `ngrep`. +- Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). - `ldd` для перевірки системних бібліотек. - Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. - Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). @@ -224,7 +224,7 @@ ```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 From 5d5c3a8b5d8c672dd408f1dcc4dc0403c44c72f3 Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Mon, 11 Apr 2016 13:27:57 +0900 Subject: [PATCH 280/337] =?UTF-8?q?[uk]=20Replace=20=D0=B4=D0=B5=D0=B1?= =?UTF-8?q?=D0=B0=D0=B3=D0=B3=D1=96=D0=BD=D0=B3=20->=20=D0=B2=D1=96=D0=B4?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use commonly used Ukrainian word instead of transliterated English. --- README-uk.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README-uk.md b/README-uk.md index c119235..d7b8a8d 100644 --- a/README-uk.md +++ b/README-uk.md @@ -10,7 +10,7 @@ - [Основи](#Основи) - [Щоденне використання](#Щоденне-використання) - [Обробка файлів та інформації](#Обробка-файлів-та-інформації) -- [Дебаггінг](#Дебаггінг) +- [Відладка](#Відладка) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) - [Тільки для OS X](#Тільки-для-os-x) @@ -180,9 +180,9 @@ - Використовуйте `zless`, `zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. -## Дебаггінг +## Відладка -- Для веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). +- Для відладки веб сторінок використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). - Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`, `netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. - Для інформації про мережу використовуйте `netstat` і `ss`. - Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. @@ -248,7 +248,7 @@ - `yes`: безкінечно виводить рядок - `cal`: хороший календар - `env`: виводить змінні середовища (корисно в Bash-скриптах) -- `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) +- `printenv`: показати змінні оточення (корисно в скриптах або при відладці) - `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках - `cut`, `paste` і `join`: маніпуляції з даними - `fmt`: форматування параграфів у тексті @@ -262,7 +262,7 @@ - `factor`: піднести число в степінь - [`gpg`](https://gnupg.org/): зашифрувати і підписати файли - `toe`: таблиця терміналів terminfo з описом -- `nc`: дебаггінг мережі і передачі даних +- `nc`: відладка мережі і передачі даних - `socat`: перемикач сокетів і перенаправлення tcp-портів (схоже на `netcat`) - [`slurm`](https://github.com/mattthias/slurm): візуалізація трафіку мережі - `dd`: перенесення інформації між файлами або пристроями @@ -290,12 +290,12 @@ - `ldd`: показує залежності програми від системних бібліотек - `nm`: symbols from object files - `ab`: бенчмаркінг веб-серверів -- `strace`: дебагінг системних викликів -- `mtr`: трасування для дебаггінга мережі -- `cssh`: графічний конкурент Shel +- `strace`: відладка системних викликів +- `mtr`: трасування для відладки мережі +- `cssh`: паралельне виконання команд в графічному інтерфейсі - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі -- `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі -- `ngrep`: grep для шару мережі (network layer) +- `wireshark` і `tshark`: перехоплення пакетів і відладка мережі +- `ngrep`: grep мережевого рівня - `host` і `dig`: пошук DNS - `lsof`: процесинг дескрипторів та інформація по сокетах - `dstat`: корисна статистика ОС From d294bcbe6e3b8a0c93eede963d22b97926166c22 Mon Sep 17 00:00:00 2001 From: senhtry Date: Tue, 12 Apr 2016 14:58:00 +0800 Subject: [PATCH 281/337] change the word sytle --- README-zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh.md b/README-zh.md index 56b6d04..6262189 100644 --- a/README-zh.md +++ b/README-zh.md @@ -87,7 +87,7 @@ - 键入 `history` 查看命令行历史记录。其中有许多缩写,例如 `!$`(最后键入的参数)和 `!!`(最后键入的命令),尽管通常被 **ctrl-r** 和 **alt-.** 取代。 -- 要进入home目录可以用 `cd`。要访问你的home目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代home目录。 +- 要进入 home 目录可以用 `cd`。要访问你的 home 目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代 home 目录。 - 回到上一个工作路径:`cd -` From a04956a45721d7d82c95464b650cad57a7cb2bca Mon Sep 17 00:00:00 2001 From: bafoed Date: Thu, 14 Apr 2016 03:19:55 +0400 Subject: [PATCH 282/337] Update README-ru.md Fixed typos. --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 8bde804..b2e606a 100644 --- a/README-ru.md +++ b/README-ru.md @@ -80,7 +80,7 @@ - Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing). -- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). +- Если Вам нравятся клавиатурные сочетания vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно). - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. From fc82eedb684602b0fed3439b057b039466a1789f Mon Sep 17 00:00:00 2001 From: Ihor Dvoretskyi Date: Sun, 17 Apr 2016 19:08:00 -0700 Subject: [PATCH 283/337] [uk] awesome-osx-command-line translation updated [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line) translated. --- README-uk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index c119235..c25658e 100644 --- a/README-uk.md +++ b/README-uk.md @@ -333,7 +333,7 @@ ## Інші джерела - [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): A more in-depth guide for the Mac OS command line. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Поглиблений гайд до командного рядка OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. - [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 abd515e1a4d28c5d107522df8d198ca55f5f9d87 Mon Sep 17 00:00:00 2001 From: Ihor Dvoretskyi Date: Tue, 19 Apr 2016 16:36:27 -0700 Subject: [PATCH 284/337] Update README-uk.md --- README-uk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index c25658e..7a386d0 100644 --- a/README-uk.md +++ b/README-uk.md @@ -333,7 +333,7 @@ ## Інші джерела - [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. -- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Поглиблений гайд до командного рядка OS X. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): Поглиблений посібник до командного рядка OS X. - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. - [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 063a5b333b62b5f1cf8bb47bc3f700be794b2c4d Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Tue, 17 May 2016 10:44:36 +0900 Subject: [PATCH 285/337] Stylistic changes. Fix smaller Ukrainian misspelling and incorrect translations. --- README-uk.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README-uk.md b/README-uk.md index d7b8a8d..4e789b4 100644 --- a/README-uk.md +++ b/README-uk.md @@ -23,18 +23,18 @@ Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я вважаю корисними, при роботі з командним рядком в Linux. Деякі з них - прості та очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - ви знаєте багато! Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md). -Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де знаходяться дуже талановиті люди які зробили багато удосконалень. -[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви замітили помилку або можете щось покращити! +Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [з'явилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де багато людей талановитіших за першого автора, внесли багато удосконалень. +[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо ви знайшли помилку або можете щось покращити! ## Опис Основне: -- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). +- Дана публікація призначена як для початківців, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). - Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#Тільки-для-os-x)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). - Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. -- Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. +- Ця інструкція включає в себе як стандартні Unix команди, так і ті, для використання яких потрібно встановлювати додаткові пакети, якщо користь від застосування команди виправдовує установку пакету. Нотатки: @@ -64,8 +64,8 @@ - Використовуйте **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`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. +- Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються комбінації **ctrl-r** та **alt-.**. +- Перейти в домашню директорію можна за допомогою `cd`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` - Якщо ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. - Використовуйти `xargs` (або `parallel`). Це дуже корисно. Зверніть увагу, що ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: @@ -296,11 +296,11 @@ - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі - `wireshark` і `tshark`: перехоплення пакетів і відладка мережі - `ngrep`: grep мережевого рівня -- `host` і `dig`: пошук DNS -- `lsof`: процесинг дескрипторів та інформація по сокетах +- `host` і `dig`: пошук в DNS +- `lsof`: інформація про файлові дескриптори та сокети - `dstat`: корисна статистика ОС -- [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам -- `iostat`: статистика використання жорсткого диска +- [`glances`](https://github.com/nicolargo/glances): сумарна статистика багатьох підсистем +- `iostat`: статистика системи вводу/виводу жорстких дисків - `mpstat`: статистика використання CPU - `vmstat`: статистика використання оперативної пам'яті - `htop`: вдосконалена версія `top` From e1da3b37be2c8c09c9c1427854a65f681ba2b8f9 Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Tue, 17 May 2016 18:29:29 +0900 Subject: [PATCH 286/337] Ukrainian syntax fixes: #Meta and #Basics --- README-uk.md | 57 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/README-uk.md b/README-uk.md index 4e789b4..6ca4f95 100644 --- a/README-uk.md +++ b/README-uk.md @@ -15,47 +15,58 @@ - [Складно але корисно](#Складно-але-корисно) - [Тільки для OS X](#Тільки-для-os-x) - [Інші джерела](#Інші-джерела) -- [Декламація](#Декламація) +- [Відмова від відповідальності](#Відмова-від-відповідальності) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують вашу продуктивність у роботі. Даний документ є підбіркою заміток і порад, які я вважаю корисними, при роботі з командним рядком в Linux. Деякі з них - прості та очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - ви знаєте багато! +Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують вашу продуктивність у роботі. Даний документ є підбіркою на наш погляд корисних при роботі з командним рядком в 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, де багато людей талановитіших за першого автора, внесли багато удосконалень. +Ця результат роботи [багатьох авторів і перекладачів](AUTHORS.md). +Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [з'явилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхало на Github, де багато людей талановитіших за початкового автора, внесли багато удосконалень. [**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо ви знайшли помилку або можете щось покращити! ## Опис -Основне: +Охоплення: -- Дана публікація призначена як для початківців, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна прочитати в інших місцях). -- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[Тільки для OS X](#Тільки-для-os-x)". Все інше підходить для всіх UNIX/MacOS систем (і навіть для Cygwin). -- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовані до Bash-скриптів. +- Дана публікація призначена як для початківців, так і для досвідчених користувачів. Цілі: *наповнення* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найпоширеніших ситуацій) та *стислість* (не варто вдаватись у несуттєві деталі, про які можна прочитати деінде). +- Цей документ написаний для користувачів Linux, за винятком розділів "[Тільки для OS X](#Тільки-для-os-x)" та "[Тільки для Windows(#Тільки-для-Windows)]". Все інше підходить для всіх UNIX чи OS X систем (і навіть для Cygwin). +- Сфокусована на інтерактивному Bash, але багато порад також можуть застосовуватися в інших командних оболонках чи загалом до Bash-скриптів. - Ця інструкція включає в себе як стандартні Unix команди, так і ті, для використання яких потрібно встановлювати додаткові пакети, якщо користь від застосування команди виправдовує установку пакету. Нотатки: -- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в інших джерел. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. ## Основи -- Вивчіть основи 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`. -- Вивчіть і використовуйте систему управління версіями, наприклад таку як `git`. -- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. -- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). +- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (вивчення *виключно* zsh, fish і т.д., хоч і привабливо на вашому особистому комп'ютері, насправді обмежує в багатьох випадках, наприклад при використанні існуючих серверів). + +- Вивчіть використання хоча б одного консольного редактора тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор). + +- Знайте, як читати документацію командою `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`. Дізнайтеся, що таке inode (`ls -i` чи `df -i`). + +- Основи роботи з мережею: `ip`, `ifconfig` або `dig`. + +- Вивчіть і використовуйте систему управління версіями, наприклад таку, як `git`. + +- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-v`, `-A`, `-B` та `-C` варто знати. + +- Навчіться використовувати системи управління пакетами та встановлювати пакети `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). ## Щоденне використання @@ -84,7 +95,7 @@ - Збережіть свої синоніми (aliases), налаштування і фунції які ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх ваших сесіях shell. - Синхронізуйте ваші конфігураційні файли (наприклад `.bashrc` та `.bash_profile`) між різними комп'ютерами за допомогою Git. - Вставте настройки змінних середовища і команди, які повинні бути виконані при вході у систему в файл `~/.bash_profile`. Окремі налаштування будуть потрібні для оболонок, які запускаються із під графічного інтерфейсу та з під `cron` задач. -- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть ваші Bash змінні в подвійні кавички: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. +- Необхідно розуміти, що потрібна обережність коли змінні та імена файлів включають пробіли. Окружіть ваші Bash змінні в подвійні лапки: `"$FOO"`. Використовуйте `-0` або `-print0` опції щоб дозволити розмежувати імена файлів за допомогою нульових(null) символів. Наприклад: `locate -0 pattern | xargs -0 ls -al` або `find / -print0 -type d | xargs -0 ls -al`. Щоб перебрати імена файлів які містять пробільні символи для циклу встановіть ваш IFS(API файлової системи) використовувати тільки '\n' для цього використовуйте - `IFS=$'\n'`. - У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. Корисною буде звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилках і вивести повідомлення: ```bash @@ -339,7 +350,7 @@ - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): The sadly complex minutiae on how to handle filenames correctly in shell scripts. -## Декламація +## Відмова від відповідальності За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) From 3c769c68cb91f60be7a77bd230210b5d9fe2c3a9 Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Wed, 18 May 2016 10:58:49 +0900 Subject: [PATCH 287/337] Typo fixes. Thanks @l13t --- README-uk.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-uk.md b/README-uk.md index 6ca4f95..83c5477 100644 --- a/README-uk.md +++ b/README-uk.md @@ -22,7 +22,7 @@ Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшують вашу продуктивність у роботі. Даний документ є підбіркою на наш погляд корисних при роботі з командним рядком в Linux заміток і порад. Деякі з них - прості та очевидні, але інші - або призначені для вирішення конкретних завдань, або досить складні чи широко невідомі. Це невелика публікація, але якщо ви вже все знаєте, що тут написано, і можете згадати як це все використовувати - ви знаєте багато! -Ця результат роботи [багатьох авторів і перекладачів](AUTHORS.md). +Це -- результат роботи [багатьох авторів і перекладачів](AUTHORS.md). Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [з'явилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхало на Github, де багато людей талановитіших за початкового автора, внесли багато удосконалень. [**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо ви знайшли помилку або можете щось покращити! @@ -38,7 +38,7 @@ Нотатки: -- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в інших джерел. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально з інших джерел. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. @@ -75,7 +75,7 @@ - Використовуйте **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-.**. +- Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються комбінаціями **ctrl-r** та **alt-.**. - Перейти в домашню директорію можна за допомогою `cd`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. - Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` - Якщо ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. From b517ef9aee21f83ea4e703947cb1de9d11f956b2 Mon Sep 17 00:00:00 2001 From: Ashhar Hasan Date: Sat, 21 May 2016 23:16:34 +0530 Subject: [PATCH 288/337] Checking if a command is an executable, shell builtin or alias. I added a basic info about the `type` command so that people can find if a command is an executable, builtin or alias. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aefeace..a221b54 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Notes: - Learn at least one text-based editor well. Ideally Vim (`vi`), as there's really no competition for random editing in a terminal (even if you use Emacs, a big IDE, or a modern hipster editor most of the time). -- Know how to read documentation with `man` (for the inquisitive, `man man` lists the section numbers, e.g. 1 is "regular" commands, 5 is files/conventions, and 8 are for administration). Find man pages with `apropos`. Know that some commands are not executables, but Bash builtins, and that you can get help on them with `help` and `help -d`. +- Know how to read documentation with `man` (for the inquisitive, `man man` lists the section numbers, e.g. 1 is "regular" commands, 5 is files/conventions, and 8 are for administration). Find man pages with `apropos`. Know that some commands are not executables, but Bash builtins, and that you can get help on them with `help` and `help -d`. You can find out whether a command is an executable, shell builtin or an alias by using `type command`. - Learn about redirection of output and input using `>` and `<` and pipes using `|`. Know `>` overwrites the output file and `>>` appends. Learn about stdout and stderr. From 1dcfb9a99f4c64d5f739833ee03bfffa8cb6d39a Mon Sep 17 00:00:00 2001 From: Dmytro Prokhorenkov Date: Tue, 24 May 2016 12:57:54 +0200 Subject: [PATCH 289/337] Some changes in ukrainian translation. --- README-uk.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README-uk.md b/README-uk.md index 88ac115..f781c1a 100644 --- a/README-uk.md +++ b/README-uk.md @@ -24,7 +24,7 @@ Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md). Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де знаходяться дуже талановиті люди які зробили багато удосконалень. -[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви замітили помилку або можете щось покращити! +[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви помітили помилку або можете щось покращити! ## Опис @@ -38,13 +38,13 @@ Нотатки: -- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- Вся інформація збережена в одному файлі для спрощення пошуку, перекладу та навігації. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм. - На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. ## Основи -- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на вашому лептопі і ні в чому вас не обмежують, наприклад ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). +- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, що є частиною абсолютної більшості дистрибутивів Linux та являється базою більшості готових скрипті (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на вашому лептопі і ні в чому вас не обмежують, наприклад ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). - Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор). - Знайте, як читати документацію через `man` (`man man`; `man` у кутах документа в дужках додає номер, наприклад 1 - для звичайних команд, 5 - для файлів, 8 - для адміністративних команд). Шукайте інформацію через `apropos`, і пам'ятайте, що деякі команди - не виконувані(executables), а вбудовані команди Bash, і допомогу по них можна отримати через команду `help` і `help -d`. - Можна перенаправляти введення та виведення через `>` і `<` і пайпи `|`. Пам'ятайте, що `>` - переписує вихідний файл, а `>>` додає до нього. Дізнайтеся побільше про stdout і stderr. @@ -54,8 +54,8 @@ - Основи роботи з файлами: `ls` і `ls -l` (зокрема, дізнайтеся, що значить кожен стовпець в `ls -l`), `less`, `head`,` tail` і `tail -f` (або навіть краще - `less + F`), `ln` і `ln -s` (дізнайтеся різницю між символьними посиланнями і жорсткими посиланнями, і чому жорсткі посилання краще), `chown`, `chmod`, `du` (для отримання швидкої інформації по використанню диска: `du -hk *`). Для менеджменту файлової системи, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Основи роботи з мережею: `ip` або `ifconfig`, `dig`. - Вивчіть і використовуйте систему управління версіями, наприклад таку як `git`. -- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. -- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). +- Навчіться писати регулярні вирази і вивчіть різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. +- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети. Обов'язково майте встановленим `pip` для встановки модулів та програм, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`). ## Щоденне використання @@ -78,7 +78,7 @@ - Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`. - Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійно виконувався у фоні. - Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP). -- Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. +- Зверніть увагу на команду `lsof`. Вона допоможе Вам подивитися відкриті сокети і файли. - Команда `uptime` or `w` показує як довго працює система. - Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. - Збережіть свої синоніми (aliases), налаштування і фунції які ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх ваших сесіях shell. @@ -128,7 +128,7 @@ - Для роботи з файлами, список яких дала інша команда (наприклад `git`), використовуйте `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). - Щоб швидко підняти веб-сервер в поточній директорії (і піддерикторіях), який доступний для всіх у вашій мережі, використовуйте: `python -m SimpleHTTPServer 7777` (на прту 7777 і для Python 2) або `python -m http.server 7777` (на прту 7777 і для Python 3). -- Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або gsl іншим користувачем. +- Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або під іншим користувачем. ## Обробка файлів та інформації @@ -136,8 +136,8 @@ - Для того, щоб знайти файл в поточній директорії, виконайте `find. -iname '*something*'`. Для того, щоб шукати файл по всій системі, використовуйте `locate something` (але не забувайте, що `updatedb` міг ще не проіндексувати нещодавно створені файли). - Для пошуку по вмісту або фалах (більш детально зробити пошук допоможе `grep -r`) використовуйте [`ag`](https://github.com/ggreer/the_silver_searcher). - Для конвертації HTML в текст: `lynx -dump -stdin` -- Для конвертації різних типів розмітки (HTML, Markdown та ін.) попроробуйте [`pandoc`](http://pandoc.org/). -- Якщо потрібно працювати з XML, є стара, але хороша утиліта - `xmlstarlet`. +- Для конвертації різних типів розмітки (HTML, Markdown та ін.) спроробуйте утиліту [`pandoc`](http://pandoc.org/). +- Якщо нуобхідно працювати з XML, є стара, але хороша утиліта - `xmlstarlet`. - Для роботи з JSON використовуйте [`jq`](http://stedolan.github.io/jq/). - Для YAML використовуйте [`shyaml`](https://github.com/0k/shyaml). - Для Excel і CSV файлів [csvkit](https://github.com/onyxfish/csvkit) надає `in2csv`, `csvcut`, `csvjoin`, `csvgrep` і т.д. @@ -146,10 +146,10 @@ - Знайте про `cut`, `paste`, і `join` для роботи з текстовими файлами. Багато людей використовують `cut`, забувши про `join`. - Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`). - Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`. -- Не забувайте, що ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. +- Не забувайте, що ваші налаштування консолі та мовні/регіональні налаштування (локаль) впливають на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`. - Ви можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`. - Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. -- Щоб замінити всі знаходження підрядка в одному або декількох файлах: +- Щоб замінити всі входження підрядка в одному або декількох файлах: ```sh perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` @@ -187,7 +187,7 @@ - Для інформації про мережу використовуйте `netstat` і `ss`. - Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. - Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. -- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі. +- Використовуйте `mtr` для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. @@ -199,20 +199,20 @@ - Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. - Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)) і [`sysdig`](https://github.com/draios/sysdig). - Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` (інформація про ядро) або `lsb_release -a` (інформація про дистрибутив Linux). -- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами). +- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом, драйверами, тощо). ## Одним рядком Кілька прикладів склеювання команд: -- Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше: +- Це досить круто, що можна знайти множинни перетину файлів, з'єднати відсортовані файли і подивитися різницю декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтні файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Опція сортування `-u` не використовується нижче, щоб було зрозуміліше: ```sh cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`, `/proc`, `/etc`. -- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні): +- Використовуйте `grep . *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`, `/proc`, `/etc`. +- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні) можна наступним чином: ```sh awk '{ x += $3 } END { print x }' myfile ``` @@ -245,11 +245,11 @@ - `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів - `m4`: простий макро-процесор -- `yes`: безкінечно виводить рядок +- `yes`: безкінечно виводить рядок зі словом "yes" - `cal`: хороший календар -- `env`: виводить змінні середовища (корисно в Bash-скриптах) -- `printenv`: показати змінні оточення (корисно в скриптах або при відладці) -- `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках +- `env`: показує змінні середовища (корисно в Bash-скриптах) +- `printenv`: показує змінні оточення (корисно в скриптах або при відладці) +- `look`: виведе рядки у файлі які починаються із заданого слова/підрядка - `cut`, `paste` і `join`: маніпуляції з даними - `fmt`: форматування параграфів у тексті - `pr`: відформатовує текст в сторінки/колонки @@ -269,8 +269,8 @@ - `file`: визначає тип файлу - `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно - `stat`: інформація про файл -- `time`: execute and time a commands -- `timeout`: зупиняє команду після того як завершиться вказаний час в аргументі +- `time`: виведе інформацію про час виконання команди/програми +- `timeout`: зупиняє виконання команди після того як завершиться вказаний час в аргументі - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` - `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін @@ -284,12 +284,12 @@ - `iconv` або `uconv`: конвертація кодувань - `split` і `csplit`: розбити файли - `sponge`: прочитати весь інпут перед тим, як його записати. Корисно, коли читаєш з того ж файлу, куди записуєш. Наприклад, ось так: `grep -v something some-file | sponge some-file` -- `units`: конвертер. Метри в кілометри, версти в п'яді (дивіться `/usr/share/units/definitions.units`) +- `units`: використовується для конвертації одиниць вимірювання (дивіться `/usr/share/units/definitions.units`) - `apg`: генерація паролів - `7z`: архіватор з високим ступенем стиснення - `ldd`: показує залежності програми від системних бібліотек - `nm`: symbols from object files -- `ab`: бенчмаркінг веб-серверів +- `ab`: вбудований в Apache бенчмарк веб-серверів - `strace`: відладка системних викликів - `mtr`: трасування для відладки мережі - `cssh`: паралельне виконання команд в графічному інтерфейсі From 8147ecd94e4142b7bb13e3a6e332aeb7f436f65d Mon Sep 17 00:00:00 2001 From: Dmytro Kovalov Date: Wed, 1 Jun 2016 10:46:23 +0900 Subject: [PATCH 290/337] Typo --- README-uk.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README-uk.md b/README-uk.md index 83c5477..be50da1 100644 --- a/README-uk.md +++ b/README-uk.md @@ -72,8 +72,10 @@ ## Щоденне використання - Використовуйте клавішу табуляції (**Tab**) в 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` що б повернути налаштування). + +- Якщо вам подобаються клавішні комбінації vim, виконайте `set -o vi` (`set -o emacs` щоб повернути налаштування). - Для редагування довгих команд після налаштування вашого консольного редактора (наприклад `export EDITOR=vim`), **ctrl-x** **ctrl-e** відкриє поточну команду в редакторі для багаторядкового редагування команди. Або у vi стилі, **escape-v**. - Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються комбінаціями **ctrl-r** та **alt-.**. - Перейти в домашню директорію можна за допомогою `cd`. Щоб вказати шлях до файлів із домашньої директорії можна скористатися префіксом `~` (наприклад: `~/.bashrc`). У `sh` скриптах для звернення до домашньої директорії можна використовувати змінну `$HOME`. From f2861d694eb9ba935a7b5698fc6597c2102d3910 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 31 May 2016 21:52:01 -0700 Subject: [PATCH 291/337] Follow up on #384. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 84d0718..eabf0ba 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Notes: - For editing long commands, after setting your editor (for example `export EDITOR=vim`), **ctrl-x** **ctrl-e** will open the current command in an editor for multi-line editing. Or in vi style, **escape-v**. -- To see recent commands, `history`. There are also many abbreviations such as `!$` (last argument), `!n` (nth command) and specially `!!` (last command), though these are often easily replaced with **ctrl-r** and **alt-.**. +- To see recent commands, `history`. Follow with `!n` (where `n` is the command number) to execute again. There are also many abbreviations you can use, the most useful probably being `!$` for last argument and `!!` for last command (see "HISTORY EXPANSION" in the man page). However, these are often easily replaced with **ctrl-r** and **alt-.**. - Go to your home directory with `cd`. Access files relative to your home directory with the `~` prefix (e.g. `~/.bashrc`). In `sh` scripts refer to the home directory as `$HOME`. From b69179ba54185391fd5e1eaad092b16b24bc973d Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 31 May 2016 22:22:59 -0700 Subject: [PATCH 292/337] Add datamash. Fixes #412. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index eabf0ba..5612eee 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,8 @@ Notes: - Know about `tee` to copy from stdin to a file and also to stdout, as in `ls -al | tee file.txt`. +- For more complex calculations, including grouping, reversing fields, and statistical calculations, consider [`datamash`](https://www.gnu.org/software/datamash/). + - Know that locale affects a lot of command line tools in subtle ways, including sorting order (collation) and performance. Most Linux installations will set `LANG` or other locale variables to a local setting like US English. But be aware sorting will change if you change locale. And know i18n routines can make sort or other commands run *many times* slower. In some situations (such as the set operations or uniqueness operations below) you can safely ignore slow i18n routines entirely and use traditional byte-based sort order, using `export LC_ALL=C`. - You can set a specific command's environment by prefixing its invocation with the environment variable settings, as in `TZ=Pacific/Fiji date`. From cd4e644e71bba2003bc90f91d31642a1b1560366 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Tue, 31 May 2016 23:37:29 -0700 Subject: [PATCH 293/337] Update authors/stats. --- AUTHORS.md | 43 ++++++++++++++++++++++++------------------ admin/authors-info.yml | 3 ++- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 36530b3..da56937 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -11,20 +11,22 @@ They have kindly agreed to review and help update future contributions for the t * [Adrian Abreu Gonzalez (aabreuglez)](https://github.com/aabreuglez) — [6+](https://github.com/jlevy/the-art-of-command-line/commits?author=aabreuglez)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaabreuglez) * [Antonio Ossa (aaossa)](https://github.com/aaossa) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=aaossa)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaaossa) — _translator (es)_ * [Ahmet Alp Balkan (ahmetalpbalkan)](https://github.com/ahmetalpbalkan) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ahmetalpbalkan)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aahmetalpbalkan) -* [Semir Patel (analogue)](https://github.com/analogue) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) +* [Semir Patel (analogue)](https://github.com/analogue) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=analogue)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanalogue) * [Desmond Stonie (aneasystone)](https://github.com/aneasystone) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=aneasystone)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaneasystone) * [Haoxuan Li (angel1a)](https://github.com/angel1a) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=angel1a)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aangel1a) * [anna-d (anna-d)](https://github.com/anna-d) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=anna-d)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aanna-d) — _translation maintainer (el)_ * [Chong Guo (Armour)](https://github.com/Armour) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=Armour)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AArmour) — _translator (zh)_ * [Brad Beyenhof (augmentedfourth)](https://github.com/augmentedfourth) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=augmentedfourth)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aaugmentedfourth) * [b-jazz (b-jazz)](https://github.com/b-jazz) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=b-jazz)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ab-jazz) +* [bafoed](https://github.com/bafoed) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=bafoed)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abafoed) * [Alex Vergara Gil (BishopWolf)](https://github.com/BishopWolf) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=BishopWolf)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ABishopWolf) — _translator (es)_ * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [28+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[15+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translation maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [29+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[16+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translation maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) -* [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) +* [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) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) +* [Colin Wang (colinwjd)](https://github.com/colinwjd) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=colinwjd)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acolinwjd) * [Chris Rhodes (crr0004)](https://github.com/crr0004) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=crr0004)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acrr0004) * [Chelsea Voss (csvoss)](https://github.com/csvoss) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=csvoss)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acsvoss) * [Daniel t. (danasmera)](https://github.com/danasmera) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danasmera)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanasmera) @@ -34,11 +36,11 @@ They have kindly agreed to review and help update future contributions for the t * [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) +* [Dmytro Kovalov (uk: Дмитро Ковальов) (dmytro)](https://github.com/dmytro) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=dmytro)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Admytro) — _translation maintainer (uk)_ * [Hayato Matsuura (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translation maintainer (ja)_ * [Diomidis Spinellis (dspinellis)](https://github.com/dspinellis) — [12+](https://github.com/jlevy/the-art-of-command-line/commits?author=dspinellis)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adspinellis) — _section maintainer (Windows)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) -* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translation maintainer (fr)_ -* [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) +* [Éric Guirbal (ericguirbal)](https://github.com/ericguirbal) — [22+](https://github.com/jlevy/the-art-of-command-line/commits?author=ericguirbal)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aericguirbal) — _translation maintainer (fr)_ * [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) — _translation maintainer (it)_ * [githubashto](https://github.com/githubashto) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=githubashto)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Agithubashto) — _translator (ru)_ @@ -46,17 +48,19 @@ They have kindly agreed to review and help update future contributions for the t * [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) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ -* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) +* [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[5+](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) +* [Ihor Dvoretskyi (idvoretskyi)](https://github.com/idvoretskyi) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=idvoretskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aidvoretskyi) * [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) +* [Igor Veksler (iveksl2)](https://github.com/iveksl2) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=iveksl2)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aiveksl2) * [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) — [133+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[25+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _orignal author and project maintainer_ -* [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) -* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) +* [Jᴀᴍᴇs Kᴏʟᴄᴇ (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) — [137+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[26+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _orignal author and project maintainer_ +* [Jesse Sightler (jsight)](https://github.com/jsight) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) +* [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) * [Colin Chan (kalgynirae)](https://github.com/kalgynirae) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalgynirae)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalgynirae) -* [Michail Kargakis (kargakis)](https://github.com/kargakis) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) +* [Michail Kargakis (kargakis)](https://github.com/kargakis) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=kargakis)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akargakis) * [kstn (kastian)](https://github.com/kastian) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kastian)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akastian) — _translator (ru)_ * [Kesu J (kesu)](https://github.com/kesu) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=kesu)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akesu) * [kevingo (kevingo)](https://github.com/kevingo) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kevingo)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akevingo) — _translation maintainer (zh-Hant)_ @@ -64,6 +68,7 @@ They have kindly agreed to review and help update future contributions for the t * [Takuma Yamaguchi (kumon)](https://github.com/kumon) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kumon)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akumon) * [Lakshmipathi (Lakshmipathi)](https://github.com/Lakshmipathi) — [10+](https://github.com/jlevy/the-art-of-command-line/commits?author=Lakshmipathi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ALakshmipathi) * [Pavel Zhukov (landgraf)](https://github.com/landgraf) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=landgraf)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alandgraf) +* [Lampros Mountrakis (lmount)](https://github.com/lmount) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lmount)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Almount) * [lsrom](https://github.com/lsrom) — [14+](https://github.com/jlevy/the-art-of-command-line/commits?author=lsrom)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alsrom) — _translation maintainer (cs)_ * [Luke Yeager (lukeyeager)](https://github.com/lukeyeager) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=lukeyeager)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Alukeyeager) * [TAKAGI Masahiro (m-takagi)](https://github.com/m-takagi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=m-takagi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Am-takagi) @@ -72,31 +77,31 @@ They have kindly agreed to review and help update future contributions for the t * [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) -* [Michael Kwardakov (mkwardakov)](https://github.com/mkwardakov) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mkwardakov)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amkwardakov) +* [Michael Kwardakov (mkwardakov)](https://github.com/mkwardakov) — [5+](https://github.com/jlevy/the-art-of-command-line/commits?author=mkwardakov)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amkwardakov) * [Harry Moreno (morenoh149)](https://github.com/morenoh149) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=morenoh149)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amorenoh149) -* [慕冬亮 (mudongliang)](https://github.com/mudongliang) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=mudongliang)/[6+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amudongliang) +* [Dongliang Mu (mudongliang)](https://github.com/mudongliang) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=mudongliang)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Amudongliang) * [Nilton Vasques (niltonvasques)](https://github.com/niltonvasques) — [24+](https://github.com/jlevy/the-art-of-command-line/commits?author=niltonvasques)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aniltonvasques) — _translation maintainer (pt)_ * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translation maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [36+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[27+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translation maintainer (sl)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [37+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[29+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translation maintainer (sl)_ * [Ryan (picasso250)](https://github.com/picasso250) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=picasso250)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apicasso250) * [Chujie Zeng (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translation maintainer (zh)_ * [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) -* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) +* [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [0+](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) — _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) +* [Simarpreet Singh (simar7)](https://github.com/simar7) — [0+](https://github.com/jlevy/the-art-of-command-line/commits?author=simar7)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asimar7) * [Scott Griffin (sirsgriffin)](https://github.com/sirsgriffin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=sirsgriffin)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asirsgriffin) * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translation maintainer (uk)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [33+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[5+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translation (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) +* [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [0+](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) * [Timur (tim-teufel)](https://github.com/tim-teufel) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=tim-teufel)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Atim-teufel) @@ -106,6 +111,8 @@ They have kindly agreed to review and help update future contributions for the t * [Joe Block (unixorn)](https://github.com/unixorn) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=unixorn)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aunixorn) * [Valeria de Paiva (vcvpaiva)](https://github.com/vcvpaiva) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=vcvpaiva)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avcvpaiva) — _translator (pt)_ * [Eduardo Rolim (vndmtrx)](https://github.com/vndmtrx) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=vndmtrx)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Avndmtrx) +* [senhtry (w169q169)](https://github.com/w169q169) — [3+](https://github.com/jlevy/the-art-of-command-line/commits?author=w169q169)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aw169q169) +* [Evan Wong (wyf88)](https://github.com/wyf88) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=wyf88)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Awyf88) * [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) diff --git a/admin/authors-info.yml b/admin/authors-info.yml index d75223c..f61cf95 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -43,7 +43,8 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translation maintainer (uk) + stepan0904: translation (uk) + dmytro: translation maintainer (uk) francescomalatesta: translation maintainer (it) lsrom: translation maintainer (cs) ericguirbal: translation maintainer (fr) From 4ab8318487ce1e4da2439733fbc7b69adfe39aa3 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Thu, 2 Jun 2016 17:31:16 +0200 Subject: [PATCH 294/337] fr: Synchronize the translation --- README-fr.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README-fr.md b/README-fr.md index 42a9454..0265e9d 100644 --- a/README-fr.md +++ b/README-fr.md @@ -102,8 +102,10 @@ Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** dév - 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 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 voir les commandes récentes, `history`. +Faites `!n` pour rappeler la commande numéro `n`. +Il y a aussi beaucoup d'autres abréviations, les plus utiles étant probalement `!$` pour le dernier argument et `!!` pour la dernière commande (voir la section « HISTORY EXPANSION » de la page de manuel). +Cependant, celles-ci peuvent être aisément remplacées par **ctrl-r** et **alt-.**. - Placez-vous dans votre répertoire personnel avec `cd`. Accédez aux fichiers à partir de leurs chemins relatifs par rapport à votre répertoire personnel en préfixant ceux-ci avec `~` (p. ex. `~/.bashrc`). @@ -275,6 +277,8 @@ Beaucoup de personnes utilisent `cut` mais oublient `join`. - Connaissez `tee` pour copier depuis stdin vers un fichier ou vers stdout, comme dans `ls -al | tee file.txt`. +- Pour des calculs plus complexes, incluant les regroupements, les inversions de champs et des calculs statistiques, considérez [`datamash`](https://www.gnu.org/software/datamash/). + - 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. From bd1f4f114b1ead598775da4d5ca638a0f49b4fc4 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Thu, 2 Jun 2016 17:34:27 +0200 Subject: [PATCH 295/337] fr: Reword --- README-fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 0265e9d..62c8dcb 100644 --- a/README-fr.md +++ b/README-fr.md @@ -102,7 +102,7 @@ Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** dév - 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`. +- Consultez les commandes récentes avec `history`. Faites `!n` pour rappeler la commande numéro `n`. Il y a aussi beaucoup d'autres abréviations, les plus utiles étant probalement `!$` pour le dernier argument et `!!` pour la dernière commande (voir la section « HISTORY EXPANSION » de la page de manuel). Cependant, celles-ci peuvent être aisément remplacées par **ctrl-r** et **alt-.**. From 8a945d26e5eec71dc1b19bbb04773d5b062390f4 Mon Sep 17 00:00:00 2001 From: Ted Lin Date: Fri, 3 Jun 2016 20:39:38 +0800 Subject: [PATCH 296/337] add hyperlink of dtach 's GitHub homepage --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5612eee..2ae235a 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ Notes: - Use `man ascii` for a good ASCII table, with hex and decimal values. For general encoding info, `man unicode`, `man utf-8`, and `man latin1` are helpful. -- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is `dtach`. +- Use `screen` or [`tmux`](https://tmux.github.io/) to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. `byobu` can enhance screen or tmux providing more information and easier management. A more minimal alternative for session persistence only is [`dtach`](https://github.com/bogner/dtach). - In ssh, knowing how to port tunnel with `-L` or `-D` (and occasionally `-R`) is useful, e.g. to access web sites from a remote server. From a52fad18090a73ba0584f197261f734e9b75f255 Mon Sep 17 00:00:00 2001 From: Michael Kwardakov Date: Sat, 4 Jun 2016 22:14:06 +0300 Subject: [PATCH 297/337] Ru: Translate recent changes --- README-ru.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README-ru.md b/README-ru.md index ec1e69e..9f3cb2d 100644 --- a/README-ru.md +++ b/README-ru.md @@ -13,8 +13,8 @@ - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [Windows only](#windows-only) - [OS X only](#os-x-only) +- [Windows only](#windows-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -52,7 +52,7 @@ - Выучите как использовать хотя бы один консольный редактор текста. Идеально Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если Вы постоянно сидите на Emacs/какой-нибудь тяжелой IDE или на каком-нибудь модном хипстерском редакторе) -- Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos`, и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. +- Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos`, и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. С помощью `type command` можно определить, чем является команда - исполняемым файлом, алиасом или встроенной командой шелла. - Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` дописывает в конец. Узнайте побольше про stdout и stderr. @@ -84,7 +84,7 @@ - Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**. -- Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**. +- Для просмотра последних команд используйте `history`. Повторить команду: `!n` (где `n` - порядковый номер истории). Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда (свертесь со страницей man "HISTORY EXPANSION"). Впрочем, их часто проще заменить с помощью **ctrl-r** и **alt-.**. - Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В `sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME` @@ -151,7 +151,7 @@ - Используйте `man ascii` для просмотра хорошей ASCII таблицы, с шестнадцатеричными и десятичными значениями. Для информации по основным кодировкам полезны: `man unicode`, `man utf-8` и `man latin1`. -- Используйте `screen` или [`tmux`](https://tmux.github.io/) для того, чтобы иметь несколько экранов в одном терминале. Это особенно полезно, когда вы работаете с удаленным сервером по ssh, тогда вы можете подключаться/отключаться от сессий. `byobu` can enhance screen or tmux providing more information and easier management. Более минималистичный подход для этого – использование `dtach`. +- Используйте `screen` или [`tmux`](https://tmux.github.io/) для того, чтобы иметь несколько экранов в одном терминале. Это особенно полезно, когда вы работаете с удаленным сервером по ssh, тогда вы можете подключаться/отключаться от сессий. `byobu` can enhance screen or tmux providing more information and easier management. Более минималистичный подход для этого – использование [`dtach`](https://github.com/bogner/dtach). - В SSH полезно знать как сделать port tunnel с ключами `-L` и `-D` (и иногда `-R`). Например для того, чтобы зайти на сайт с удаленного сервера. @@ -221,6 +221,8 @@ - Знайте про `tee` для копирования из stdin и в stdout, и в файл, например `ls -al | tee file.txt`. +- Для более сложных вычислений, включающих групповые операции с данными, преобразование матриц и статистические функции, имейте в виду [`datamash`](https://www.gnu.org/software/datamash/). + - Не забывайте, что локализация вашей системы влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют `LANG` или любую другую переменную в подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Рутины `i18n` могут *значительно* снизить производительность сортировок. В некоторых случаях можно полностью этого избегать (за исключением редких случаев), сортируя традиционно побайтово, для этого `export LC_ALL=C`. - Вы можете установить специфическое окружение для команды с помощью префикса перед ее вызовом, например `TZ=Pacific/Fiji date`. @@ -268,7 +270,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для того, чтобы разбить файл на куски, используйте `split` (разбивает на куски по размеру), или `csplit` (по шаблону или регулярному выражению). -- Для использования значений даты-времени используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). +- Для операций с датами и временем используйте `dateadd`, `datediff`, `strptime` и т.д. из [`dateutils`](http://www.fresse.org/dateutils/). - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. @@ -306,7 +308,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). -- Не забывайте про `ldd` для проверки системных библиотек. +- Не забывайте про `ldd` для проверки используемых библиотек. - Знайте как прицепиться к работающему процессу через `gdb` и получить трассировку стека. From 134999581a95ff507c13ef024dff0028741c50d9 Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Mon, 13 Jun 2016 21:53:28 +0200 Subject: [PATCH 298/337] Fix typos --- CONTRIBUTING.md | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fe1772a..ab748b3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,7 +42,7 @@ Translations to new languages are always welcome, especially if you can maintain - Check existing issues to see if a translation is in progress or stalled. If so, offer to help. - If it is not in progress, file an issue for your language so people know you are working on it and we can arrange. Confirm you are native level in the language and are willing to maintain the translation, so it's not orphaned. -- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the language code. Use standard [IETF language tags](https://www.w3.org/International/articles/language-tags/), i.e. the same as is used by Wikipedia, *not* the code for a single country. These are usually just the two-letter lowercase code, for example, `fr` for French and `uk` for Ukrainian (not `ua`, which is for the country). For langauges that have variations, use the shortest tag, such as `zh-Hant`. +- To get it started, fork the repo, then submit a PR with the single file README-xx.md added, where xx is the language code. Use standard [IETF language tags](https://www.w3.org/International/articles/language-tags/), i.e. the same as is used by Wikipedia, *not* the code for a single country. These are usually just the two-letter lowercase code, for example, `fr` for French and `uk` for Ukrainian (not `ua`, which is for the country). For languages that have variations, use the shortest tag, such as `zh-Hant`. - Invite friends to review if possible. If desired, feel free to invite friends to help your original translation by letting them fork your repo, then merging their PRs. - Add links to your translation at the top of every README*.md file. (For consistency, the link should be added in alphabetical order by ISO code, and the anchor text should be in the native language.) - When done, indicate on the PR that it's ready to be merged into the main repo. diff --git a/README.md b/README.md index ff8d805..c359939 100644 --- a/README.md +++ b/README.md @@ -119,9 +119,9 @@ Notes: - Put the settings of environment variables as well as commands that should be executed when you login in `~/.bash_profile`. Separate configuration will be needed for shells you launch from graphical environment logins and `cron` jobs. -- Synchronize your configuration files (e.g `.bashrc` and `.bash_profile`) among various computers with Git. +- Synchronize your configuration files (e.g. `.bashrc` and `.bash_profile`) among various computers with Git. -- Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to to be a newline only using `IFS=$'\n'`. +- Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. `"$FOO"`. Prefer the `-0` or `-print0` options to enable null characters to delimit filenames, e.g. `locate -0 pattern | xargs -0 ls -al` or `find / -print0 -type d | xargs -0 ls -al`. To iterate on filenames containing whitespace in a for loop, set your IFS to be a newline only using `IFS=$'\n'`. - In Bash scripts, use `set -x` (or the variant `set -v`, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use `set -e` to abort on errors (nonzero exit code). Use `set -u` to detect unset variable usages. Consider `set -o pipefail` too, to on errors within pipes, too (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use `trap` on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message: ```bash From 49918189ad7daceda878fd81a62d3c9a8c387c5e Mon Sep 17 00:00:00 2001 From: Andreas Hofmann Date: Sat, 9 Jul 2016 10:37:20 +0200 Subject: [PATCH 299/337] README.md: Added default value variable expansion example Signed-off-by: Andreas Hofmann --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff8d805..8e93a9a 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ Notes: # continue in original dir ``` -- In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. +- In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: `${name:?error message}`. For example, if a Bash script requires a single argument, just write `input_file=${1:?usage: $0 input_file}`. Using a default value if a variable is empty: `${name:-default}`. If you want to have an additional (optional) parameter added to the previous example, you can use something like `output_file=${2:-logfile}`. If $2 is omitted and thus empty, `output_file` will be set to `logfile`. Arithmetic expansion: `i=$(( (i + 1) % 5 ))`. Sequences: `{1..10}`. Trimming of strings: `${var%suffix}` and `${var#prefix}`. For example if `var=foo.pdf`, then `echo ${var%.pdf}.txt` prints `foo.txt`. - Brace expansion using `{`...`}` can reduce having to re-type similar text and automate combinations of items. This is helpful in examples like `mv foo.{txt,pdf} some-dir` (which moves both files), `cp somefile{,.bak}` (which expands to `cp somefile somefile.bak`) or `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (which expands all possible combinations and creates a directory tree). From a2d687b2fceef584872c8b9899c1da7d1f87dccf Mon Sep 17 00:00:00 2001 From: Andreas Hofmann Date: Sat, 9 Jul 2016 13:22:20 +0200 Subject: [PATCH 300/337] Added curly-braces-in-script hint Signed-off-by: Andreas Hofmann --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 8e93a9a..85ad1bc 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,14 @@ Notes: diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` +- When writing scripts you may want to put all of your code in curly braces: +```sh +{ + # Your code here +} +``` +If the closing brace is missing, your script will be prevented from executing due to a syntax error. This makes sense when your script is going to be downloaded from the web, since it prevents partially downloaded scripts from executing. + - Know about "here documents" in Bash, as in `cat <logfile 2>&1` or `some-command &>logfile`. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add ` Date: Mon, 18 Jul 2016 07:42:08 +0200 Subject: [PATCH 301/337] Update sl translation up to jlevi/the-art-of-command-line@2c1826af7a0cf1a3614a5a7bf058372d4bf908e2 --- README-sl.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README-sl.md b/README-sl.md index a1e043e..2f8137e 100644 --- a/README-sl.md +++ b/README-sl.md @@ -52,7 +52,7 @@ Opombe: - Naučite se tudi vsaj enega tekstovno osnovanega urejevalnika. Idealno Vim (`vi`) saj v realnosti ni konkurence za naključno urejanje v terminalu (tudi, če uporabljate Emacs, velik IDE, ali moderni hipsterski urejevalnik večino časa). -- Spoznajte, kako brati dokumentacijo z `man` (za radovedne, `man man` izpiše številke sekcij, npr. 1 so "splošni" ukazi, 5 so datoteke/konvencije in 8 je za administracijo). Najdite strani man z `apropos`. Vedite, da nekateri ukazi niso izvršljivi, vendar vgrajeni v Bash in pomoč zanje lahko dobite s `help` in `help -d`. +- Spoznajte, kako brati dokumentacijo z `man` (za radovedne, `man man` izpiše številke sekcij, npr. 1 so "splošni" ukazi, 5 so datoteke/konvencije in 8 je za administracijo). Najdite strani man z `apropos`. Vedite, da nekateri ukazi niso izvršljivi, vendar vgrajeni v Bash in pomoč zanje lahko dobite s `help` in `help -d`. Z uporabo `type command` lahko izvedete, ali je ukaz izvršljiv, vgrajen v lupino ali pa je alias. - Naučite se o preusmeritvi izpisa in vnosa z uporabo `>` in `<` ter uporabo cevi `|`. Vedite, da `>` prepiše izpis datoteke in `>>` ga pripne. Naučite se o stdout in stderr. @@ -84,7 +84,7 @@ Opombe: - Za urejanje dolgih ukazov, po nastavitvi vašega urejevalnika (na primer `export EDITOR=vim`), **ctrl-x** **ctrl-e** bo odprlo trenutni ukaz v urejevalniku za več vrstično urejanje. Ali v stilu vi, **escape-v**. -- Da vidite nedavne ukaze, `history`. Na voljo je tudi veliko okrajšav, kot je `!$` (zadnji argument) in `!!` zadnji ukaz, čeprav so te pogostokrat enostavno zamenjani s **ctrl-r** in **alt-.**. +- Če si želite ogledati nedavne ukaze, uporabite `history`. Nadalje `!n` (kjer je `n` številka ukaza), da ga ponovno izvedete. Na voljo je tudi veliko okrajšav, najuporabnejša verjetno `!$` za zadnji argument in `!!` za zadnji ukaz (glejte "HISTORY EXPANSION" na man straneh). Vendar so le-te pogostokrat enostavno zamenjane s **ctrl-r** in **alt-.**. - Pojdite v vaš domači direktorij s `cd`. Dostopajte do datotek relativno glede na vaš domači direktorij s predpono `~` (npr. `~/.bashrc`). V `sh` skriptah se sklicujte na domači direktorij kot `$HOME`. @@ -151,7 +151,7 @@ Opombe: - Uporabite `man ascii` za dobro tabelo ASCII s heksadecimalnimi in decimalnimi vrednostmi. Za splošne informacije enkodiranja so priročni `man unicode`, `man utf-8` in `man latin1`. -- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. `byobu` lahko poveča t.i. screen ali tmux s ponujanjem več informacij in enostavnejšim upravljanjem. Bolj minimalna alternativa za samo obstojnost sej je `dtach`. +- Uporabite `screen` ali [`tmux`](https://tmux.github.io/), da muliplicirate zaslon, posebej uporabno na oddaljenih sejah ssh in da odstranite in se ponovno pripnete k seji. `byobu` lahko poveča t.i. screen ali tmux s ponujanjem več informacij in enostavnejšim upravljanjem. Bolj minimalna alternativa za samo obstojnost sej je [`dtach`](https://github.com/bogner/dtach). - V ssh je poznavanje, kako usmeriti tunel z `-L` ali `-D` (in občasno `-R`) je uporaben, npr. za dostopanje do spletnih strani iz oddaljenega strežnika. @@ -221,6 +221,8 @@ Opombe: - Naučite se o `tee`, da prekopirate iz stdin v datoteko in tudi v stdout, kot pri `ls -al | tee file.txt`. +- Za kompleksnejše kalkulacije, vključno z združevanjem, obračanjem polj in statističnimi izračuni, razmislite o [`datamash`](https://www.gnu.org/software/datamash/). + - Vedite, da lokalizacija vpliva na veliko orodij ukazne vrstice na subtilne načine, vključno z vrstnim redom (kolokacijo) in uspešnostjo. Večina namestitev Linux-a bo nastavila `LANG` ali druge spremenljivke lokalizacije na lokalne nastavitve kot je US English. Vendar bodite pozorni, saj se bo vrstni red spremenil, če spremenite lokalizacijo. In vedite, da rutine i18n lahko naredijo sortiranje ali poganjanje drugih ukazov *nekajkrat* počasnejše. V nekaterih situacijah (kot je skupek operacij ali unikatnih operacij spodaj) lahko v celoti varno ignorirate počasne rutine i18n in uporabite tradicionalne vrstne rede na osnovi bajtov z uporabo `export LC_ALL=C`. - Nastavite lahko določeno okolje ukaza s predpono njegovega sklicevanja na nastavitve spremenljivk okolja, kot pri `TZ=Pacific/Fiji date`. From cc0eab999ae90f1e69c9cb92bc23deef58395f8e Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Tue, 15 Mar 2016 02:37:46 +0100 Subject: [PATCH 302/337] Add Cash to Windows section --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ff8d805..e16081e 100644 --- a/README.md +++ b/README.md @@ -276,7 +276,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` -- Use `getfacl` and `setfacl` to save and restore file permissions. For example: +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt @@ -322,7 +322,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). -- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: +- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` @@ -556,6 +556,8 @@ These are items relevant *only* on OS X. - You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. +- Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). + ## More resources - [awesome-shell](https://github.com/alebcay/awesome-shell): A curated list of shell tools and resources. From bffd334093b7503113b9cc20d259fba8a67b554f Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 18 Jul 2016 07:23:00 +0200 Subject: [PATCH 303/337] Add extra note for Cash on Windows --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e16081e..02af8c3 100644 --- a/README.md +++ b/README.md @@ -556,7 +556,7 @@ These are items relevant *only* on OS X. - You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. -- Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). +- Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). Note that only very few Unix commands and command-line options are available in this environment. ## More resources From 5544d5c76c0e3962d029391378a6d33b42c8d588 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 18 Jul 2016 08:40:32 +0200 Subject: [PATCH 304/337] Add MinGW and MSYS to Windows section --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 02af8c3..e414f66 100644 --- a/README.md +++ b/README.md @@ -558,6 +558,8 @@ These are items relevant *only* on OS X. - Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). Note that only very few Unix commands and command-line options are available in this environment. +- Alternative option to get GNU developer tools (such as GCC) on Windows, is [MinGW](http://www.mingw.org/) and its [MSYS](http://www.mingw.org/wiki/msys) package that provides utilities such as bash, gawk, make and grep. MSYS doesn't have all the features compared to Cygwin. + ## More resources - [awesome-shell](https://github.com/alebcay/awesome-shell): A curated list of shell tools and resources. From d6e72918e634b56062cf2f590142b2d7e739cebc Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 18 Jul 2016 20:06:27 +0200 Subject: [PATCH 305/337] Fix sentence and remove some trailing whitespaces --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c359939..e404bba 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Notes: - For editing long commands, after setting your editor (for example `export EDITOR=vim`), **ctrl-x** **ctrl-e** will open the current command in an editor for multi-line editing. Or in vi style, **escape-v**. -- To see recent commands, `history`. Follow with `!n` (where `n` is the command number) to execute again. There are also many abbreviations you can use, the most useful probably being `!$` for last argument and `!!` for last command (see "HISTORY EXPANSION" in the man page). However, these are often easily replaced with **ctrl-r** and **alt-.**. +- To see recent commands, use `history`. Follow with `!n` (where `n` is the command number) to execute again. There are also many abbreviations you can use, the most useful probably being `!$` for last argument and `!!` for last command (see "HISTORY EXPANSION" in the man page). However, these are often easily replaced with **ctrl-r** and **alt-.**. - Go to your home directory with `cd`. Access files relative to your home directory with the `~` prefix (e.g. `~/.bashrc`). In `sh` scripts refer to the home directory as `$HOME`. @@ -276,7 +276,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` -- Use `getfacl` and `setfacl` to save and restore file permissions. For example: +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt @@ -322,7 +322,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). -- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: +- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` From 004ac552f37229e3bbb75789c7129190bc948f4c Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 18 Jul 2016 08:41:26 +0200 Subject: [PATCH 306/337] Add Bash on Ubuntu on Windows --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e414f66..8453a96 100644 --- a/README.md +++ b/README.md @@ -276,7 +276,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - File attributes are settable via `chattr` and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag: `sudo chattr +i /critical/directory/or/file` -- Use `getfacl` and `setfacl` to save and restore file permissions. For example: +- Use `getfacl` and `setfacl` to save and restore file permissions. For example: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt @@ -322,7 +322,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). -- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: +- If you delete a file and it doesn't free up expected disk space as reported by `du`, check whether the file is in use by a process: `lsof | grep deleted | grep "filename-of-my-big-file"` @@ -540,6 +540,10 @@ These are items relevant *only* on OS X. ## Windows only +These items are relevant *only* on Windows. + +- Since Window 10 use [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about), which provides a familiar Bash environment with Unix command line utilities and allows Linux programs to run on Windows. + - Access the power of the Unix shell under Microsoft Windows by installing [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. - Install additional Unix programs with the Cygwin's package manager. From 496dd783305da7b7b2ca08531244e1ca0951b0c7 Mon Sep 17 00:00:00 2001 From: Anna Damtsa Date: Thu, 21 Jul 2016 23:33:55 +0300 Subject: [PATCH 307/337] el: Update translation --- README-el.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README-el.md b/README-el.md index dd7600c..2130242 100644 --- a/README-el.md +++ b/README-el.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) Η ευχέρεια στη χρήση της γραμμής εντολών είναι μία δεξιότητα συχνά παραμελημένη ή που θεωρείται ότι είναι για τους λίγους. -Όμως η ευχέρια αυτή βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες και εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. +Όμως η ευχέρια αυτή βελτιώνει την ευελιξία και την παραγωγικότητά σας ως μηχανικός τόσο με προφανείς όσο και με λιγότερο ευδιάκριτους τρόπους. Αυτή είναι μία συλλογή από σημειώσεις και συμβουλές που αφορούν τη χρήση της γραμμής εντολών και τις οποίες βρήκαμε χρήσιμες, ενώ εργαζόμασταν σε Linux. Κάποιες συμβουλές είναι εισαγωγικές και μερικές πιο συγκρεκριμένες, εξειδικευμένες ή εις βάθος. Αυτή η σελίδα δεν είναι μεγάλη, αλλά αν μπορείτε να τα θυμάστε όλα, τότε γνωρίζετε πολλά. Αυτή η εργασία είναι αποτέλεσμα [πολλών συγγραφέων και μεταφραστών](AUTHORS.md). @@ -52,7 +52,7 @@ - Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). -- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. +- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. Μπορείτε να βρείτε αν μια εντολή είναι εκτελέσιμο, εσωτερική εντολή φλοιού ή ένα ακόμη όνομα (συντόμευση) που έχει αντιστοιχηθεί στην εντολή αυτή χρησιμοποιώντας την εντολή `type command`. - Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. @@ -82,7 +82,7 @@ - Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή αν έχετε ορίσει συντομεύσεις τύπου vi, **escape-v**. -- Για να δείτε πρόσφατες εντολές, `history`. Επίσης, υπάρχουν πολλές συντομεύσεις όπως `!$` (τελευταίο όρισμα) και `!!` (τελευταία εντολή), αν και συχνά αντικαθίστανται από **ctrl-r** και **alt-.**. +- Για να δείτε πρόσφατες εντολές χρησιμοποιήστε την εντολή `history`. Ακολουθήστε την με την εντολή `!n` (όπου `n` είναι ο αριθμός της εντολής) για να την εκτελέσετε ξανά. Υπάρχουν τόσο πολλές συντομεύσεις που μπορείτε να χρησιμοποιήσετε. Από αυτές οι πιο χρήσιμες μάλλον είναι η `!$` για την τελευταία παράμετρο και η `!!` για την τελευταία εντολή (δείτε το "HISTORY EXPANSION" στη σελίδα man της εντολής). Όμως, αυτές συχνά εύκολα αντικαθίστανται από **ctrl-r** και **alt-.**. - Πηγαίνετε στον προσωπικό σας κατάλογο (home) με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον προσωπικό κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον προσωπικό σας κατάλογο ως `$HOME`. @@ -149,7 +149,7 @@ - Χρησιμοποιήστε `man ascii` για έναν καλό πίνακα ASCII, με δεξαεξαδικές και δεκαδικές τιμές. Για γενικές πληροφορίες που αφορούν την κωδικοποίηση, οι `man unicode`, `man utf-8` και `man latin1`είναι χρήσιμες. -- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία της οθόνης. Αυτό ιδιαίτερα χρήσιμο σε απομακρυσμένες συνεδρίες ssh και για να διακόψετε ή να επαναφέρετε μια συνεδρία. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση συνεδριών είναι η `dtach`. +- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία της οθόνης. Αυτό ιδιαίτερα χρήσιμο σε απομακρυσμένες συνεδρίες ssh και για να διακόψετε ή να επαναφέρετε μια συνεδρία. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση συνεδριών είναι η [`dtach`](https://github.com/bogner/dtach). - Με ssh, το να γνωρίζετε πώς να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. @@ -218,6 +218,8 @@ - Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. +- Για πιο πολύπλοκους υπολογισμους, όπως ομαδοποίηση, αναστροφή πεδίων και στατιστικοί υπολογισμοί, έχετε υπόψη σας την εντολή [`datamash`](https://www.gnu.org/software/datamash/). + - Να γνωρίζετε ότι η τοπική διαμόρφωση του συστήματος (locale, π.χ. ελληνικό) επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες σχετικές με locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότι η ταξινόμηση μπορεί να αλλάξει, αν θέσετε άλλο locale. Και να γνωρίζετε ότι οι διεθνοποιημένες ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές διεθνοποιημένες ρουτίνες και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. - Μπορείτε να ορίσετε ένα συγκεκριμένο περιβάλλον για μία εντολή προσθέτοντάς της ως πρόθεμα τις ρυθμίσεις της μεταβλητής περιβάλλοντος, όπως στην `TZ=Pacific/Fiji date`. @@ -532,6 +534,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πώς να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Περισσότερες εντολές και εργαλεία χρήσιμα για την άσκηση της επιστήμη δεδομένων, από το βιβλίο με το ίδιο όνομα. ## Αποποίηση ευθύνης From 66b854e7e638e08a5978161cac7a0a50511bdb22 Mon Sep 17 00:00:00 2001 From: Anna Damtsa Date: Fri, 22 Jul 2016 21:17:06 +0300 Subject: [PATCH 308/337] el: Update translation --- README-el.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README-el.md b/README-el.md index 2130242..06bbff1 100644 --- a/README-el.md +++ b/README-el.md @@ -52,7 +52,7 @@ - Μάθετε τουλάχιστον έναν text-based επεξεργαστή κειμένου καλά. Ιδανικά τον Vim (`vi`), καθώς στην πραγματικότητα δεν υπάρχει ανταγωνισμός όσον αφορά την τυχαία επεξεργασία κειμένου σε τερματικό (ακόμη κι αν χρησιμοποιείτε Emacs, ένα μεγάλο IDE ή κάποιον σύγχρονο μοδάτο επεξεργαστή κειμένου τον περισσότερο χρόνο). -- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμες αλλά ενσωματωμένες στον Bash και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. Μπορείτε να βρείτε αν μια εντολή είναι εκτελέσιμο, εσωτερική εντολή φλοιού ή ένα ακόμη όνομα (συντόμευση) που έχει αντιστοιχηθεί στην εντολή αυτή χρησιμοποιώντας την εντολή `type command`. +- Να γνωρίζετε πώς να διαβάζετε τεκμηρίωση με την εντολή `man` (για τον περίεργο, η εντολή `man man` εμφανίζει σε λίστα τους αριθμούς των ενοτήτων, π.χ. η 1 περιέχει τις εντολές του φλοιού, η 5 αρχεία/συμβάσεις και η 8 είναι για διαχείριση). Αναζητήστε σελίδες man με την εντολή `apropos`. Να γνωρίζετε ότι μερικές εντολές δεν είναι εκτελέσιμα προγράμματα αλλά ενσωματωμένες στον φλοιό και μπορείτε να ζητήσετε βοήθεια σχετικά με αυτές με `help` και `help -d`. Μπορείτε να βρείτε αν μια εντολή είναι εκτελέσιμο πρόγραμμα, ή ενσωματωμένη στον φλοιό ή ένα ακόμη όνομα (συντόμευση) που έχει αντιστοιχηθεί στην εντολή αυτή χρησιμοποιώντας την εντολή `type command`. - Μάθετε για την ανακατεύθυνση της εξόδου και της εισόδου με χρήση των τελεστών `>` και `<` και για τις σωληνώσεις εντολών με χρήση του `|`. Να γνωρίζετε ότι ο τελεστής `>` αντικαθιστά το αρχείο εξόδου και ο `>>` προσθέτει στο τέλος του αρχείου. Μάθετε για τα stdout και stderr. @@ -82,7 +82,7 @@ - Για την επεξεργασία μεγάλων εντολών, αφού ορίσετε τις ρυθμίσεις του επεξεργαστή κειμένου σας (για παράδειγμα `export EDITOR=vim`), με **ctrl-x** **ctrl-e** θα ανοίξει η τρέχουσα εντολή σε έναν επεξεργαστή κειμένου για επεξεργασία πολλών γραμμών. Ή αν έχετε ορίσει συντομεύσεις τύπου vi, **escape-v**. -- Για να δείτε πρόσφατες εντολές χρησιμοποιήστε την εντολή `history`. Ακολουθήστε την με την εντολή `!n` (όπου `n` είναι ο αριθμός της εντολής) για να την εκτελέσετε ξανά. Υπάρχουν τόσο πολλές συντομεύσεις που μπορείτε να χρησιμοποιήσετε. Από αυτές οι πιο χρήσιμες μάλλον είναι η `!$` για την τελευταία παράμετρο και η `!!` για την τελευταία εντολή (δείτε το "HISTORY EXPANSION" στη σελίδα man της εντολής). Όμως, αυτές συχνά εύκολα αντικαθίστανται από **ctrl-r** και **alt-.**. +- Για να δείτε πρόσφατες εντολές χρησιμοποιήστε την εντολή `history`. Ακολουθήστε την με την εντολή `!n` (όπου `n` είναι ο αριθμός της εντολής) για να την εκτελέσετε ξανά. Υπάρχουν πάρα πολλές συντομεύσεις που μπορείτε να χρησιμοποιήσετε. Από αυτές οι πιο χρήσιμες μάλλον είναι η `!$` για την τελευταία παράμετρο και η `!!` για την τελευταία εντολή (δείτε το "HISTORY EXPANSION" στην τεκμηρίωση του φλοιού). Όμως, αυτές συχνά εύκολα αντικαθίστανται από **ctrl-r** και **alt-.**. - Πηγαίνετε στον προσωπικό σας κατάλογο (home) με `cd`. Αποκτήστε πρόσβαση σε αρχεία που βρίσκονται σε σχετική θέση με τον προσωπικό κατάλογό σας με το πρόθεμα `~` (π.χ. `~/.bashrc`). Σε `sh` script μπορείτε να αναφέρεστε στον προσωπικό σας κατάλογο ως `$HOME`. @@ -149,7 +149,7 @@ - Χρησιμοποιήστε `man ascii` για έναν καλό πίνακα ASCII, με δεξαεξαδικές και δεκαδικές τιμές. Για γενικές πληροφορίες που αφορούν την κωδικοποίηση, οι `man unicode`, `man utf-8` και `man latin1`είναι χρήσιμες. -- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία της οθόνης. Αυτό ιδιαίτερα χρήσιμο σε απομακρυσμένες συνεδρίες ssh και για να διακόψετε ή να επαναφέρετε μια συνεδρία. H `byobu` μπορεί να βελτιώσει την οθόνη ή tmux παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση συνεδριών είναι η [`dtach`](https://github.com/bogner/dtach). +- Χρησιμοποιήστε `screen` ή [`tmux`](https://tmux.github.io/) για να ενεργοποιήσετε την πολυπλεξία της οθόνης. Αυτό είναι ιδιαίτερα χρήσιμο σε απομακρυσμένες συνεδρίες ssh και για να διακόψετε ή να επαναφέρετε μια συνεδρία. H εντολή `byobu` ή `tmux` μπορεί να βελτιώσει την οθόνη παρέχοντας περισσότερες πληροφορίες και πιο εύκολη διαχείριση. Μία πιο απλή εναλλακτική μόνο για τη διατήρηση συνεδριών είναι η [`dtach`](https://github.com/bogner/dtach). - Με ssh, το να γνωρίζετε πώς να προωθήσετε μία θύρα με τις επιλογές `-L` ή `-D` (και καμιά φορά με την `-R`) είναι χρήσιμο, π.χ. για να έχετε πρόσβαση σε ιστοσελίδες από έναν απομακρυσμένο server. @@ -218,7 +218,7 @@ - Να γνωρίζετε για την `tee` για να αντιγράφετε από το stdin σε ένα αρχείο κι επίσης στο stdout, όπως στην `ls -al | tee file.txt`. -- Για πιο πολύπλοκους υπολογισμους, όπως ομαδοποίηση, αναστροφή πεδίων και στατιστικοί υπολογισμοί, έχετε υπόψη σας την εντολή [`datamash`](https://www.gnu.org/software/datamash/). +- Για πιο πολύπλοκους υπολογισμούς, όπως ομαδοποίηση, αναστροφή πεδίων και στατιστικούς υπολογισμούς, έχετε υπόψη σας την εντολή [`datamash`](https://www.gnu.org/software/datamash/). - Να γνωρίζετε ότι η τοπική διαμόρφωση του συστήματος (locale, π.χ. ελληνικό) επηρεάζει πολλά εργαλεία γραμμής εντολών με λιγότερο προφανείς τρόπους, συμπεριλαμβανομένων της σειράς ταξινόμησης (collation) και της απόδοσης. Οι περισσότερες εγκαταστάσεις Linux θα έχουν αναθέσει στη μεταβλητή `LANG` ή σε άλλες σχετικές με locale μεταβλητές τιμή μιας τοπική ρύθμισης όπως η Αγγλική ΗΠΑ. Αλλά να έχετε υπόψη ότι η ταξινόμηση μπορεί να αλλάξει, αν θέσετε άλλο locale. Και να γνωρίζετε ότι οι διεθνοποιημένες ρουτίνες μπορούν να κάνουν την ταξινόμηση ή άλλες εντολές να εκτελούνται *πολλές φορές* πιο αργά. Σε μερικές περιπτώσεις (όπως στον ορισμό διεργασιών ή της μοναδικότητας διεργασιών παρακάτω) μπορείτε με ασφάλεια να αγνοήσετε εντελώς αργές διεθνοποιημένες ρουτίνες και να χρησιμοποιήσετε παραδοσιακή ταξινόμηση με βάση bytes, χρησιμοποιώντας `export LC_ALL=C`. @@ -534,7 +534,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) για να γράφετε καλύτερα scripts φλοιού. - [shellcheck](https://github.com/koalaman/shellcheck): Ένα εργαλείο στατικής ανάλυσης για scripts για φλοιό. Στην ουσία, lint για bash/sh/zsh. - [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): Οι δυστυχώς περίπλοκες μικρολεπτομέρειες του πώς να διαχειριστεί κανείς σωστά ονόματα αρχείων σε scripts για φλοιό. -- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Περισσότερες εντολές και εργαλεία χρήσιμα για την άσκηση της επιστήμη δεδομένων, από το βιβλίο με το ίδιο όνομα. +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): Περισσότερες εντολές και εργαλεία χρήσιμα για την άσκηση της επιστήμης δεδομένων, από το βιβλίο με το ίδιο όνομα. ## Αποποίηση ευθύνης From 61f3f8463399377a617f422e7d68fe85554e40b0 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 23 Jul 2016 01:39:20 +0200 Subject: [PATCH 309/337] Fix typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8453a96..113aa49 100644 --- a/README.md +++ b/README.md @@ -542,7 +542,7 @@ These are items relevant *only* on OS X. These items are relevant *only* on Windows. -- Since Window 10 use [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about), which provides a familiar Bash environment with Unix command line utilities and allows Linux programs to run on Windows. +- Since Windows 10, you can use [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about), which provides a familiar Bash environment with Unix command line utilities and allows Linux programs to run on Windows. - Access the power of the Unix shell under Microsoft Windows by installing [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. @@ -562,7 +562,7 @@ These items are relevant *only* on Windows. - Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). Note that only very few Unix commands and command-line options are available in this environment. -- Alternative option to get GNU developer tools (such as GCC) on Windows, is [MinGW](http://www.mingw.org/) and its [MSYS](http://www.mingw.org/wiki/msys) package that provides utilities such as bash, gawk, make and grep. MSYS doesn't have all the features compared to Cygwin. +- An alternative option to get GNU developer tools (such as GCC) on Windows is [MinGW](http://www.mingw.org/) and its [MSYS](http://www.mingw.org/wiki/msys) package, which provides utilities such as bash, gawk, make and grep. MSYS doesn't have all the features compared to Cygwin. ## More resources From abdf4d9760d0544c1efd332c1d081d0e647b12b5 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Sat, 23 Jul 2016 17:35:17 +0200 Subject: [PATCH 310/337] Add more clarification to Windows section --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 113aa49..c637aa4 100644 --- a/README.md +++ b/README.md @@ -542,7 +542,7 @@ These are items relevant *only* on OS X. These items are relevant *only* on Windows. -- Since Windows 10, you can use [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about), which provides a familiar Bash environment with Unix command line utilities and allows Linux programs to run on Windows. +- On Windows 10, you can use [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about), which provides a familiar Bash environment with Unix command line utilities. On the plus side, this allows Linux programs to run on Windows. On the other hand this does not support the running of Windows programs from the Bash prompt. - Access the power of the Unix shell under Microsoft Windows by installing [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. @@ -562,7 +562,7 @@ These items are relevant *only* on Windows. - Another option to get Unix look and feel under Windows is [Cash](https://github.com/dthree/cash). Note that only very few Unix commands and command-line options are available in this environment. -- An alternative option to get GNU developer tools (such as GCC) on Windows is [MinGW](http://www.mingw.org/) and its [MSYS](http://www.mingw.org/wiki/msys) package, which provides utilities such as bash, gawk, make and grep. MSYS doesn't have all the features compared to Cygwin. +- An alternative option to get GNU developer tools (such as GCC) on Windows is [MinGW](http://www.mingw.org/) and its [MSYS](http://www.mingw.org/wiki/msys) package, which provides utilities such as bash, gawk, make and grep. MSYS doesn't have all the features compared to Cygwin. MinGW is particularly useful for creating native Windows ports of Unix tools. ## More resources From 871fb04450006e904a61f9779881d9c292b58c67 Mon Sep 17 00:00:00 2001 From: Timothy Qiu Date: Wed, 27 Jul 2016 11:00:24 +0800 Subject: [PATCH 311/337] zh: Corrects punctuation errors --- README-zh.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6262189..6ca766c 100644 --- a/README-zh.md +++ b/README-zh.md @@ -35,7 +35,7 @@ 涵盖范围: -- 这篇文章对刚接触命令行的新手,以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子),以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 +- 这篇文章对刚接触命令行的新手,以及具有命令行使用经验的人都有用处。本文致力于做到*覆盖面广*(尽量包括一切重要的内容),*具体*(给出最常见的具体的例子),以及*简洁*(避免不必要的,或是可以在其他地方轻松查到的细枝末节)。每个技巧在特定情境下或是基本的,或是能显著节约时间。 - 本文为 Linux 所写,除了[仅限 OS X 系统](#仅限-os-x-系统)和[仅限 Windows 系统](#仅限-windows-系统)的部分。其它节中的大部分内容都适用于其它 Unix 系统或 OS X,甚至 Cygwin。 - 本文关注于交互式 Bash,尽管很多技巧也适用于其他 shell 或 Bash 脚本。 - 本文包括了“标准的”Unix 命令和需要安装特定包的命令,只要它们足够重要。 @@ -269,9 +269,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 拆分文件,查看 `split`(按大小拆分)和 `csplit`(按模式拆分)。 -- 用 [`dateutils`](http://www.fresse.org/dateutils/) 中的 `dateadd`, `datediff`, `strptime` 等工具操作日期和时间表达式。 +- 用 [`dateutils`](http://www.fresse.org/dateutils/) 中的 `dateadd`、`datediff`、`strptime` 等工具操作日期和时间表达式。 -- 使用 `zless`,`zmore`,`zcat` 和 `zgrep` 对压缩过的文件进行操作。 +- 使用 `zless`、`zmore`、`zcat` 和 `zgrep` 对压缩过的文件进行操作。 - 文件属性可以通过 `chattr` 进行设置,它比文件权限更加底层。例如,为了保护文件不被意外删除,可以使用不可修改标记:`sudo chattr +i /critical/directory/or/file` @@ -527,7 +527,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用 `pbcopy` 复制任何命令的输出到桌面应用,用 `pbpaste` 粘贴输入。 -- 若要在 OS X 终端中将 Option 键视为 alt 键(例如在上面介绍的 **alt-b**, **alt-f** 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。 +- 若要在 OS X 终端中将 Option 键视为 alt 键(例如在上面介绍的 **alt-b**、**alt-f** 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 键作为 Meta 键”。 - 用 `open` 或者 `open -a /Applications/Whatever.app` 使用桌面应用打开文件。 From aa816d46edf7288632214a5a6636552bd692d1a1 Mon Sep 17 00:00:00 2001 From: Timothy Qiu Date: Wed, 27 Jul 2016 11:20:23 +0800 Subject: [PATCH 312/337] zh: Updates translation --- README-zh.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-zh.md b/README-zh.md index 6ca766c..77214bb 100644 --- a/README-zh.md +++ b/README-zh.md @@ -53,7 +53,7 @@ - 学习并掌握至少一个基于文本的编辑器。通常 Vim (`vi`) 会是你最好的选择,因为在终端里进行随机编辑,Vim 真的毫无敌手,哪怕是 Emacs、某大型 IDE 甚至时下非常流行的编辑器。 -- 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。 +- 学会如何使用 `man` 命令去阅读文档。学会使用 `apropos` 去查找文档。了解有些命令并不对应可执行文件,而是Bash内置的,可以使用 `help` 和 `help -d` 命令获取帮助信息。你可以用 `type 命令` 来判断它到底是可执行文件、shell 内置命令、还是别名。 - 学会使用 `>` 和 `<` 来重定向输出和输入,学会使用 `|` 来重定向管道。明白 `>` 会覆盖了输出文件而 `>>` 是在文件末添加。了解标准输出 stdout 和标准错误 stderr。 @@ -85,7 +85,7 @@ - 为了方便地键入长命令,在设置你的编辑器后(例如 `export EDITOR=vim`),键入 **ctrl-x** **ctrl-e** 会打开一个编辑器来编辑当前命令。在 vi 模式下则键入 **escape-v** 实现相同的功能。 -- 键入 `history` 查看命令行历史记录。其中有许多缩写,例如 `!$`(最后键入的参数)和 `!!`(最后键入的命令),尽管通常被 **ctrl-r** 和 **alt-.** 取代。 +- 键入 `history` 查看命令行历史记录,再用 `!n`(`n` 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是用 `!$` 指代上次键入的参数,以及用 `!!` 指代上次键入的命令了(参考 man 页面中的“HISTORY EXPANSION”)。不过这些通常被 **ctrl-r** 和 **alt-.** 取代。 - 要进入 home 目录可以用 `cd`。要访问你的 home 目录中的文件,可以使用前缀 `~`(例如 `~/.bashrc`)。在 `sh` 脚本里则用 `$HOME` 指代 home 目录。 @@ -152,7 +152,7 @@ - 使用 `man ascii` 查看具有十六进制和十进制值的ASCII表。`man unicode`,`man utf-8`,以及 `man latin1` 有助于你去了解通用的编码信息。 -- 使用 `screen` 或 [`tmux`](https://tmux.github.io/) 来使用多个屏幕,当你在使用 ssh 时(保存 session 信息)将尤为有用。另一个轻量级的解决方案是 `dtach`。 +- 使用 `screen` 或 [`tmux`](https://tmux.github.io/) 来使用多个屏幕,当你在使用 ssh 时(保存 session 信息)将尤为有用。另一个轻量级的解决方案是 [`dtach`](https://github.com/bogner/dtach)。 - ssh 中,了解如何使用 `-L` 或 `-D`(偶尔需要用 `-R`)去开启隧道是非常有用的,例如当你需要从一台远程服务器上访问 web。 From af4c42343de0edeed504ecd0c67bf2ebbc1889ee Mon Sep 17 00:00:00 2001 From: ikenshu Date: Fri, 12 Aug 2016 10:47:43 -0400 Subject: [PATCH 313/337] Adding windows only translations in spanish versions where is missing --- README-es.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README-es.md b/README-es.md index e9a7b7d..61949a1 100644 --- a/README-es.md +++ b/README-es.md @@ -506,6 +506,32 @@ Estos son puntos relevantes *únicamente* para OS X. - Para obtener la información de la versión del OS X, usa `sw_vers`. +## Solo para Windows + +Estos son puntos relevantes *únicamente* para Windows. + +- En Windows 10, puedes usar [Bash de Ubuntu en Windows](https://msdn.microsoft.com/commandline/wsl/about) que proporciona un entorno familiarizado con la línea de comandos en Unix. Por el lado bueno, esto permite a los programas de Linux correr en Windows y por otra parte, no permite a los programas de Windows ejecutarse en la linea de comandos Bash. +- Accede al poder de Unix shell bajo Microsoft Windows instalando [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. + +- Instala programas adicionales de Unix con el manejador de paquetes de Cygwin + +- Usa `mintty` como tu linea de comando. + +- Accede al portapapeles de Windows a través de `/dev/clipboard`. + +- Ejecuta `cygstart` para abrir un archivo arbitrario a través de su aplicación registrada. + +- Accede al registro de Windows con `regtool`. + +- Ten en cuenta que la ruta `C:\` se transofrma en `/cygdrive/c` bajo Cygwin, y que Cygwin `/` aparece en `C:\cygwin`. Este es el script más útil en los programas que ejecuta Windows. + +- Puede ejecutar la mayoría de los scripts del sistema administrativo desde la linea de comandos haciendo `wmic`. + +- Otra opción para tener Unix que se vea y se sienta en WIndows is [Cash](ttps://github.com/dthree/cash). Ten en cuenta que solo unos pocos comandos de Unix y opciones de la línea de comandos estan disponibles en este entorno. + +-Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y su [MSYS](http://www.mingw.org/wiki/msys) manejador de paquetes, que proporciona servicios como bash, gawk, make y grep. MSYS no tiene todas las caracteristicas comparado con Cygwin. MinGW es particularmente útil para la creación de puertos nativos Windows de herramientas de Unix. + + ## Más recursos - [awesome-shell](https://github.com/alebcay/awesome-shell): Una lista curada de herramientas shell y recursos. From d1cffa8354c486366069c86638a30f7ec75d4c17 Mon Sep 17 00:00:00 2001 From: Eric Guirbal Date: Sat, 13 Aug 2016 05:29:40 +0200 Subject: [PATCH 314/337] fr: Synchronize the translation --- README-fr.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 62c8dcb..db17f49 100644 --- a/README-fr.md +++ b/README-fr.md @@ -62,6 +62,7 @@ Idéalement Vim (`vi`), car il n'a pas vraiment de concurrent lorsqu'il s'agit d - 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`. +Utilisez `type command` pour déterminer si une commande est un exécutable, une commande interne du shell ou un alias. - 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. @@ -202,7 +203,7 @@ Pour des informations générales sur l'encodage, `man unicode`, `man utf-8` et - Utilisez `screen` ou [`tmux`](https://tmux.github.io/) pour multiplexer une fenêtre de terminal, particulièrement utile pour des sessions SSH distantes, et pour détacher et rattacher une session. `byobu` peut améliorer screen ou tmux en fournissant plus d'informations et une gestion plus facile. -Une alternative plus légère pour la persistance des sessions seulement est `dtach`. +Une alternative plus légère pour la persistance des sessions seulement est [`dtach`](https://github.com/bogner/dtach/). - Il est utile de savoir comment créer un tunnel SSH avec `-L` ou `-D` (et occasionnellement `-R`), par exemple pour accéder à des sites web à partir d'un serveur distant. @@ -637,6 +638,12 @@ Pour écrire des scripts Bash multi-plateformes évitez d'utiliser de telles com ## Uniquement Windows +Ce qui suit ne concerne que Windows. + +- Sur Windows 10, [Bash sous Ubuntu sur Windows](https://msdn.microsoft.com/commandline/wsl/about) fournit un environnement Bash avec les utilitaires en ligne de commande d'Unix. +Du côté positif, cela permet à des programmes Linux de s'exécuter sous Windows. +En revanche, il n'est pas possible de lancer des programmes Windows depuis le *prompt* de Bash. + - Installez [Cygwin](http://cygwin.com) pour bénéficier de la puissance du shell Unix sous Microsoft Windows. La majorité de ce qui est décrit dans ce document fonctionnera *out of the box*. @@ -656,6 +663,12 @@ C'est particulièrement utile pour invoquer des programmes Windows dans les scri - Vous pouvez accomplir et scripter la plupart des tâches d'administration système de Windows depuis la ligne de commande en apprenant et en utilisant `wmic`. +- Une autre possibilité pour avoir le *look and feel* Unix sous Windows est d'utiliser [Cash](https://github.com/dthree/cash). +Notez que très peu de commandes Unix et d'options de ligne de commande sont disponibles dans cet environnement. + +- Une solution alternative pour se procurer les outils de développement GNU sous Windows, tels que GCC, est [MinGW](http://www.mingw.org/) et son package [MSYS](http://www.mingw.org/wiki/msys) qui fournit des utilitaires comme bash, gawk, make et grep. +MSYS ne dispose pas de toutes les fonctionnalités de Cygwin. +MinGW est particulièrement utile pour porter sous Windows des outils Unix. ## Autres ressources From 3fbdeb9520036bec760b64df42cd6695b9942718 Mon Sep 17 00:00:00 2001 From: ikenshu Date: Wed, 17 Aug 2016 08:36:14 -0400 Subject: [PATCH 315/337] Adding corrections before merge --- README-es.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README-es.md b/README-es.md index 61949a1..1d7d08a 100644 --- a/README-es.md +++ b/README-es.md @@ -510,12 +510,12 @@ Estos son puntos relevantes *únicamente* para OS X. Estos son puntos relevantes *únicamente* para Windows. -- En Windows 10, puedes usar [Bash de Ubuntu en Windows](https://msdn.microsoft.com/commandline/wsl/about) que proporciona un entorno familiarizado con la línea de comandos en Unix. Por el lado bueno, esto permite a los programas de Linux correr en Windows y por otra parte, no permite a los programas de Windows ejecutarse en la linea de comandos Bash. -- Accede al poder de Unix shell bajo Microsoft Windows instalando [Cygwin](https://cygwin.com/). Most of the things described in this document will work out of the box. +-En Windows 10, puedes usar [Bash de Ubuntu en Windows](https://msdn.microsoft.com/commandline/wsl/about) que proporciona un entorno familiar con la línea de comandos en Unix. En el lado positivo, este permite a los programas de Linux ejecutarse en Windows. Por otro lado este no soporta ejecutar de programas de Windows desde la línea de comandos Bash. +- Accede al poder del shell de Unix en Microsoft Windows instalando [Cygwin](https://cygwin.com/). La mayoría de las cosas descritas en este documento funcionaran en su configuración por defecto. -- Instala programas adicionales de Unix con el manejador de paquetes de Cygwin +- Instala programas adicionales de Unix con el gestor de paquetes de Cygwin -- Usa `mintty` como tu linea de comando. +- Usa `mintty` como tu línea de comando. - Accede al portapapeles de Windows a través de `/dev/clipboard`. @@ -523,13 +523,13 @@ Estos son puntos relevantes *únicamente* para Windows. - Accede al registro de Windows con `regtool`. -- Ten en cuenta que la ruta `C:\` se transofrma en `/cygdrive/c` bajo Cygwin, y que Cygwin `/` aparece en `C:\cygwin`. Este es el script más útil en los programas que ejecuta Windows. +- Ten en cuenta que la ruta `C:\` del disco Windows se transofrma en `/cygdrive/c` en Cygwin, y que Cygwin `/` aparece en `C:\cygwin` en Windows. Convierte entre Cygwin y rutas de archivos estilo Windows con. Este es el más útil de los scripts que invocan programas de Windows. -- Puede ejecutar la mayoría de los scripts del sistema administrativo desde la linea de comandos haciendo `wmic`. +- Puedes ejecutar y hacer scripts de la mayoría de las tareas administrativas del sistema de Windows desde la línea de comandos aprendiendo y usando `wmic`. -- Otra opción para tener Unix que se vea y se sienta en WIndows is [Cash](ttps://github.com/dthree/cash). Ten en cuenta que solo unos pocos comandos de Unix y opciones de la línea de comandos estan disponibles en este entorno. +-Otra opción para obtener la apariencia y sensación de Unix en WIndows es [Cash](ttps://github.com/dthree/cash). Ten en cuenta que muy pocos comandos de Unix y opciones de la línea de comandos están disponibles en este entorno. --Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y su [MSYS](http://www.mingw.org/wiki/msys) manejador de paquetes, que proporciona servicios como bash, gawk, make y grep. MSYS no tiene todas las caracteristicas comparado con Cygwin. MinGW es particularmente útil para la creación de puertos nativos Windows de herramientas de Unix. +-Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y [MSYS](http://www.mingw.org/wiki/msys) su paquete, que proporciona utilidades tales como bash, gawk, make y grep. MSYS no tiene todas las características al compararse con Cygwin. MinGW es particularmente útil para crear ejecutables nativos de Windows de herramientas Unix. ## Más recursos From a740e519a5504c7f32786b36471d3392ab6fdd90 Mon Sep 17 00:00:00 2001 From: Ryan Delaney Date: Wed, 17 Aug 2016 14:39:34 -0700 Subject: [PATCH 316/337] xz instead of 7z per #417 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4b41e91..4189bbd 100644 --- a/README.md +++ b/README.md @@ -457,7 +457,7 @@ A few examples of piecing together commands: - `apg`: generates random passwords -- `7z`: high-ratio file compression +- `xz`: high-ratio file compression - `ldd`: dynamic library info From 4774be327eda97367d46761270ae088787a058e3 Mon Sep 17 00:00:00 2001 From: ikenshu Date: Thu, 18 Aug 2016 10:35:01 -0400 Subject: [PATCH 317/337] Adding more corrections --- README-es.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-es.md b/README-es.md index 1d7d08a..d3e4dab 100644 --- a/README-es.md +++ b/README-es.md @@ -510,7 +510,7 @@ Estos son puntos relevantes *únicamente* para OS X. Estos son puntos relevantes *únicamente* para Windows. --En Windows 10, puedes usar [Bash de Ubuntu en Windows](https://msdn.microsoft.com/commandline/wsl/about) que proporciona un entorno familiar con la línea de comandos en Unix. En el lado positivo, este permite a los programas de Linux ejecutarse en Windows. Por otro lado este no soporta ejecutar de programas de Windows desde la línea de comandos Bash. +-En Windows 10, puedes usar [Bash de Ubuntu en Windows](https://msdn.microsoft.com/commandline/wsl/about) que proporciona un entorno familiar con la línea de comandos en Unix. Su lado positivo, este permite a los programas de Linux ejecutarse en Windows. Por otro lado este no soporta ejecutar de programas de Windows desde la línea de comandos Bash. - Accede al poder del shell de Unix en Microsoft Windows instalando [Cygwin](https://cygwin.com/). La mayoría de las cosas descritas en este documento funcionaran en su configuración por defecto. - Instala programas adicionales de Unix con el gestor de paquetes de Cygwin @@ -523,13 +523,13 @@ Estos son puntos relevantes *únicamente* para Windows. - Accede al registro de Windows con `regtool`. -- Ten en cuenta que la ruta `C:\` del disco Windows se transofrma en `/cygdrive/c` en Cygwin, y que Cygwin `/` aparece en `C:\cygwin` en Windows. Convierte entre Cygwin y rutas de archivos estilo Windows con. Este es el más útil de los scripts que invocan programas de Windows. +- Ten en cuenta que la ruta `C:\` del disco Windows se transforma en `/cygdrive/c` en Cygwin, y que Cygwin `/` aparece en `C:\cygwin` en Windows. Convierte entre Cygwin y rutas de archivos estilo Windows con `cygpath`. Este es el más útil de los scripts que invocan programas de Windows. - Puedes ejecutar y hacer scripts de la mayoría de las tareas administrativas del sistema de Windows desde la línea de comandos aprendiendo y usando `wmic`. --Otra opción para obtener la apariencia y sensación de Unix en WIndows es [Cash](ttps://github.com/dthree/cash). Ten en cuenta que muy pocos comandos de Unix y opciones de la línea de comandos están disponibles en este entorno. +- Otra opción para obtener la apariencia y sensación de Unix en Windows es [Cash](ttps://github.com/dthree/cash). Ten en cuenta que muy pocos comandos de Unix y opciones de la línea de comandos están disponibles en este entorno. --Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y [MSYS](http://www.mingw.org/wiki/msys) su paquete, que proporciona utilidades tales como bash, gawk, make y grep. MSYS no tiene todas las características al compararse con Cygwin. MinGW es particularmente útil para crear ejecutables nativos de Windows de herramientas Unix. +- Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y [MSYS](http://www.mingw.org/wiki/msys) su paquete, que proporciona utilidades tales como bash, gawk, make y grep. MSYS no tiene todas las características al compararse con Cygwin. MinGW es particularmente útil para crear ejecutables nativos de Windows de las herramientas Unix. ## Más recursos From 0e21479e07cbeb0abb9b64608378de1ebf839af0 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 19 Aug 2016 01:36:02 +0200 Subject: [PATCH 318/337] sl: Update translation --- README-sl.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README-sl.md b/README-sl.md index 2f8137e..5974925 100644 --- a/README-sl.md +++ b/README-sl.md @@ -540,6 +540,10 @@ To so elementi pomembni *samo* za OS X. ## Samo za Windows +Sledeče velja *samo* za Windows. + +- Na Windows 10 lahko uporabite [Bash na Ubuntu na Windows](https://msdn.microsoft.com/commandline/wsl/about), ki ponuja znano okolje Bash z orodji ukazne vrstice Unix. Prednost je, da to omogoča poganjanje programov za Linux na Windows-u. Po drugi strani pa to ne podpira poganjanja Windows programov iz ukazne vrstice Bash. + - Dostopajte do moči lupine Unix na Microsoft Windows z namestitvijo [Cygwin](https://cygwin.com/). Večina stvari opisanih v tem dokumentu bo delala "Out of the Box". - Namestite dodatne programe Unix z upraviteljem paketov Cygwin. @@ -556,6 +560,10 @@ To so elementi pomembni *samo* za OS X. - Večino opravil sistemske administracije Windows iz ukazne vrstice lahko izvajate tako, da se naučite uporabljati `wmic`. +- Druga opcija, da dobite izgled in občutek Unix-a na Windows-u, je [Cash](https://github.com/dthree/cash). Upoštevajte, da so v tem okolju na voljo le nekateri ukazi Unix in opcije ukazne vrstice. + +- Alternativna možnost, da dobite GNU razvojna orodja (kot je GCC) na Windows, je [MinGW](http://www.mingw.org) in njegov [MSYS](http://www.mingw.org/wiki/msys) paket, ki ponuja orodja, kot je bash, gawk, make in grep. MSYS nima na voljo vseh lastnosti v primerjavi s Cygwin. MinGW je posebej uporaben za izdelavo izvornih Windows prenosov orodij Unix. + ## Več virov - [awesome-shell](https://github.com/alebcay/awesome-shell): urejan seznam orodij lupine in virov. From 992a9a5daf011a993b8d0e4caf916c850d653766 Mon Sep 17 00:00:00 2001 From: CodinCat Date: Mon, 22 Aug 2016 10:31:44 +0800 Subject: [PATCH 319/337] fix an anchor link of zh-Hant --- README-zh-Hant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh-Hant.md b/README-zh-Hant.md index a214578..070bb0e 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -11,7 +11,7 @@ - [檔案及資料處理](#檔案及資料處理) - [系統偵錯](#系統偵錯) - [單行指令碼](#單行指令碼) -- [冷門但有用](#冷門但有用) +- [冷門但有用](#冷門但有用的指令) - [僅限 OS X 系統](#僅限-os-x-系統) - [僅限 Windows 系統](#僅限-windows-系统) - [更多資源](#更多資源) From 7c43bed37b3f3e2ff5ca4c65684e257d7ac59e14 Mon Sep 17 00:00:00 2001 From: CodinCat Date: Mon, 22 Aug 2016 10:33:25 +0800 Subject: [PATCH 320/337] update link title --- README-zh-Hant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 070bb0e..3ce88d6 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -11,7 +11,7 @@ - [檔案及資料處理](#檔案及資料處理) - [系統偵錯](#系統偵錯) - [單行指令碼](#單行指令碼) -- [冷門但有用](#冷門但有用的指令) +- [冷門但有用的指令](#冷門但有用的指令) - [僅限 OS X 系統](#僅限-os-x-系統) - [僅限 Windows 系統](#僅限-windows-系统) - [更多資源](#更多資源) From dd60c4ae9d848ed4f186cea3998e8b26a8042970 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 22 Aug 2016 11:19:09 -0700 Subject: [PATCH 321/337] Add an "ask a question" button, using Airtable. --- CONTRIBUTING.md | 10 ++++++++++ README.md | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab748b3..2a22622 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,6 +2,16 @@ This guide is a [collaborative effort](AUTHORS.md), based on the generous work of many contributors. +## Questions + +[![Ask a Question](https://img.shields.io/badge/%3f-Ask%20a%20Question-ff69b4.svg)](https://airtable.com/shrzMhx00YiIVAWJg) + +The simplest thing you can do to help is [**submit any questions you might have**](https://airtable.com/shrzMhx00YiIVAWJg). +The more the better. Questions help identify where the guide needs to be improved. + + +## Contributions + Contributions of all kinds, including corrections, additions, improvements, and translations, are welcome! We hope you'll join and help, in small ways or large. diff --git a/README.md b/README.md index 4b41e91..4a3990e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,11 @@ # The Art of Command Line +[![Ask a Question](https://img.shields.io/badge/%3f-Ask%20a%20Question-ff69b4.svg)](https://airtable.com/shrzMhx00YiIVAWJg) + [![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) - [Basics](#basics) - [Everyday use](#everyday-use) @@ -29,7 +32,7 @@ Some of this [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 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! +[**Please submit a question**](https://airtable.com/shrzMhx00YiIVAWJg) if you have a question related to the command line. [**Please contribute**](/CONTRIBUTING.md) if you see an error or something that could be better! ## Meta From 2d048a9a738dde0e957338f928490da491894b86 Mon Sep 17 00:00:00 2001 From: Not Mark Date: Mon, 22 Aug 2016 16:50:22 -0500 Subject: [PATCH 322/337] Update README.md - Added bash _quick substitution_ - Added some improvements to the bullet on `sudo` --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a3990e..3e32d5c 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,11 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` +- To rerun the previous command with some pattern replaced: `^old^new`. For example: +```bash + echo foo + ^foo^bar # equivalent to: echo bar +``` - `pstree -p` is a helpful display of the process tree. @@ -185,7 +190,7 @@ Notes: - For a simple web server for all files in the current directory (and subdirs), available to anyone on your network, use: `python -m SimpleHTTPServer 7777` (for port 7777 and Python 2) and `python -m http.server 7777` (for port 7777 and Python 3). -- For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `su` or `sudo bash` to actually run a shell as that user. Use `su -` to simulate a fresh login as root or another user. +- For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `sudo bash` to actually run a shell as that user. Use `su` to login as another user and `sudo -i` to login as root. Use `su -` to simulate a fresh login as root or another user. - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) From 9a335ca94bd2ed35219a162e290a88eb1294eeb1 Mon Sep 17 00:00:00 2001 From: Jonathan Brizio Date: Tue, 23 Aug 2016 10:54:59 -0300 Subject: [PATCH 323/337] =?UTF-8?q?Correcci=C3=B3n=20de=20ortograf=C3=ADa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-es.md b/README-es.md index d3e4dab..b941c01 100644 --- a/README-es.md +++ b/README-es.md @@ -496,7 +496,7 @@ Estos son puntos relevantes *únicamente* para OS X. - 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 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 activar la tecla 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`. From 311cf092142db9cf90cd315b556bc428e2afe4bd Mon Sep 17 00:00:00 2001 From: Not Mark Date: Tue, 23 Aug 2016 10:34:30 -0500 Subject: [PATCH 324/337] Tried to make sudo/su section more clear --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3e32d5c..09a5d51 100644 --- a/README.md +++ b/README.md @@ -190,6 +190,10 @@ Notes: - For a simple web server for all files in the current directory (and subdirs), available to anyone on your network, use: `python -m SimpleHTTPServer 7777` (for port 7777 and Python 2) and `python -m http.server 7777` (for port 7777 and Python 3). +- For running a command as another user, use `sudo`. Defaults to running as root; use `-u` to specify another user. Use `-i` to login as that user (you will be asked for _your_ password). + +- For switching to another user, use `su`. Add `-` to get an environment as if the user just logged in. By default this switches to root, but you can specify a user: `su - user`. You will be asked for the password _of the user you are switching to_. + - For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `sudo bash` to actually run a shell as that user. Use `su` to login as another user and `sudo -i` to login as root. Use `su -` to simulate a fresh login as root or another user. - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) From 1173274fd3461b96386f53d21c2b40ae3943f0db Mon Sep 17 00:00:00 2001 From: Not Mark Date: Tue, 23 Aug 2016 10:50:13 -0500 Subject: [PATCH 325/337] Ooops! Forgot to delete old line --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 09a5d51..c79c848 100644 --- a/README.md +++ b/README.md @@ -194,8 +194,6 @@ Notes: - For switching to another user, use `su`. Add `-` to get an environment as if the user just logged in. By default this switches to root, but you can specify a user: `su - user`. You will be asked for the password _of the user you are switching to_. -- For running a command with privileges, use `sudo` (for root) or `sudo -u` (for another user). Use `sudo bash` to actually run a shell as that user. Use `su` to login as another user and `sudo -i` to login as root. Use `su -` to simulate a fresh login as root or another user. - - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) - For a basic calculator (and of course access to Python in general), use the `python` interpreter. For example, From 87f270b80dca42c40be15d1cbb9d719d3c516981 Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:15:58 -0300 Subject: [PATCH 326/337] Add `nethogs` link --- README-cs.md | 4 ++-- README-el.md | 8 ++++---- README-es.md | 6 +++--- README-fr.md | 10 +++++----- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 6 +++--- README-sl.md | 6 +++--- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 36 insertions(+), 36 deletions(-) diff --git a/README-cs.md b/README-cs.md index e677f6e..9dbf2ac 100644 --- a/README-cs.md +++ b/README-cs.md @@ -266,7 +266,7 @@ Příklady: - 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`](https://github.com/raboof/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`. @@ -462,7 +462,7 @@ Pár příkladů na spojování příkazů: - `sar`: historické systémové statistiky -- `iftop` nebo `nethogs`: využití sítě pro proces nebo socket +- `iftop` nebo [`nethogs`](https://github.com/raboof/nethogs): využití sítě pro proces nebo socket - `ss`: statistika socketů diff --git a/README-el.md b/README-el.md index 06bbff1..e775d44 100644 --- a/README-el.md +++ b/README-el.md @@ -273,7 +273,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Ιδιότητες αρχείων μπορούν να οριστούν με την `chattr` και προσφέρει μία εναλλακτική για τα δικαιώματα των αρχείων σε χαμηλό επίπεδο. Για παράδειγμα, για να προστατευτείτε από κατά λάθος διαγραφή αρχείου χρησιμοποιήστε την επιλογή immutable: `sudo chattr +i /critical/directory/or/file` -- Χρησιμοποιήστε τις `getfacl` και `setfacl` για να αποθηκεύσετε και να επαναφέρετε δικαιώματα αρχείων. Για παράδειγμα: +- Χρησιμοποιήστε τις `getfacl` και `setfacl` για να αποθηκεύσετε και να επαναφέρετε δικαιώματα αρχείων. Για παράδειγμα: ```sh getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt @@ -297,7 +297,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. -- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή `nethogs`. +- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή [`nethogs`](https://github.com/raboof/nethogs). - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. @@ -319,7 +319,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε την `dmesg`, όποτε κάτι συμπεριφέρεται πραγματικά παράξενα (μπορεί να έχει να κάνει με υλικό ή με οδηγούς). -- Αν διαγράψετε ένα αρχείο και δεν απελευθερωθεί ο σύμφωνα με την `du` αναμενομένος χώρος στον δίσκο, ελέξτε αν το αρχείο χρησιμοποιείται από κάποια διεργασία: +- Αν διαγράψετε ένα αρχείο και δεν απελευθερωθεί ο σύμφωνα με την `du` αναμενομένος χώρος στον δίσκο, ελέξτε αν το αρχείο χρησιμοποιείται από κάποια διεργασία: `lsof | grep deleted | grep "filename-of-my-big-file"` @@ -473,7 +473,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή `nethogs`: χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία +- `iftop` ή [`nethogs`](https://github.com/raboof/nethogs): χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία - `ss`: στατιστικά ανά δικτυακή σύνδεση diff --git a/README-es.md b/README-es.md index d3e4dab..8f5f9ca 100644 --- a/README-es.md +++ b/README-es.md @@ -271,7 +271,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Para examinar por qué el disco está lleno, `ncdu` ahorra tiempo en comparación con los comandos usuales como `du -sh *`. -- Para encontrar cual socket o proceso está utilizando el ancho de banda, prueba `iftop` o `nethogs`. +- Para encontrar cual socket o proceso está utilizando el ancho de banda, prueba `iftop` o [`nethogs`](https://github.com/raboof/nethogs). - La herramienta `ab` (viene con Apache) es útil para una verificación rápida del rendimiento de un servidor web. Para pruebas de carga más complejas prueba `siege`. @@ -469,7 +469,7 @@ Algunos ejemplos de comandos reunidos: - `sar`: estadísticas históricas del sistema -- `iftop` o `nethogs`: utilización de la red por un socket o proceso +- `iftop` o [`nethogs`](https://github.com/raboof/nethogs): utilización de la red por un socket o proceso - `ss`: estadísticas de socket @@ -527,7 +527,7 @@ Estos son puntos relevantes *únicamente* para Windows. - Puedes ejecutar y hacer scripts de la mayoría de las tareas administrativas del sistema de Windows desde la línea de comandos aprendiendo y usando `wmic`. -- Otra opción para obtener la apariencia y sensación de Unix en Windows es [Cash](ttps://github.com/dthree/cash). Ten en cuenta que muy pocos comandos de Unix y opciones de la línea de comandos están disponibles en este entorno. +- Otra opción para obtener la apariencia y sensación de Unix en Windows es [Cash](ttps://github.com/dthree/cash). Ten en cuenta que muy pocos comandos de Unix y opciones de la línea de comandos están disponibles en este entorno. - Una opción alternativa para tener herramientas de desarrollo GNU (algo como GCC) en windows es [MinGW](http://www.mingw.org/) y [MSYS](http://www.mingw.org/wiki/msys) su paquete, que proporciona utilidades tales como bash, gawk, make y grep. MSYS no tiene todas las características al compararse con Cygwin. MinGW es particularmente útil para crear ejecutables nativos de Windows de las herramientas Unix. diff --git a/README-fr.md b/README-fr.md index db17f49..72c9ba6 100644 --- a/README-fr.md +++ b/README-fr.md @@ -103,12 +103,12 @@ Par exemple **alt-.** fait défiler les arguments précédents et **alt-*** dév - 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. -- Consultez les commandes récentes avec `history`. +- Consultez les commandes récentes avec `history`. Faites `!n` pour rappeler la commande numéro `n`. Il y a aussi beaucoup d'autres abréviations, les plus utiles étant probalement `!$` pour le dernier argument et `!!` pour la dernière commande (voir la section « HISTORY EXPANSION » de la page de manuel). Cependant, celles-ci peuvent être aisément remplacées par **ctrl-r** et **alt-.**. -- Placez-vous dans votre répertoire personnel avec `cd`. +- Placez-vous dans votre répertoire personnel avec `cd`. Accédez aux fichiers à partir de leurs chemins relatifs par rapport à votre répertoire personnel en préfixant ceux-ci avec `~` (p. ex. `~/.bashrc`). Dans les scripts shell, désignez le répertoire personnel par `$HOME`. @@ -384,7 +384,7 @@ 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`](https://github.com/raboof/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, essayez `siege`. @@ -594,7 +594,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `sar` : statistiques sur l'activité du système -- `iftop` ou `nethogs` : utilisation du réseau par un socket ou un processus. +- `iftop` ou [`nethogs`](https://github.com/raboof/nethogs) : utilisation du réseau par un socket ou un processus. - `ss` : statistiques relatives aux sockets. @@ -647,7 +647,7 @@ En revanche, il n'est pas possible de lancer des programmes Windows depuis le *p - Installez [Cygwin](http://cygwin.com) pour bénéficier de la puissance du shell Unix sous Microsoft Windows. La majorité de ce qui est décrit dans ce document fonctionnera *out of the box*. -- Installez des programmes Unix supplémentaires à l'aide du gestionnaire de paquets de Cygwin. +- Installez des programmes Unix supplémentaires à l'aide du gestionnaire de paquets de Cygwin. - Utilisez `mintty` comme fenêtre de ligne de commande. diff --git a/README-it.md b/README-it.md index 221f4dd..15792bb 100644 --- a/README-it.md +++ b/README-it.md @@ -274,7 +274,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Per capire perché un disco viene visto pieno, `ncdu` ti evita perdite di tempo rispetto al più comune `du -sh *`. -- Per capire quale socket o processo sta usando troppa banda prova `iftop` o `nethogs`. +- Per capire quale socket o processo sta usando troppa banda prova `iftop` o [`nethogs`](https://github.com/raboof/nethogs). - `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. @@ -477,7 +477,7 @@ Qualche esempio di combinazione di più comandi comandi: - `sar`: cronologia di alcune statistiche del sistema. -- `iftop` o `nethogs`: uso della rete da parte di socket e processi. +- `iftop` o [`nethogs`](https://github.com/raboof/nethogs): uso della rete da parte di socket e processi. - `ss`: statistiche sui socket. diff --git a/README-ja.md b/README-ja.md index 9dee638..b1ba624 100644 --- a/README-ja.md +++ b/README-ja.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 -- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、`iftop`あるいは`nethogs`を試そう。 +- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、`iftop`あるいは[`nethogs`](https://github.com/raboof/nethogs)を試そう。 - `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 @@ -468,7 +468,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: システム統計情報の履歴 -- `iftop` または `nethogs`: ソケットあるいはプロセスごとのネットワーク使用量 +- `iftop` または [`nethogs`](https://github.com/raboof/nethogs): ソケットあるいはプロセスごとのネットワーク使用量 - `ss`: ソケットの統計情報 diff --git a/README-ko.md b/README-ko.md index c9af783..3790a0f 100644 --- a/README-ko.md +++ b/README-ko.md @@ -241,7 +241,7 @@ - 디스크가 왜 가득찼는지 알아보기 위해서 `ncdu`를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. -- 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 `iftop`나 `nethogs`를 사용하세요. +- 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 `iftop`나 [`nethogs`](https://github.com/raboof/nethogs)를 사용하세요. - `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. @@ -428,7 +428,7 @@ - `sar`: 시스템 상태에 대한 정보를 보여줍니다 -- `iftop` or `nethogs`: 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 +- `iftop` or [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 - `ss`: 소켓에 관한 통계자료들을 보여줍니다 diff --git a/README-pt.md b/README-pt.md index 4659937..57c5b79 100644 --- a/README-pt.md +++ b/README-pt.md @@ -232,7 +232,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Para verificar o porque de um disco estar cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais como `du -sh *`. -- Para procurar qual socket ou processo está utilizando a banda de rede, tente `iftop` ou `nethogs`. +- Para procurar qual socket ou processo está utilizando a banda de rede, tente `iftop` ou [`nethogs`](https://github.com/raboof/nethogs). - A ferramenta `ab` (que vem com o Apache) é muito útil para verificação rápida da performance do servidor web. Para mais complexos testes de carga, tente `siege`. @@ -416,7 +416,7 @@ Alguns exemplos de como reunir os comandos. - `sar`: histórico dos estados do sistema. -- `iftop` ou `nethogs`: Utilização da rede por sockets ou processos. +- `iftop` ou [`nethogs`](https://github.com/raboof/nethogs): Utilização da rede por sockets ou processos. - `ss`: Estatísticas dos sockets. diff --git a/README-ru.md b/README-ru.md index ec1e69e..058357d 100644 --- a/README-ru.md +++ b/README-ru.md @@ -28,7 +28,7 @@ [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста +начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание @@ -298,7 +298,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для того, чтобы узнать, почему диск полностью забит, используйте `ncdu`, это сохраняет время по сравнению с тем же `du -sh *`. -- Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`. +- Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте `iftop` или [`nethogs`](https://github.com/raboof/nethogs). - `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. @@ -499,7 +499,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: история системной статистики -- `iftop` или `nethogs`: использование сети конкретным сокетом или процессом +- `iftop` или [`nethogs`](https://github.com/raboof/nethogs): использование сети конкретным сокетом или процессом - `ss`: статистика сокетов diff --git a/README-sl.md b/README-sl.md index 5974925..a9c6ee0 100644 --- a/README-sl.md +++ b/README-sl.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Za iskanje, zakaj je disk poln, vam `ncdu` prihrani čas preko običajnih ukazov kot je `du -sh *`. -- Da najdete katera vtičnica ali proces uporablja pasovno širino, poskusite `iftop` ali `nethogs`. +- Da najdete katera vtičnica ali proces uporablja pasovno širino, poskusite `iftop` ali [`nethogs`](https://github.com/raboof/nethogs). - Orodje `ab` (prihaja z Apache-jem) je v pomoč za hitro in nečisto preverjanje uspešnosti spletnega strežnika. Za bolj kompleksno testiranje nalaganja poskusite `siege`. @@ -501,7 +501,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `sar`: statistika zgodovine sistema -- `iftop` ali `nethogs`: izkoriščenost omrežja po vtičnici ali procesu +- `iftop` ali [`nethogs`](https://github.com/raboof/nethogs): izkoriščenost omrežja po vtičnici ali procesu - `ss`: statistika vtičnice @@ -562,7 +562,7 @@ Sledeče velja *samo* za Windows. - Druga opcija, da dobite izgled in občutek Unix-a na Windows-u, je [Cash](https://github.com/dthree/cash). Upoštevajte, da so v tem okolju na voljo le nekateri ukazi Unix in opcije ukazne vrstice. -- Alternativna možnost, da dobite GNU razvojna orodja (kot je GCC) na Windows, je [MinGW](http://www.mingw.org) in njegov [MSYS](http://www.mingw.org/wiki/msys) paket, ki ponuja orodja, kot je bash, gawk, make in grep. MSYS nima na voljo vseh lastnosti v primerjavi s Cygwin. MinGW je posebej uporaben za izdelavo izvornih Windows prenosov orodij Unix. +- Alternativna možnost, da dobite GNU razvojna orodja (kot je GCC) na Windows, je [MinGW](http://www.mingw.org) in njegov [MSYS](http://www.mingw.org/wiki/msys) paket, ki ponuja orodja, kot je bash, gawk, make in grep. MSYS nima na voljo vseh lastnosti v primerjavi s Cygwin. MinGW je posebej uporaben za izdelavo izvornih Windows prenosov orodij Unix. ## Več virov diff --git a/README-uk.md b/README-uk.md index 4012c31..d519e19 100644 --- a/README-uk.md +++ b/README-uk.md @@ -205,7 +205,7 @@ - Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. - Використовуйте `mtr` для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. -- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. +- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. - Для більш серйозної відладки мережі використовуйте `wireshark`, `tshark`, і `ngrep`. - Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). @@ -324,7 +324,7 @@ - `w`: хто є залогіненим - `id`: інформація про користувача/групу - `sar`: historic system stats -- `iftop` або `nethogs`: використання мережі конкретним сокетом або процесом +- `iftop` або [`nethogs`](https://github.com/raboof/nethogs): використання мережі конкретним сокетом або процесом - `ss`: статистика сокетів - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене diff --git a/README-zh-Hant.md b/README-zh-Hant.md index a214578..5e6e6d5 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -263,7 +263,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 -- 查詢正在使用頻寬的 socket 連線或程序,使用`iftop` 或`nethogs`。 +- 查詢正在使用頻寬的 socket 連線或程序,使用`iftop` 或[`nethogs`](https://github.com/raboof/nethogs)。 - `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 @@ -456,7 +456,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`:系統歷史資料 -- `iftop` 或`nethogs`:套接字及程序的網路利用 +- `iftop` 或[`nethogs`](https://github.com/raboof/nethogs):套接字及程序的網路利用 - `ss`:socket 資料 diff --git a/README-zh.md b/README-zh.md index 77214bb..35b2a68 100644 --- a/README-zh.md +++ b/README-zh.md @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用 `ncdu` 来查看磁盘使用情况,它比常用的命令,如 `du -sh *`,更节省时间。 -- 查找正在使用带宽的套接字连接或进程,使用 `iftop` 或 `nethogs`。 +- 查找正在使用带宽的套接字连接或进程,使用 `iftop` 或 [`nethogs`](https://github.com/raboof/nethogs)。 - `ab` 工具(捆绑于 Apache)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 @@ -500,7 +500,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`:系统历史数据 -- `iftop` 或 `nethogs`:套接字及进程的网络利用 +- `iftop` 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用 - `ss`:套接字数据 diff --git a/README.md b/README.md index 4a3990e..b4ca067 100644 --- a/README.md +++ b/README.md @@ -303,7 +303,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. -- To find which socket or process is using bandwidth, try `iftop` or `nethogs`. +- To find which socket or process is using bandwidth, try `iftop` or [`nethogs`](https://github.com/raboof/nethogs). - The `ab` tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try `siege`. @@ -504,7 +504,7 @@ A few examples of piecing together commands: - `sar`: historic system stats -- `iftop` or `nethogs`: network utilization by socket or process +- `iftop` or [`nethogs`](https://github.com/raboof/nethogs): network utilization by socket or process - `ss`: socket statistics From 88173e2d4765477758e45c2eb9cdcd8121eb5426 Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:16:58 -0300 Subject: [PATCH 327/337] Add `iftop` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 9dbf2ac..159859c 100644 --- a/README-cs.md +++ b/README-cs.md @@ -266,7 +266,7 @@ Příklady: - 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`](https://github.com/raboof/nethogs). +- Ke zjištění, který socket nebo proces zahlcuje pásmo, zkuste [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) nebo [`nethogs`](https://github.com/raboof/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`. @@ -462,7 +462,7 @@ Pár příkladů na spojování příkazů: - `sar`: historické systémové statistiky -- `iftop` nebo [`nethogs`](https://github.com/raboof/nethogs): využití sítě pro proces nebo socket +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) nebo [`nethogs`](https://github.com/raboof/nethogs): využití sítě pro proces nebo socket - `ss`: statistika socketů diff --git a/README-el.md b/README-el.md index e775d44..90eb86f 100644 --- a/README-el.md +++ b/README-el.md @@ -297,7 +297,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. -- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε `iftop` ή [`nethogs`](https://github.com/raboof/nethogs). +- Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ή [`nethogs`](https://github.com/raboof/nethogs). - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. @@ -473,7 +473,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: ιστορικά στατιστικά συστήματος -- `iftop` ή [`nethogs`](https://github.com/raboof/nethogs): χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ή [`nethogs`](https://github.com/raboof/nethogs): χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία - `ss`: στατιστικά ανά δικτυακή σύνδεση diff --git a/README-es.md b/README-es.md index 8f5f9ca..090b200 100644 --- a/README-es.md +++ b/README-es.md @@ -271,7 +271,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Para examinar por qué el disco está lleno, `ncdu` ahorra tiempo en comparación con los comandos usuales como `du -sh *`. -- Para encontrar cual socket o proceso está utilizando el ancho de banda, prueba `iftop` o [`nethogs`](https://github.com/raboof/nethogs). +- Para encontrar cual socket o proceso está utilizando el ancho de banda, prueba [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs). - La herramienta `ab` (viene con Apache) es útil para una verificación rápida del rendimiento de un servidor web. Para pruebas de carga más complejas prueba `siege`. @@ -469,7 +469,7 @@ Algunos ejemplos de comandos reunidos: - `sar`: estadísticas históricas del sistema -- `iftop` o [`nethogs`](https://github.com/raboof/nethogs): utilización de la red por un socket o proceso +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs): utilización de la red por un socket o proceso - `ss`: estadísticas de socket diff --git a/README-fr.md b/README-fr.md index 72c9ba6..de79adf 100644 --- a/README-fr.md +++ b/README-fr.md @@ -384,7 +384,7 @@ 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`](https://github.com/raboof/nethogs). +- Pour trouver quel socket ou processus utilise la bande passante, essayez [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/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, essayez `siege`. @@ -594,7 +594,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `sar` : statistiques sur l'activité du système -- `iftop` ou [`nethogs`](https://github.com/raboof/nethogs) : utilisation du réseau par un socket ou un processus. +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs) : utilisation du réseau par un socket ou un processus. - `ss` : statistiques relatives aux sockets. diff --git a/README-it.md b/README-it.md index 15792bb..9b80256 100644 --- a/README-it.md +++ b/README-it.md @@ -274,7 +274,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Per capire perché un disco viene visto pieno, `ncdu` ti evita perdite di tempo rispetto al più comune `du -sh *`. -- Per capire quale socket o processo sta usando troppa banda prova `iftop` o [`nethogs`](https://github.com/raboof/nethogs). +- Per capire quale socket o processo sta usando troppa banda prova [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs). - `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. @@ -477,7 +477,7 @@ Qualche esempio di combinazione di più comandi comandi: - `sar`: cronologia di alcune statistiche del sistema. -- `iftop` o [`nethogs`](https://github.com/raboof/nethogs): uso della rete da parte di socket e processi. +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs): uso della rete da parte di socket e processi. - `ss`: statistiche sui socket. diff --git a/README-ja.md b/README-ja.md index b1ba624..daa10a3 100644 --- a/README-ja.md +++ b/README-ja.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 -- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、`iftop`あるいは[`nethogs`](https://github.com/raboof/nethogs)を試そう。 +- 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、[`iftop`](http://www.ex-parrot.com/~pdw/iftop/)あるいは[`nethogs`](https://github.com/raboof/nethogs)を試そう。 - `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 @@ -468,7 +468,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: システム統計情報の履歴 -- `iftop` または [`nethogs`](https://github.com/raboof/nethogs): ソケットあるいはプロセスごとのネットワーク使用量 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) または [`nethogs`](https://github.com/raboof/nethogs): ソケットあるいはプロセスごとのネットワーク使用量 - `ss`: ソケットの統計情報 diff --git a/README-ko.md b/README-ko.md index 3790a0f..0541b35 100644 --- a/README-ko.md +++ b/README-ko.md @@ -241,7 +241,7 @@ - 디스크가 왜 가득찼는지 알아보기 위해서 `ncdu`를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. -- 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 `iftop`나 [`nethogs`](https://github.com/raboof/nethogs)를 사용하세요. +- 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/)나 [`nethogs`](https://github.com/raboof/nethogs)를 사용하세요. - `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. @@ -428,7 +428,7 @@ - `sar`: 시스템 상태에 대한 정보를 보여줍니다 -- `iftop` or [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 - `ss`: 소켓에 관한 통계자료들을 보여줍니다 diff --git a/README-pt.md b/README-pt.md index 57c5b79..c9c6b43 100644 --- a/README-pt.md +++ b/README-pt.md @@ -232,7 +232,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Para verificar o porque de um disco estar cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais como `du -sh *`. -- Para procurar qual socket ou processo está utilizando a banda de rede, tente `iftop` ou [`nethogs`](https://github.com/raboof/nethogs). +- Para procurar qual socket ou processo está utilizando a banda de rede, tente [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs). - A ferramenta `ab` (que vem com o Apache) é muito útil para verificação rápida da performance do servidor web. Para mais complexos testes de carga, tente `siege`. @@ -416,7 +416,7 @@ Alguns exemplos de como reunir os comandos. - `sar`: histórico dos estados do sistema. -- `iftop` ou [`nethogs`](https://github.com/raboof/nethogs): Utilização da rede por sockets ou processos. +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs): Utilização da rede por sockets ou processos. - `ss`: Estatísticas dos sockets. diff --git a/README-ru.md b/README-ru.md index 058357d..b7092db 100644 --- a/README-ru.md +++ b/README-ru.md @@ -298,7 +298,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Для того, чтобы узнать, почему диск полностью забит, используйте `ncdu`, это сохраняет время по сравнению с тем же `du -sh *`. -- Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте `iftop` или [`nethogs`](https://github.com/raboof/nethogs). +- Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) или [`nethogs`](https://github.com/raboof/nethogs). - `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. @@ -499,7 +499,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`: история системной статистики -- `iftop` или [`nethogs`](https://github.com/raboof/nethogs): использование сети конкретным сокетом или процессом +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) или [`nethogs`](https://github.com/raboof/nethogs): использование сети конкретным сокетом или процессом - `ss`: статистика сокетов diff --git a/README-sl.md b/README-sl.md index a9c6ee0..beeddba 100644 --- a/README-sl.md +++ b/README-sl.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Za iskanje, zakaj je disk poln, vam `ncdu` prihrani čas preko običajnih ukazov kot je `du -sh *`. -- Da najdete katera vtičnica ali proces uporablja pasovno širino, poskusite `iftop` ali [`nethogs`](https://github.com/raboof/nethogs). +- Da najdete katera vtičnica ali proces uporablja pasovno širino, poskusite [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ali [`nethogs`](https://github.com/raboof/nethogs). - Orodje `ab` (prihaja z Apache-jem) je v pomoč za hitro in nečisto preverjanje uspešnosti spletnega strežnika. Za bolj kompleksno testiranje nalaganja poskusite `siege`. @@ -501,7 +501,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `sar`: statistika zgodovine sistema -- `iftop` ali [`nethogs`](https://github.com/raboof/nethogs): izkoriščenost omrežja po vtičnici ali procesu +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ali [`nethogs`](https://github.com/raboof/nethogs): izkoriščenost omrežja po vtičnici ali procesu - `ss`: statistika vtičnice diff --git a/README-uk.md b/README-uk.md index d519e19..d60e44a 100644 --- a/README-uk.md +++ b/README-uk.md @@ -205,7 +205,7 @@ - Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. - Використовуйте `mtr` для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. -- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або [`nethogs`](https://github.com/raboof/nethogs). +- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. - Для більш серйозної відладки мережі використовуйте `wireshark`, `tshark`, і `ngrep`. - Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). @@ -324,7 +324,7 @@ - `w`: хто є залогіненим - `id`: інформація про користувача/групу - `sar`: historic system stats -- `iftop` або [`nethogs`](https://github.com/raboof/nethogs): використання мережі конкретним сокетом або процесом +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs): використання мережі конкретним сокетом або процесом - `ss`: статистика сокетів - `dmesg`: помилки завантаження і помилки системи - `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 5e6e6d5..d4615b0 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -263,7 +263,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 -- 查詢正在使用頻寬的 socket 連線或程序,使用`iftop` 或[`nethogs`](https://github.com/raboof/nethogs)。 +- 查詢正在使用頻寬的 socket 連線或程序,使用[`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或[`nethogs`](https://github.com/raboof/nethogs)。 - `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 @@ -456,7 +456,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`:系統歷史資料 -- `iftop` 或[`nethogs`](https://github.com/raboof/nethogs):套接字及程序的網路利用 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或[`nethogs`](https://github.com/raboof/nethogs):套接字及程序的網路利用 - `ss`:socket 資料 diff --git a/README-zh.md b/README-zh.md index 35b2a68..98fe75f 100644 --- a/README-zh.md +++ b/README-zh.md @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 用 `ncdu` 来查看磁盘使用情况,它比常用的命令,如 `du -sh *`,更节省时间。 -- 查找正在使用带宽的套接字连接或进程,使用 `iftop` 或 [`nethogs`](https://github.com/raboof/nethogs)。 +- 查找正在使用带宽的套接字连接或进程,使用 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs)。 - `ab` 工具(捆绑于 Apache)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 @@ -500,7 +500,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `sar`:系统历史数据 -- `iftop` 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用 - `ss`:套接字数据 diff --git a/README.md b/README.md index b4ca067..2a8ed40 100644 --- a/README.md +++ b/README.md @@ -303,7 +303,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. -- To find which socket or process is using bandwidth, try `iftop` or [`nethogs`](https://github.com/raboof/nethogs). +- To find which socket or process is using bandwidth, try [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs). - The `ab` tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try `siege`. @@ -504,7 +504,7 @@ A few examples of piecing together commands: - `sar`: historic system stats -- `iftop` or [`nethogs`](https://github.com/raboof/nethogs): network utilization by socket or process +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs): network utilization by socket or process - `ss`: socket statistics From 2c9b9c48825739bd052e0aced254ada466a3d511 Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:20:28 -0300 Subject: [PATCH 328/337] Add `mtr` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 159859c..8c1296f 100644 --- a/README-cs.md +++ b/README-cs.md @@ -262,7 +262,7 @@ Příklady: - 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í. +- Použijte [`mtr`](http://www.bitwizard.nl/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 *`. @@ -428,7 +428,7 @@ Pár příkladů na spojování příkazů: - `strace`: ladění systému -- `mtr`: vylepšení traceroute pro síťové ladění +- [`mtr`](http://www.bitwizard.nl/mtr/): vylepšení traceroute pro síťové ladění - `cssh`: vizuální souběžný shell diff --git a/README-el.md b/README-el.md index 90eb86f..b34a51f 100644 --- a/README-el.md +++ b/README-el.md @@ -293,7 +293,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Η αποσφαλμάτωση συστημάτων Java είναι άλλη ιστορία, αλλά ένα απλό κόλπο για το JVM της Oracle και άλλων είναι να τρέξετε την εντολή `kill -3 ` και ένα πλήρες ίχνος στοίβας και περίληψη σωρού (συμπεριλαμβανομένων και λεπτομερειών που αφορούν τη συλλογή απορριμάτων σε γενιές, που μπορεί να είναι πολύ κατατοπιστικές) θα εμφανιστούν στο stderr/logs. Οι εντολές του JDK `jps`, `jstat`, `jstack`, `jmap` είναι χρήσιμες. [Τα εργαλεία SJK](https://github.com/aragozin/jvm-tools) είναι για πιο προχωρημένους. -- Χρησιμοποιήστε την `mtr` ως μια βελτίωση της traceroute για να ανιχνεύετε ζητήματα του δικτύου. +- Χρησιμοποιήστε την [`mtr`](http://www.bitwizard.nl/mtr/) ως μια βελτίωση της traceroute για να ανιχνεύετε ζητήματα του δικτύου. - Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. @@ -439,7 +439,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strace`: αποσφαλμάτωση κλήσης συστήματος -- `mtr`: καλύτερο εργαλείο traceroute για αποσφαλμάτωση δικτύου +- [`mtr`](http://www.bitwizard.nl/mtr/): καλύτερο εργαλείο traceroute για αποσφαλμάτωση δικτύου - `cssh`: visual concurrent shell diff --git a/README-es.md b/README-es.md index 090b200..cbcfeac 100644 --- a/README-es.md +++ b/README-es.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - El sistema de depuración de Java es harina de otro costal, pero un truco simple en las JSM de Oracle y otros consta en que puedes ejecutar `kill -3 ` y una traza completa y un resumen del montículo "heap summary" (incluyendo del detalle de la colección de basura generacional, la cual puede ser altamente informativa) serán descargados al stderr/logs. Las herramientas `jps`, `jstat`, `jstack`, `jmap` del JDK son útiles. [SJK tools](https://github.com/aragozin/jvm-tools) son más avanzadas. -- Usa `mtr` como un mejor traceroute para identificar los problemas en la red. +- Usa [`mtr`](http://www.bitwizard.nl/mtr/) como un mejor traceroute para identificar los problemas en la red. - Para examinar por qué el disco está lleno, `ncdu` ahorra tiempo en comparación con los comandos usuales como `du -sh *`. @@ -435,7 +435,7 @@ Algunos ejemplos de comandos reunidos: - `strace`: depuración de llamadas del sistema -- `mtr`: mejor traceroute para la depuración de la red +- [`mtr`](http://www.bitwizard.nl/mtr/): mejor traceroute para la depuración de la red - `cssh`: shell concurrente visual diff --git a/README-fr.md b/README-fr.md index de79adf..472a6be 100644 --- a/README-fr.md +++ b/README-fr.md @@ -380,7 +380,7 @@ En particulier, ayez à l'esprit que la valeur du « cache » est la mémoire ut - 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. +- Utilisez [`mtr`](http://www.bitwizard.nl/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 *`. @@ -560,7 +560,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `strace`: trace les appels système. -- `mtr`: un traceroute amélioré pour débugguer un réseau. +- [`mtr`](http://www.bitwizard.nl/mtr/): un traceroute amélioré pour débugguer un réseau. - `cssh` : visual concurrent shell diff --git a/README-it.md b/README-it.md index 9b80256..1ae5efb 100644 --- a/README-it.md +++ b/README-it.md @@ -270,7 +270,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Il system debugging con Java è tutta un'altra cosa. Uno dei trucchi più semplici sulla JVM Oracle (ed anche altre) è che all'esecuzione di `kill -3 ` verrà messo in log un trace full stack (inclusi molti dettagli sulla garbage collection). Anche `jps`, `jstat`, `jstack` e `jmap` del JDK sono molto utili. Ci sono poi i vari [SJK tools](https://github.com/aragozin/jvm-tools), più avanzati. -- Usa `mtr` per rilevare problemi di rete. Molto meglio di traceroute. +- Usa [`mtr`](http://www.bitwizard.nl/mtr/) per rilevare problemi di rete. Molto meglio di traceroute. - Per capire perché un disco viene visto pieno, `ncdu` ti evita perdite di tempo rispetto al più comune `du -sh *`. @@ -443,7 +443,7 @@ Qualche esempio di combinazione di più comandi comandi: - `strace`: debug delle chiamate di sistema. -- `mtr`: un traceroute migliore per il debug di rete. +- [`mtr`](http://www.bitwizard.nl/mtr/): un traceroute migliore per il debug di rete. - `cssh`: shell visuale concorrente. diff --git a/README-ja.md b/README-ja.md index daa10a3..e301abc 100644 --- a/README-ja.md +++ b/README-ja.md @@ -263,7 +263,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Javaのシステムのデバッグはまた違う困ったところがあるが、Oracleあるいは他のJVMにも共通しているシンプルなトリックは、`kill -3 `でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。JDKの `jps`、 `jstat`、 `jstack`、 `jmap` も便利で、[SJK tools](https://github.com/aragozin/jvm-tools)はより高度なツールである。 -- 改良版tracerouteとして`mtr`を使ってネットワークの問題を調査しよう。 +- 改良版tracerouteとして[`mtr`](http://www.bitwizard.nl/mtr/)を使ってネットワークの問題を調査しよう。 - ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 @@ -434,7 +434,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strace`: システムコールのデバッグ -- `mtr`: ネットワークデバッグのためのより高機能なtraceroute +- [`mtr`](http://www.bitwizard.nl/mtr/): ネットワークデバッグのためのより高機能なtraceroute - `cssh`: ビジュアルな並列シェル diff --git a/README-ko.md b/README-ko.md index 0541b35..183cbcb 100644 --- a/README-ko.md +++ b/README-ko.md @@ -237,7 +237,7 @@ - Java 시스템의 디버깅은 조금 다른상황입니다. 하지만 Oracle과 그 외의 회사에서 만든 다른 JVM들에서는 `kill -3 `를 실행하면 전체 stack trace정보와 heap의 정보(시기별로 가비지 콜렉터의 세부적인 내용같은 매우 유용한 정보)를 요약하여 stderr나 로그로 출력해주므로 간단하게 정보를 얻어올 수 있습니다. JDK의 `jps`, `jstat`, `jstack`, `jmap` 명령은 유용합니다. [SJK tools](https://github.com/aragozin/jvm-tools)은 더 고급 정보를 다룰 수 있습니다. -- 네트워크 이슈들을 알아보기 위해서는 traceroute를 사용할수도 있지만 이보다 더 좋은 `mtr`를 사용하세요. +- 네트워크 이슈들을 알아보기 위해서는 traceroute를 사용할수도 있지만 이보다 더 좋은 [`mtr`](http://www.bitwizard.nl/mtr/)를 사용하세요. - 디스크가 왜 가득찼는지 알아보기 위해서 `ncdu`를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. @@ -394,7 +394,7 @@ - `strace`: 시스템 콜을 디버깅할때 사용합니다 -- `mtr`: 네트워크 디버깅시에 traceroute보다 더 낫습니다 +- [`mtr`](http://www.bitwizard.nl/mtr/): 네트워크 디버깅시에 traceroute보다 더 낫습니다 - `cssh`: 쉘을 동시에 여러개 사용할때 사용합니다 diff --git a/README-pt.md b/README-pt.md index c9c6b43..b7382ed 100644 --- a/README-pt.md +++ b/README-pt.md @@ -228,7 +228,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Debugar um sistema java é uma outra historia, mas um simples truque nas máquinas virtuais Oracle ou algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo do heap (incluindo detalhes geracionais do garbage collector, os quais podem ser altamente informativos) serão vazados para stderr/logs. -- Use `mtr` como uma melhor alternativa ao traceroute, para identificar problemas na rede. +- Use [`mtr`](http://www.bitwizard.nl/mtr/) como uma melhor alternativa ao traceroute, para identificar problemas na rede. - Para verificar o porque de um disco estar cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais como `du -sh *`. @@ -386,7 +386,7 @@ Alguns exemplos de como reunir os comandos. - `strace`: Debug para chamadas de sistema. -- `mtr`: melhor traceroute para debugar a rede. +- [`mtr`](http://www.bitwizard.nl/mtr/): melhor traceroute para debugar a rede. - `cssh`: Visualização concorrente da shell. diff --git a/README-ru.md b/README-ru.md index b7092db..d6f3bc6 100644 --- a/README-ru.md +++ b/README-ru.md @@ -294,7 +294,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Отладка Java – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла, или любой другой, позволят вам использовать `kill -3 ` и трассировать сводки стека и хипа (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно сдампить в stderr или логи. `jps`, `jstat`, `jstack`, `jmap` также полезны. [SJK tools](https://github.com/aragozin/jvm-tools) более продвинуты. -- Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети. +- Используйте [`mtr`](http://www.bitwizard.nl/mtr/) для лучшей трассировки, чтобы находить проблемы сети. - Для того, чтобы узнать, почему диск полностью забит, используйте `ncdu`, это сохраняет время по сравнению с тем же `du -sh *`. @@ -465,7 +465,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strace`: отладка системных вызовов -- `mtr`: лучшая трассировка для отладки сети +- [`mtr`](http://www.bitwizard.nl/mtr/): лучшая трассировка для отладки сети - `cssh`: несколько терминалов в одном UI diff --git a/README-sl.md b/README-sl.md index beeddba..4bc9963 100644 --- a/README-sl.md +++ b/README-sl.md @@ -297,7 +297,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Sistemsko razhroščevanje Java je drugačen tip, vendar enostaven trik na JVM-jih Oracle-a in nekaterih ostalih je, da lahko poženete `kill -3 ` in sledite celotnemu stack-u in povzetku kopic (vključno s podrobnostmi zbirke splošnih smeti, ki so lahko zelo informativne), ki bodo oddane v stderr/logs. JDK-jevi `jps`, `jstat`, `jstack`, `jmap` so uporabni. [SJK Tools](https://github.com/aragozin/jvm-tools) so bolj napredni. -- Uporabite `mtr` kot boljši usmerjevalnik sledenja za identifikacijo težav omrežja. +- Uporabite [`mtr`](http://www.bitwizard.nl/mtr/) kot boljši usmerjevalnik sledenja za identifikacijo težav omrežja. - Za iskanje, zakaj je disk poln, vam `ncdu` prihrani čas preko običajnih ukazov kot je `du -sh *`. @@ -467,7 +467,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `strace`: razhroščevanje sistemskega klica -- `mtr`: boljše sledenje usmerjanja za razhroščevanje omrežja +- [`mtr`](http://www.bitwizard.nl/mtr/): boljše sledenje usmerjanja za razhroščevanje omrežja - `cssh`: vizualna sočasna lupina diff --git a/README-uk.md b/README-uk.md index d60e44a..0c9f797 100644 --- a/README-uk.md +++ b/README-uk.md @@ -203,7 +203,7 @@ - Для інформації про мережу використовуйте `netstat` і `ss`. - Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. - Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. -- Використовуйте `mtr` для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. +- Використовуйте [`mtr`](http://www.bitwizard.nl/mtr/) для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. @@ -307,7 +307,7 @@ - `nm`: symbols from object files - `ab`: вбудований в Apache бенчмарк веб-серверів - `strace`: відладка системних викликів -- `mtr`: трасування для відладки мережі +- [`mtr`](http://www.bitwizard.nl/mtr/): трасування для відладки мережі - `cssh`: паралельне виконання команд в графічному інтерфейсі - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі - `wireshark` і `tshark`: перехоплення пакетів і відладка мережі diff --git a/README-zh-Hant.md b/README-zh-Hant.md index d4615b0..536172b 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -259,7 +259,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Java 系統偵錯則是一件截然不同的事,一個可以用於 Oracle 的 JVM 或其他 JVM 上的偵錯的技巧是你可以運行`kill -3 ` 同時一個完整的棧軌跡和堆概述(包括 GC 的細節)會被儲存到標準輸出/日誌檔案。 JDK 中的`jps`,`jstat`,`jstack`,`jmap` 很有用。 [SJK tools](https://github.com/aragozin/jvm-tools) 更高階. -- 使用`mtr` ​​去跟蹤路由,用於確定網路問題。 +- 使用[`mtr`](http://www.bitwizard.nl/mtr/) ​​去跟蹤路由,用於確定網路問題。 - 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 @@ -422,7 +422,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strace`:系統呼叫偵錯 -- `mtr`:更好的網路偵錯跟蹤工具 +- [`mtr`](http://www.bitwizard.nl/mtr/):更好的網路偵錯跟蹤工具 - `cssh`:視覺化的並發 shell diff --git a/README-zh.md b/README-zh.md index 98fe75f..a0afbf5 100644 --- a/README-zh.md +++ b/README-zh.md @@ -295,7 +295,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Java 系统调试则是一件截然不同的事,一个可以用于 Oracle 的 JVM 或其他 JVM 上的调试的技巧是你可以运行 `kill -3 ` 同时一个完整的栈轨迹和堆概述(包括 GC 的细节)会被保存到标准输出/日志文件。JDK 中的 `jps`,`jstat`,`jstack`,`jmap` 很有用。[SJK tools](https://github.com/aragozin/jvm-tools) 更高级. -- 使用 `mtr` 去跟踪路由,用于确定网络问题。 +- 使用 [`mtr`](http://www.bitwizard.nl/mtr/) 去跟踪路由,用于确定网络问题。 - 用 `ncdu` 来查看磁盘使用情况,它比常用的命令,如 `du -sh *`,更节省时间。 @@ -466,7 +466,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `strace`:系统调用调试 -- `mtr`:更好的网络调试跟踪工具 +- [`mtr`](http://www.bitwizard.nl/mtr/):更好的网络调试跟踪工具 - `cssh`:可视化的并发 shell diff --git a/README.md b/README.md index 2a8ed40..c477e20 100644 --- a/README.md +++ b/README.md @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Java system debugging is a different kettle of fish, but a simple trick on Oracle's and some other JVMs is that you can run `kill -3 ` and a full stack trace and heap summary (including generational garbage collection details, which can be highly informative) will be dumped to stderr/logs. The JDK's `jps`, `jstat`, `jstack`, `jmap` are useful. [SJK tools](https://github.com/aragozin/jvm-tools) are more advanced. -- Use `mtr` as a better traceroute, to identify network issues. +- Use [`mtr`](http://www.bitwizard.nl/mtr/) as a better traceroute, to identify network issues. - For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. @@ -470,7 +470,7 @@ A few examples of piecing together commands: - `strace`: system call debugging -- `mtr`: better traceroute for network debugging +- [`mtr`](http://www.bitwizard.nl/mtr/): better traceroute for network debugging - `cssh`: visual concurrent shell From 54fc8a30548c5444e43c9d0e66ce5d1118196a6d Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:22:26 -0300 Subject: [PATCH 329/337] Add `ncdu` link --- README-cs.md | 2 +- README-el.md | 2 +- README-es.md | 2 +- README-fr.md | 2 +- README-it.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 2 +- README-zh-Hant.md | 2 +- README-zh.md | 2 +- README.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README-cs.md b/README-cs.md index 8c1296f..984d52a 100644 --- a/README-cs.md +++ b/README-cs.md @@ -264,7 +264,7 @@ Příklady: - Použijte [`mtr`](http://www.bitwizard.nl/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 *`. +- Při zjištování proč je disk plný, [`ncdu`](https://dev.yorhel.nl/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`](http://www.ex-parrot.com/~pdw/iftop/) nebo [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-el.md b/README-el.md index b34a51f..ddf4119 100644 --- a/README-el.md +++ b/README-el.md @@ -295,7 +295,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε την [`mtr`](http://www.bitwizard.nl/mtr/) ως μια βελτίωση της traceroute για να ανιχνεύετε ζητήματα του δικτύου. -- Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η `ncdu` εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. +- Για να δείτε γιατί ένας δίσκος είναι γεμάτος, η [`ncdu`](https://dev.yorhel.nl/ncdu) εξοικονομεί χρόνο σε σύγκριση με τις συνήθεις εντολές όπως `du -sh *`. - Για να βρείτε ποια δικτυακή σύνδεση ή διεργασία χρησιμοποιεί εύρος ζώνης, δοκιμάστε [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ή [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-es.md b/README-es.md index cbcfeac..7849980 100644 --- a/README-es.md +++ b/README-es.md @@ -269,7 +269,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Usa [`mtr`](http://www.bitwizard.nl/mtr/) como un mejor traceroute para identificar los problemas en la red. -- Para examinar por qué el disco está lleno, `ncdu` ahorra tiempo en comparación con los comandos usuales como `du -sh *`. +- Para examinar por qué el disco está lleno, [`ncdu`](https://dev.yorhel.nl/ncdu) ahorra tiempo en comparación con los comandos usuales como `du -sh *`. - Para encontrar cual socket o proceso está utilizando el ancho de banda, prueba [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-fr.md b/README-fr.md index 472a6be..4637083 100644 --- a/README-fr.md +++ b/README-fr.md @@ -382,7 +382,7 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - Utilisez [`mtr`](http://www.bitwizard.nl/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 déterminer les raisons pour lesquelles un disque est plein, [`ncdu`](https://dev.yorhel.nl/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`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-it.md b/README-it.md index 1ae5efb..38fbe83 100644 --- a/README-it.md +++ b/README-it.md @@ -272,7 +272,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Usa [`mtr`](http://www.bitwizard.nl/mtr/) per rilevare problemi di rete. Molto meglio di traceroute. -- Per capire perché un disco viene visto pieno, `ncdu` ti evita perdite di tempo rispetto al più comune `du -sh *`. +- Per capire perché un disco viene visto pieno, [`ncdu`](https://dev.yorhel.nl/ncdu) ti evita perdite di tempo rispetto al più comune `du -sh *`. - Per capire quale socket o processo sta usando troppa banda prova [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-ja.md b/README-ja.md index e301abc..91683d6 100644 --- a/README-ja.md +++ b/README-ja.md @@ -265,7 +265,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 改良版tracerouteとして[`mtr`](http://www.bitwizard.nl/mtr/)を使ってネットワークの問題を調査しよう。 -- ディスクがいっぱいになっている理由を調べるには、`ncdu`を使うと`du -sh *`より時間が節約できる。 +- ディスクがいっぱいになっている理由を調べるには、[`ncdu`](https://dev.yorhel.nl/ncdu)を使うと`du -sh *`より時間が節約できる。 - 帯域を使っているのがどのソケットやプロセスなのかを見つけるには、[`iftop`](http://www.ex-parrot.com/~pdw/iftop/)あるいは[`nethogs`](https://github.com/raboof/nethogs)を試そう。 diff --git a/README-ko.md b/README-ko.md index 183cbcb..9fd2aa1 100644 --- a/README-ko.md +++ b/README-ko.md @@ -239,7 +239,7 @@ - 네트워크 이슈들을 알아보기 위해서는 traceroute를 사용할수도 있지만 이보다 더 좋은 [`mtr`](http://www.bitwizard.nl/mtr/)를 사용하세요. -- 디스크가 왜 가득찼는지 알아보기 위해서 `ncdu`를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. +- 디스크가 왜 가득찼는지 알아보기 위해서 [`ncdu`](https://dev.yorhel.nl/ncdu)를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. - 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/)나 [`nethogs`](https://github.com/raboof/nethogs)를 사용하세요. diff --git a/README-pt.md b/README-pt.md index b7382ed..14e7813 100644 --- a/README-pt.md +++ b/README-pt.md @@ -230,7 +230,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Use [`mtr`](http://www.bitwizard.nl/mtr/) como uma melhor alternativa ao traceroute, para identificar problemas na rede. -- Para verificar o porque de um disco estar cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais como `du -sh *`. +- Para verificar o porque de um disco estar cheio, [`ncdu`](https://dev.yorhel.nl/ncdu) economiza bastante tempo em comparação aos comandos usuais como `du -sh *`. - Para procurar qual socket ou processo está utilizando a banda de rede, tente [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-ru.md b/README-ru.md index d6f3bc6..772122e 100644 --- a/README-ru.md +++ b/README-ru.md @@ -296,7 +296,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте [`mtr`](http://www.bitwizard.nl/mtr/) для лучшей трассировки, чтобы находить проблемы сети. -- Для того, чтобы узнать, почему диск полностью забит, используйте `ncdu`, это сохраняет время по сравнению с тем же `du -sh *`. +- Для того, чтобы узнать, почему диск полностью забит, используйте [`ncdu`](https://dev.yorhel.nl/ncdu), это сохраняет время по сравнению с тем же `du -sh *`. - Для того, чтобы узнать, какой сокет или процесс использует интернет, используйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) или [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-sl.md b/README-sl.md index 4bc9963..2b1a966 100644 --- a/README-sl.md +++ b/README-sl.md @@ -299,7 +299,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Uporabite [`mtr`](http://www.bitwizard.nl/mtr/) kot boljši usmerjevalnik sledenja za identifikacijo težav omrežja. -- Za iskanje, zakaj je disk poln, vam `ncdu` prihrani čas preko običajnih ukazov kot je `du -sh *`. +- Za iskanje, zakaj je disk poln, vam [`ncdu`](https://dev.yorhel.nl/ncdu) prihrani čas preko običajnih ukazov kot je `du -sh *`. - Da najdete katera vtičnica ali proces uporablja pasovno širino, poskusite [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ali [`nethogs`](https://github.com/raboof/nethogs). diff --git a/README-uk.md b/README-uk.md index 0c9f797..20b972e 100644 --- a/README-uk.md +++ b/README-uk.md @@ -204,7 +204,7 @@ - Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. - Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. - Використовуйте [`mtr`](http://www.bitwizard.nl/mtr/) для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі. -- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. +- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте [`ncdu`](https://dev.yorhel.nl/ncdu), це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. - Для більш серйозної відладки мережі використовуйте `wireshark`, `tshark`, і `ngrep`. diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 536172b..06a33f4 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -261,7 +261,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 使用[`mtr`](http://www.bitwizard.nl/mtr/) ​​去跟蹤路由,用於確定網路問題。 -- 用`ncdu` 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 +- 用[`ncdu`](https://dev.yorhel.nl/ncdu) 來檢視磁碟使用情況,它比常用的命令,如`du -sh *`,更節省時間。 - 查詢正在使用頻寬的 socket 連線或程序,使用[`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或[`nethogs`](https://github.com/raboof/nethogs)。 diff --git a/README-zh.md b/README-zh.md index a0afbf5..316e399 100644 --- a/README-zh.md +++ b/README-zh.md @@ -297,7 +297,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 使用 [`mtr`](http://www.bitwizard.nl/mtr/) 去跟踪路由,用于确定网络问题。 -- 用 `ncdu` 来查看磁盘使用情况,它比常用的命令,如 `du -sh *`,更节省时间。 +- 用 [`ncdu`](https://dev.yorhel.nl/ncdu) 来查看磁盘使用情况,它比常用的命令,如 `du -sh *`,更节省时间。 - 查找正在使用带宽的套接字连接或进程,使用 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs)。 diff --git a/README.md b/README.md index c477e20..9990073 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Use [`mtr`](http://www.bitwizard.nl/mtr/) as a better traceroute, to identify network issues. -- For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. +- For looking at why a disk is full, [`ncdu`](https://dev.yorhel.nl/ncdu) saves time over the usual commands like `du -sh *`. - To find which socket or process is using bandwidth, try [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs). From 4691cbde08d6ebaca2e52248dd830d28ac331998 Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:33:25 -0300 Subject: [PATCH 330/337] Add `wireshark` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 984d52a..5c8cace 100644 --- a/README-cs.md +++ b/README-cs.md @@ -270,7 +270,7 @@ Příklady: - 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é. +- Pro důslednější síťové ladění, [`wireshark`](https://wireshark.org/), `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`). @@ -434,7 +434,7 @@ Pár příkladů na spojování příkazů: - `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í +- [`wireshark`](https://wireshark.org/) a `tshark`: zachytávání packetů a síťové ladění - `ngrep`: grep pro síťovou vrstvu diff --git a/README-el.md b/README-el.md index ddf4119..bfa7c54 100644 --- a/README-el.md +++ b/README-el.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. -- Για πιο σοβαρή αποσφαλμάτωση δικτύου, `wireshark`, `tshark`, ή `ngrep`. +- Για πιο σοβαρή αποσφαλμάτωση δικτύου, [`wireshark`](https://wireshark.org/), `tshark`, ή `ngrep`. - Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή μέτρησης (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). @@ -445,7 +445,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: συγχρονισμός αρχείων και καταλόγων μέσω SSH ή σε τοπικό σύστημα αρχείων -- `wireshark` και `tshark`: συλλογή πακέτων και αποσφαλμάτωση συστήματος +- [`wireshark`](https://wireshark.org/) και `tshark`: συλλογή πακέτων και αποσφαλμάτωση συστήματος - `ngrep`: grep για το επίπεδο δικτύου diff --git a/README-es.md b/README-es.md index 7849980..6e14a0b 100644 --- a/README-es.md +++ b/README-es.md @@ -275,7 +275,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - La herramienta `ab` (viene con Apache) es útil para una verificación rápida del rendimiento de un servidor web. Para pruebas de carga más complejas prueba `siege`. -- Para una depuración mas seria de redes, `wireshark`, `tshark`, o `ngrep`. +- Para una depuración mas seria de redes, [`wireshark`](https://wireshark.org/), `tshark`, o `ngrep`. - Conoce acerca de `strace` y `ltrace`. Estas puede ser de utilidad si un programa está fallando, suspendido, o colgado, y no sabe por qué, o si quieres tener una idea general del rendimiento. Considera la opción de elaboración de perfiles (`-c`), y la habilidad de adjuntar a un proceso en ejecución (`-p`). @@ -441,7 +441,7 @@ Algunos ejemplos de comandos reunidos: - `rsync`: sincronización de archivos y carpetas sobre SSH o en sistema de archivos locales -- `wireshark` y `tshark`: captura de paquetes y depuración de la red +- [`wireshark`](https://wireshark.org/) y `tshark`: captura de paquetes y depuración de la red - `ngrep`: grep para la capa de la red diff --git a/README-fr.md b/README-fr.md index 4637083..6b85426 100644 --- a/README-fr.md +++ b/README-fr.md @@ -389,7 +389,7 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - 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, essayez `siege`. -- Pour du debogage réseau plus sérieux : `wireshark`, `tshark` ou `ngrep`. +- Pour du debogage réseau plus sérieux : [`wireshark`](https://wireshark.org/), `tshark` ou `ngrep`. - 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. @@ -566,7 +566,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `rsync` : synchronise des fichiers et des dossiers via SSH ou localement. -- `wireshark` et `tshark`: capture de paquets et dépannage réseau. +- [`wireshark`](https://wireshark.org/) et `tshark`: capture de paquets et dépannage réseau. - `ngrep` : grep pour les couches réseaux. diff --git a/README-it.md b/README-it.md index 38fbe83..6190137 100644 --- a/README-it.md +++ b/README-it.md @@ -278,7 +278,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. -- Per un debug di rete più avanzato, dai uno sguardo a `wireshark`, `tshark` o `ngrep`. +- Per un debug di rete più avanzato, dai uno sguardo a [`wireshark`](https://wireshark.org/), `tshark` o `ngrep`. - Impara qualcosa di più su `strace` e `ltrace`. Possono essere molto utili quando un programma crasha, o magari rimane in blocco e tu non capisci perché. Degne di nota le opzioni di profiling (`-c`), e la possibilità di agganciare un processo in esecuzione (`-p`). @@ -449,7 +449,7 @@ Qualche esempio di combinazione di più comandi comandi: - `rsync`: sincronizza file e cartelle tramite SSH oppure in locale. -- `wireshark` e `tshark`: packet capturing e debug di rete. +- [`wireshark`](https://wireshark.org/) e `tshark`: packet capturing e debug di rete. - `ngrep`: come grep... ma per il traffico di rete. diff --git a/README-ja.md b/README-ja.md index 91683d6..83ae13b 100644 --- a/README-ja.md +++ b/README-ja.md @@ -271,7 +271,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 -- より確実なネットワークのデバッグは`wireshark`、`tshark`、`ngrep`。 +- より確実なネットワークのデバッグは[`wireshark`](https://wireshark.org/)、`tshark`、`ngrep`。 - `strace`と`ltrace`について知っておこう。プログラムの実行に失敗したりハングしたりクラッシュしたりして、その理由が分からない、あるいはパフォーマンスに関する一般的情報を知りたいなら、このツールが役立つはずだ。プロファイリングのオプション(`-c`)や起動中のプロセスにアタッチする機能(`-p`)も覚えておこう。 @@ -440,7 +440,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: ファイルやフォルダをSSH経由またはローカルファイルシステム内で同期 -- `wireshark` と `tshark`: パケットキャプチャとネットワークデバッギング +- [`wireshark`](https://wireshark.org/) と `tshark`: パケットキャプチャとネットワークデバッギング - `ngrep`: ネットワーク層のgrep diff --git a/README-ko.md b/README-ko.md index 9fd2aa1..fde5723 100644 --- a/README-ko.md +++ b/README-ko.md @@ -245,7 +245,7 @@ - `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. -- 보다 심각한 경우의 네트워크 디버깅을 위해서는 `wireshark`, `tshark` 또는 `ngrep`를 사용하세요. +- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), `tshark` 또는 `ngrep`를 사용하세요. - `strace` 와 `ltrace`에 대해서 알아보세요. 이 커맨드들은 만일 어떤 프로그램에서 failing, hanging 혹은 crashing이 일어나거나 그 외에 여러분이 무슨이유인지 알지 못하는 상황이나 성능에 대한 대략적인 내용을 얻고자 할때 유용할 것입니다. 특히 프로파일링을 위한 옵션(`-c`)과 현재 실행중인 프로세스에 붙이기 위한 옵션(`-p`)을 기억하세요. @@ -400,7 +400,7 @@ - `rsync`: SSH를 이용해 원격 파일 시스템이나, 로컬 파일시스템의 파일과 폴더들을 동기화 할때 사용합니다 -- `wireshark` and `tshark`: 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 +- [`wireshark`](https://wireshark.org/) and `tshark`: 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 - `ngrep`: 네트워크 환경에서 grep과 같은 역할을 합니다 diff --git a/README-pt.md b/README-pt.md index 14e7813..50bdd1a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -236,7 +236,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - A ferramenta `ab` (que vem com o Apache) é muito útil para verificação rápida da performance do servidor web. Para mais complexos testes de carga, tente `siege`. -- Para debugs mais sérios da rede, `wireshark`, `tshark`, ou `ngrep`. +- Para debugs mais sérios da rede, [`wireshark`](https://wireshark.org/), `tshark`, ou `ngrep`. - Aprenda a respeito do `strace`e `ltrace`. Estes podem ser úteis se um programa está falhando, travado, ou quebrando, e você não sabe o por que, ou se você quer obter uma ideia geral da performance. Note que a opção de perfil (`-c`), e a habilidade de se plugar a um processo em execução (`-p`). @@ -392,7 +392,7 @@ Alguns exemplos de como reunir os comandos. - `rsync`: Sincroniza arquivos e pastas através do SSH. -- `wireshark` e `tshark`: captura de pacotes e debug de rede. +- [`wireshark`](https://wireshark.org/) e `tshark`: captura de pacotes e debug de rede. - `ngrep`: grep para a camada de rede. diff --git a/README-ru.md b/README-ru.md index 772122e..cce8732 100644 --- a/README-ru.md +++ b/README-ru.md @@ -302,7 +302,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. -- Для более серьёзной отладки сетей используйте `wireshark`, `tshark` и `ngrep`. +- Для более серьёзной отладки сетей используйте [`wireshark`](https://wireshark.org/), `tshark` и `ngrep`. - Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). @@ -471,7 +471,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: синхронизация файлов и папок через SSH -- `wireshark` и `tshark`: перехват пакетов и отладка сети +- [`wireshark`](https://wireshark.org/) и `tshark`: перехват пакетов и отладка сети - `ngrep`: grep для слоя сети (network layer). Перехват пакетов по заданной маске. diff --git a/README-sl.md b/README-sl.md index 2b1a966..0306e47 100644 --- a/README-sl.md +++ b/README-sl.md @@ -305,7 +305,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Orodje `ab` (prihaja z Apache-jem) je v pomoč za hitro in nečisto preverjanje uspešnosti spletnega strežnika. Za bolj kompleksno testiranje nalaganja poskusite `siege`. -- Za bolj resno razhroščevanje omrežja, `wireshark`, `tshark` ali `ngrep`. +- Za bolj resno razhroščevanje omrežja, [`wireshark`](https://wireshark.org/), `tshark` ali `ngrep`. - Poznajte `strace` in `ltrace`. Ta sta v pomoč, če program ni uspešen, se ustavlja ali poruši in ne veste zakaj, ali če želite dobiti splošno idejo o uspešnosti. Bodite pozorni na opcijo profiliranja (`-c`) in zmožnost dodajanja k procesu, ki se poganja (`-p`). @@ -473,7 +473,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `rsync`: sinhronizacija datotek in map preko SSH ali v lokalnem datotečnem sistemu -- `wireshark` in `tshark`: zajem paketov in razhroščevanje omrežja +- [`wireshark`](https://wireshark.org/) in `tshark`: zajem paketov in razhroščevanje omrežja - `ngrep`: grep za nivo omrežja diff --git a/README-uk.md b/README-uk.md index 20b972e..d9b6e54 100644 --- a/README-uk.md +++ b/README-uk.md @@ -207,7 +207,7 @@ - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте [`ncdu`](https://dev.yorhel.nl/ncdu), це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. -- Для більш серйозної відладки мережі використовуйте `wireshark`, `tshark`, і `ngrep`. +- Для більш серйозної відладки мережі використовуйте [`wireshark`](https://wireshark.org/), `tshark`, і `ngrep`. - Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). - `ldd` для перевірки системних бібліотек. - Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. @@ -310,7 +310,7 @@ - [`mtr`](http://www.bitwizard.nl/mtr/): трасування для відладки мережі - `cssh`: паралельне виконання команд в графічному інтерфейсі - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі -- `wireshark` і `tshark`: перехоплення пакетів і відладка мережі +- [`wireshark`](https://wireshark.org/) і `tshark`: перехоплення пакетів і відладка мережі - `ngrep`: grep мережевого рівня - `host` і `dig`: пошук в DNS - `lsof`: інформація про файлові дескриптори та сокети diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 06a33f4..24a4265 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 -- `wireshark`,`tshark` 和`ngrep` 可用於復雜的網路偵錯。 +- [`wireshark`](https://wireshark.org/),`tshark` 和`ngrep` 可用於復雜的網路偵錯。 - 瞭解 `strace` 和 `ltrace`。這倆工具在你的程式運行失敗、掛起甚至崩潰,而你卻不知道為什麼或你想對效能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的程序參數(`-p`)。 @@ -428,7 +428,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`:通過ssh 或本地檔案系統同步檔案和資料夾 -- `wireshark` 和`tshark`:抓包和網路偵錯工具 +- [`wireshark`](https://wireshark.org/) 和`tshark`:抓包和網路偵錯工具 - `ngrep`:網路層的 grep diff --git a/README-zh.md b/README-zh.md index 316e399..5aa5369 100644 --- a/README-zh.md +++ b/README-zh.md @@ -303,7 +303,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(捆绑于 Apache)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 -- `wireshark`,`tshark` 和 `ngrep` 可用于复杂的网络调试。 +- [`wireshark`](https://wireshark.org/),`tshark` 和 `ngrep` 可用于复杂的网络调试。 - 了解 `strace` 和 `ltrace`。这俩工具在你的程序运行失败、挂起甚至崩溃,而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的。注意 profile 参数(`-c`)和附加到一个运行的进程参数 (`-p`)。 @@ -472,7 +472,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`:通过 ssh 或本地文件系统同步文件和文件夹 -- `wireshark` 和 `tshark`:抓包和网络调试工具 +- [`wireshark`](https://wireshark.org/) 和 `tshark`:抓包和网络调试工具 - `ngrep`:网络层的 grep diff --git a/README.md b/README.md index 9990073..e654287 100644 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - The `ab` tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try `siege`. -- For more serious network debugging, `wireshark`, `tshark`, or `ngrep`. +- For more serious network debugging, [`wireshark`](https://wireshark.org/), `tshark`, or `ngrep`. - Know about `strace` and `ltrace`. These can be helpful if a program is failing, hanging, or crashing, and you don't know why, or if you want to get a general idea of performance. Note the profiling option (`-c`), and the ability to attach to a running process (`-p`). @@ -476,7 +476,7 @@ A few examples of piecing together commands: - `rsync`: sync files and folders over SSH or in local file system -- `wireshark` and `tshark`: packet capture and network debugging +- [`wireshark`](https://wireshark.org/) and `tshark`: packet capture and network debugging - `ngrep`: grep for the network layer From fff22c9b2e54c038e01d97411a4f44d9f494266f Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:42:04 -0300 Subject: [PATCH 331/337] Add `tshark` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 5c8cace..096e5cf 100644 --- a/README-cs.md +++ b/README-cs.md @@ -270,7 +270,7 @@ Příklady: - 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`](https://wireshark.org/), `tshark` nebo `ngrep` jsou to pravé. +- Pro důslednější síťové ladění, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 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`). @@ -434,7 +434,7 @@ Pár příkladů na spojování příkazů: - `rsync`: synchronizuje soubory a adresáře přes SSH nebo v lokálním systému souborů -- [`wireshark`](https://wireshark.org/) a `tshark`: zachytávání packetů a síťové ladění +- [`wireshark`](https://wireshark.org/) a [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): zachytávání packetů a síťové ladění - `ngrep`: grep pro síťovou vrstvu diff --git a/README-el.md b/README-el.md index bfa7c54..d275d16 100644 --- a/README-el.md +++ b/README-el.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. -- Για πιο σοβαρή αποσφαλμάτωση δικτύου, [`wireshark`](https://wireshark.org/), `tshark`, ή `ngrep`. +- Για πιο σοβαρή αποσφαλμάτωση δικτύου, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ή `ngrep`. - Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή μέτρησης (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). @@ -445,7 +445,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: συγχρονισμός αρχείων και καταλόγων μέσω SSH ή σε τοπικό σύστημα αρχείων -- [`wireshark`](https://wireshark.org/) και `tshark`: συλλογή πακέτων και αποσφαλμάτωση συστήματος +- [`wireshark`](https://wireshark.org/) και [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): συλλογή πακέτων και αποσφαλμάτωση συστήματος - `ngrep`: grep για το επίπεδο δικτύου diff --git a/README-es.md b/README-es.md index 6e14a0b..39eaf9d 100644 --- a/README-es.md +++ b/README-es.md @@ -275,7 +275,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - La herramienta `ab` (viene con Apache) es útil para una verificación rápida del rendimiento de un servidor web. Para pruebas de carga más complejas prueba `siege`. -- Para una depuración mas seria de redes, [`wireshark`](https://wireshark.org/), `tshark`, o `ngrep`. +- Para una depuración mas seria de redes, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), o `ngrep`. - Conoce acerca de `strace` y `ltrace`. Estas puede ser de utilidad si un programa está fallando, suspendido, o colgado, y no sabe por qué, o si quieres tener una idea general del rendimiento. Considera la opción de elaboración de perfiles (`-c`), y la habilidad de adjuntar a un proceso en ejecución (`-p`). @@ -441,7 +441,7 @@ Algunos ejemplos de comandos reunidos: - `rsync`: sincronización de archivos y carpetas sobre SSH o en sistema de archivos locales -- [`wireshark`](https://wireshark.org/) y `tshark`: captura de paquetes y depuración de la red +- [`wireshark`](https://wireshark.org/) y [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): captura de paquetes y depuración de la red - `ngrep`: grep para la capa de la red diff --git a/README-fr.md b/README-fr.md index 6b85426..88a6013 100644 --- a/README-fr.md +++ b/README-fr.md @@ -389,7 +389,7 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - 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, essayez `siege`. -- Pour du debogage réseau plus sérieux : [`wireshark`](https://wireshark.org/), `tshark` ou `ngrep`. +- Pour du debogage réseau plus sérieux : [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ou `ngrep`. - 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. @@ -566,7 +566,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `rsync` : synchronise des fichiers et des dossiers via SSH ou localement. -- [`wireshark`](https://wireshark.org/) et `tshark`: capture de paquets et dépannage réseau. +- [`wireshark`](https://wireshark.org/) et [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): capture de paquets et dépannage réseau. - `ngrep` : grep pour les couches réseaux. diff --git a/README-it.md b/README-it.md index 6190137..5c651a4 100644 --- a/README-it.md +++ b/README-it.md @@ -278,7 +278,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. -- Per un debug di rete più avanzato, dai uno sguardo a [`wireshark`](https://wireshark.org/), `tshark` o `ngrep`. +- Per un debug di rete più avanzato, dai uno sguardo a [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) o `ngrep`. - Impara qualcosa di più su `strace` e `ltrace`. Possono essere molto utili quando un programma crasha, o magari rimane in blocco e tu non capisci perché. Degne di nota le opzioni di profiling (`-c`), e la possibilità di agganciare un processo in esecuzione (`-p`). @@ -449,7 +449,7 @@ Qualche esempio di combinazione di più comandi comandi: - `rsync`: sincronizza file e cartelle tramite SSH oppure in locale. -- [`wireshark`](https://wireshark.org/) e `tshark`: packet capturing e debug di rete. +- [`wireshark`](https://wireshark.org/) e [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): packet capturing e debug di rete. - `ngrep`: come grep... ma per il traffico di rete. diff --git a/README-ja.md b/README-ja.md index 83ae13b..24041d8 100644 --- a/README-ja.md +++ b/README-ja.md @@ -271,7 +271,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 -- より確実なネットワークのデバッグは[`wireshark`](https://wireshark.org/)、`tshark`、`ngrep`。 +- より確実なネットワークのデバッグは[`wireshark`](https://wireshark.org/)、[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html)、`ngrep`。 - `strace`と`ltrace`について知っておこう。プログラムの実行に失敗したりハングしたりクラッシュしたりして、その理由が分からない、あるいはパフォーマンスに関する一般的情報を知りたいなら、このツールが役立つはずだ。プロファイリングのオプション(`-c`)や起動中のプロセスにアタッチする機能(`-p`)も覚えておこう。 @@ -440,7 +440,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: ファイルやフォルダをSSH経由またはローカルファイルシステム内で同期 -- [`wireshark`](https://wireshark.org/) と `tshark`: パケットキャプチャとネットワークデバッギング +- [`wireshark`](https://wireshark.org/) と [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): パケットキャプチャとネットワークデバッギング - `ngrep`: ネットワーク層のgrep diff --git a/README-ko.md b/README-ko.md index fde5723..e629707 100644 --- a/README-ko.md +++ b/README-ko.md @@ -245,7 +245,7 @@ - `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. -- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), `tshark` 또는 `ngrep`를 사용하세요. +- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 또는 `ngrep`를 사용하세요. - `strace` 와 `ltrace`에 대해서 알아보세요. 이 커맨드들은 만일 어떤 프로그램에서 failing, hanging 혹은 crashing이 일어나거나 그 외에 여러분이 무슨이유인지 알지 못하는 상황이나 성능에 대한 대략적인 내용을 얻고자 할때 유용할 것입니다. 특히 프로파일링을 위한 옵션(`-c`)과 현재 실행중인 프로세스에 붙이기 위한 옵션(`-p`)을 기억하세요. @@ -400,7 +400,7 @@ - `rsync`: SSH를 이용해 원격 파일 시스템이나, 로컬 파일시스템의 파일과 폴더들을 동기화 할때 사용합니다 -- [`wireshark`](https://wireshark.org/) and `tshark`: 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 +- [`wireshark`](https://wireshark.org/) and [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 - `ngrep`: 네트워크 환경에서 grep과 같은 역할을 합니다 diff --git a/README-pt.md b/README-pt.md index 50bdd1a..f415ff5 100644 --- a/README-pt.md +++ b/README-pt.md @@ -236,7 +236,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - A ferramenta `ab` (que vem com o Apache) é muito útil para verificação rápida da performance do servidor web. Para mais complexos testes de carga, tente `siege`. -- Para debugs mais sérios da rede, [`wireshark`](https://wireshark.org/), `tshark`, ou `ngrep`. +- Para debugs mais sérios da rede, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ou `ngrep`. - Aprenda a respeito do `strace`e `ltrace`. Estes podem ser úteis se um programa está falhando, travado, ou quebrando, e você não sabe o por que, ou se você quer obter uma ideia geral da performance. Note que a opção de perfil (`-c`), e a habilidade de se plugar a um processo em execução (`-p`). @@ -392,7 +392,7 @@ Alguns exemplos de como reunir os comandos. - `rsync`: Sincroniza arquivos e pastas através do SSH. -- [`wireshark`](https://wireshark.org/) e `tshark`: captura de pacotes e debug de rede. +- [`wireshark`](https://wireshark.org/) e [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): captura de pacotes e debug de rede. - `ngrep`: grep para a camada de rede. diff --git a/README-ru.md b/README-ru.md index cce8732..9e48c97 100644 --- a/README-ru.md +++ b/README-ru.md @@ -302,7 +302,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. -- Для более серьёзной отладки сетей используйте [`wireshark`](https://wireshark.org/), `tshark` и `ngrep`. +- Для более серьёзной отладки сетей используйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) и `ngrep`. - Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). @@ -471,7 +471,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`: синхронизация файлов и папок через SSH -- [`wireshark`](https://wireshark.org/) и `tshark`: перехват пакетов и отладка сети +- [`wireshark`](https://wireshark.org/) и [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): перехват пакетов и отладка сети - `ngrep`: grep для слоя сети (network layer). Перехват пакетов по заданной маске. diff --git a/README-sl.md b/README-sl.md index 0306e47..cdf8c90 100644 --- a/README-sl.md +++ b/README-sl.md @@ -305,7 +305,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Orodje `ab` (prihaja z Apache-jem) je v pomoč za hitro in nečisto preverjanje uspešnosti spletnega strežnika. Za bolj kompleksno testiranje nalaganja poskusite `siege`. -- Za bolj resno razhroščevanje omrežja, [`wireshark`](https://wireshark.org/), `tshark` ali `ngrep`. +- Za bolj resno razhroščevanje omrežja, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ali `ngrep`. - Poznajte `strace` in `ltrace`. Ta sta v pomoč, če program ni uspešen, se ustavlja ali poruši in ne veste zakaj, ali če želite dobiti splošno idejo o uspešnosti. Bodite pozorni na opcijo profiliranja (`-c`) in zmožnost dodajanja k procesu, ki se poganja (`-p`). @@ -473,7 +473,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `rsync`: sinhronizacija datotek in map preko SSH ali v lokalnem datotečnem sistemu -- [`wireshark`](https://wireshark.org/) in `tshark`: zajem paketov in razhroščevanje omrežja +- [`wireshark`](https://wireshark.org/) in [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): zajem paketov in razhroščevanje omrežja - `ngrep`: grep za nivo omrežja diff --git a/README-uk.md b/README-uk.md index d9b6e54..68795bc 100644 --- a/README-uk.md +++ b/README-uk.md @@ -207,7 +207,7 @@ - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте [`ncdu`](https://dev.yorhel.nl/ncdu), це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. -- Для більш серйозної відладки мережі використовуйте [`wireshark`](https://wireshark.org/), `tshark`, і `ngrep`. +- Для більш серйозної відладки мережі використовуйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), і `ngrep`. - Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). - `ldd` для перевірки системних бібліотек. - Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. @@ -310,7 +310,7 @@ - [`mtr`](http://www.bitwizard.nl/mtr/): трасування для відладки мережі - `cssh`: паралельне виконання команд в графічному інтерфейсі - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі -- [`wireshark`](https://wireshark.org/) і `tshark`: перехоплення пакетів і відладка мережі +- [`wireshark`](https://wireshark.org/) і [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): перехоплення пакетів і відладка мережі - `ngrep`: grep мережевого рівня - `host` і `dig`: пошук в DNS - `lsof`: інформація про файлові дескриптори та сокети diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 24a4265..a2dd813 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 -- [`wireshark`](https://wireshark.org/),`tshark` 和`ngrep` 可用於復雜的網路偵錯。 +- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和`ngrep` 可用於復雜的網路偵錯。 - 瞭解 `strace` 和 `ltrace`。這倆工具在你的程式運行失敗、掛起甚至崩潰,而你卻不知道為什麼或你想對效能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的程序參數(`-p`)。 @@ -428,7 +428,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`:通過ssh 或本地檔案系統同步檔案和資料夾 -- [`wireshark`](https://wireshark.org/) 和`tshark`:抓包和網路偵錯工具 +- [`wireshark`](https://wireshark.org/) 和[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html):抓包和網路偵錯工具 - `ngrep`:網路層的 grep diff --git a/README-zh.md b/README-zh.md index 5aa5369..1cc9962 100644 --- a/README-zh.md +++ b/README-zh.md @@ -303,7 +303,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(捆绑于 Apache)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 -- [`wireshark`](https://wireshark.org/),`tshark` 和 `ngrep` 可用于复杂的网络调试。 +- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和 `ngrep` 可用于复杂的网络调试。 - 了解 `strace` 和 `ltrace`。这俩工具在你的程序运行失败、挂起甚至崩溃,而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的。注意 profile 参数(`-c`)和附加到一个运行的进程参数 (`-p`)。 @@ -472,7 +472,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `rsync`:通过 ssh 或本地文件系统同步文件和文件夹 -- [`wireshark`](https://wireshark.org/) 和 `tshark`:抓包和网络调试工具 +- [`wireshark`](https://wireshark.org/) 和 [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html):抓包和网络调试工具 - `ngrep`:网络层的 grep diff --git a/README.md b/README.md index e654287..b9c1ef8 100644 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - The `ab` tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try `siege`. -- For more serious network debugging, [`wireshark`](https://wireshark.org/), `tshark`, or `ngrep`. +- For more serious network debugging, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), or `ngrep`. - Know about `strace` and `ltrace`. These can be helpful if a program is failing, hanging, or crashing, and you don't know why, or if you want to get a general idea of performance. Note the profiling option (`-c`), and the ability to attach to a running process (`-p`). @@ -476,7 +476,7 @@ A few examples of piecing together commands: - `rsync`: sync files and folders over SSH or in local file system -- [`wireshark`](https://wireshark.org/) and `tshark`: packet capture and network debugging +- [`wireshark`](https://wireshark.org/) and [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): packet capture and network debugging - `ngrep`: grep for the network layer From 46011ec11c535678f9839a6e405ae238e9afe7c8 Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 00:43:12 -0300 Subject: [PATCH 332/337] Add `ngrep` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 096e5cf..71f593d 100644 --- a/README-cs.md +++ b/README-cs.md @@ -270,7 +270,7 @@ Příklady: - 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`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) nebo `ngrep` jsou to pravé. +- Pro důslednější síťové ladění, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) nebo [`ngrep`](http://ngrep.sourceforge.net/) 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`). @@ -436,7 +436,7 @@ Pár příkladů na spojování příkazů: - [`wireshark`](https://wireshark.org/) a [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): zachytávání packetů a síťové ladění -- `ngrep`: grep pro síťovou vrstvu +- [`ngrep`](http://ngrep.sourceforge.net/): grep pro síťovou vrstvu - `host` a `dig`: DNS vyhledávání diff --git a/README-el.md b/README-el.md index d275d16..512a8d4 100644 --- a/README-el.md +++ b/README-el.md @@ -301,7 +301,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Το εργαλείο `ab` (έρχεται μαζί με Apache) βοηθά στον πρόχειρο έλεγχο της απόδοσης web server. Για πιο σύνθετο έλεγχο φόρτου, δοκιμάστε `siege`. -- Για πιο σοβαρή αποσφαλμάτωση δικτύου, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ή `ngrep`. +- Για πιο σοβαρή αποσφαλμάτωση δικτύου, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ή [`ngrep`](http://ngrep.sourceforge.net/). - Να γνωρίζετε για τις `strace` και `ltrace`. Αυτές μπορεί να φανούν χρήσιμες, όταν ένα πρόγραμμα αποτυγχάνει, κρεμάει ή σκάει και δε γνωρίζετε γιατί ή αν θέλετε να έχετε μία γενική ιδέα της απόδοσης. Σημειώστε την επιλογή μέτρησης (`-c`) και τη δυνατότητα να συνδέσετε σε μία διεργασία που εκτελείται (`-p`). @@ -447,7 +447,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`wireshark`](https://wireshark.org/) και [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): συλλογή πακέτων και αποσφαλμάτωση συστήματος -- `ngrep`: grep για το επίπεδο δικτύου +- [`ngrep`](http://ngrep.sourceforge.net/): grep για το επίπεδο δικτύου - `host` και `dig`: αναζητήσεις DNS diff --git a/README-es.md b/README-es.md index 39eaf9d..e6650f3 100644 --- a/README-es.md +++ b/README-es.md @@ -275,7 +275,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - La herramienta `ab` (viene con Apache) es útil para una verificación rápida del rendimiento de un servidor web. Para pruebas de carga más complejas prueba `siege`. -- Para una depuración mas seria de redes, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), o `ngrep`. +- Para una depuración mas seria de redes, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), o [`ngrep`](http://ngrep.sourceforge.net/). - Conoce acerca de `strace` y `ltrace`. Estas puede ser de utilidad si un programa está fallando, suspendido, o colgado, y no sabe por qué, o si quieres tener una idea general del rendimiento. Considera la opción de elaboración de perfiles (`-c`), y la habilidad de adjuntar a un proceso en ejecución (`-p`). @@ -443,7 +443,7 @@ Algunos ejemplos de comandos reunidos: - [`wireshark`](https://wireshark.org/) y [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): captura de paquetes y depuración de la red -- `ngrep`: grep para la capa de la red +- [`ngrep`](http://ngrep.sourceforge.net/): grep para la capa de la red - `host` y `dig`: consultas DNS diff --git a/README-fr.md b/README-fr.md index 88a6013..8991bda 100644 --- a/README-fr.md +++ b/README-fr.md @@ -389,7 +389,7 @@ Les commandes `jps`, `jstat`, `jstack` et `jmap` de la JDK sont utiles. L'[outil - 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, essayez `siege`. -- Pour du debogage réseau plus sérieux : [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ou `ngrep`. +- Pour du debogage réseau plus sérieux : [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ou [`ngrep`](http://ngrep.sourceforge.net/). - 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. @@ -568,7 +568,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - [`wireshark`](https://wireshark.org/) et [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): capture de paquets et dépannage réseau. -- `ngrep` : grep pour les couches réseaux. +- [`ngrep`](http://ngrep.sourceforge.net/) : grep pour les couches réseaux. - `host` et `dig`: interroge les serveurs DNS. diff --git a/README-it.md b/README-it.md index 5c651a4..57e638e 100644 --- a/README-it.md +++ b/README-it.md @@ -278,7 +278,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` (incluso in Apache) è ottimo per un test di carico veloce di un webserver. Per test di carico più avanzati, prova anche `siege`. -- Per un debug di rete più avanzato, dai uno sguardo a [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) o `ngrep`. +- Per un debug di rete più avanzato, dai uno sguardo a [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) o [`ngrep`](http://ngrep.sourceforge.net/). - Impara qualcosa di più su `strace` e `ltrace`. Possono essere molto utili quando un programma crasha, o magari rimane in blocco e tu non capisci perché. Degne di nota le opzioni di profiling (`-c`), e la possibilità di agganciare un processo in esecuzione (`-p`). @@ -451,7 +451,7 @@ Qualche esempio di combinazione di più comandi comandi: - [`wireshark`](https://wireshark.org/) e [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): packet capturing e debug di rete. -- `ngrep`: come grep... ma per il traffico di rete. +- [`ngrep`](http://ngrep.sourceforge.net/): come grep... ma per il traffico di rete. - `host` e `dig`: DNS lookup. diff --git a/README-ja.md b/README-ja.md index 24041d8..a2a1105 100644 --- a/README-ja.md +++ b/README-ja.md @@ -271,7 +271,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`(Apacheに付属)は、Webサーバのパフォーマンスをざっくりチェックするのに便利。より複雑なテストには`siege`を試そう。 -- より確実なネットワークのデバッグは[`wireshark`](https://wireshark.org/)、[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html)、`ngrep`。 +- より確実なネットワークのデバッグは[`wireshark`](https://wireshark.org/)、[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html)、[`ngrep`](http://ngrep.sourceforge.net/)。 - `strace`と`ltrace`について知っておこう。プログラムの実行に失敗したりハングしたりクラッシュしたりして、その理由が分からない、あるいはパフォーマンスに関する一般的情報を知りたいなら、このツールが役立つはずだ。プロファイリングのオプション(`-c`)や起動中のプロセスにアタッチする機能(`-p`)も覚えておこう。 @@ -442,7 +442,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`wireshark`](https://wireshark.org/) と [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): パケットキャプチャとネットワークデバッギング -- `ngrep`: ネットワーク層のgrep +- [`ngrep`](http://ngrep.sourceforge.net/): ネットワーク層のgrep - `host` と `dig`: DNS名前解決 diff --git a/README-ko.md b/README-ko.md index e629707..02673fd 100644 --- a/README-ko.md +++ b/README-ko.md @@ -245,7 +245,7 @@ - `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. -- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 또는 `ngrep`를 사용하세요. +- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 또는 [`ngrep`](http://ngrep.sourceforge.net/)를 사용하세요. - `strace` 와 `ltrace`에 대해서 알아보세요. 이 커맨드들은 만일 어떤 프로그램에서 failing, hanging 혹은 crashing이 일어나거나 그 외에 여러분이 무슨이유인지 알지 못하는 상황이나 성능에 대한 대략적인 내용을 얻고자 할때 유용할 것입니다. 특히 프로파일링을 위한 옵션(`-c`)과 현재 실행중인 프로세스에 붙이기 위한 옵션(`-p`)을 기억하세요. @@ -402,7 +402,7 @@ - [`wireshark`](https://wireshark.org/) and [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 -- `ngrep`: 네트워크 환경에서 grep과 같은 역할을 합니다 +- [`ngrep`](http://ngrep.sourceforge.net/): 네트워크 환경에서 grep과 같은 역할을 합니다 - `host` and `dig`: DNS 정보를 보여줍니다 diff --git a/README-pt.md b/README-pt.md index f415ff5..3ecc059 100644 --- a/README-pt.md +++ b/README-pt.md @@ -236,7 +236,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - A ferramenta `ab` (que vem com o Apache) é muito útil para verificação rápida da performance do servidor web. Para mais complexos testes de carga, tente `siege`. -- Para debugs mais sérios da rede, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ou `ngrep`. +- Para debugs mais sérios da rede, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), ou [`ngrep`](http://ngrep.sourceforge.net/). - Aprenda a respeito do `strace`e `ltrace`. Estes podem ser úteis se um programa está falhando, travado, ou quebrando, e você não sabe o por que, ou se você quer obter uma ideia geral da performance. Note que a opção de perfil (`-c`), e a habilidade de se plugar a um processo em execução (`-p`). @@ -394,7 +394,7 @@ Alguns exemplos de como reunir os comandos. - [`wireshark`](https://wireshark.org/) e [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): captura de pacotes e debug de rede. -- `ngrep`: grep para a camada de rede. +- [`ngrep`](http://ngrep.sourceforge.net/): grep para a camada de rede. - `host` e `dig`: Consultas DNS. diff --git a/README-ru.md b/README-ru.md index 9e48c97..8cc21a3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -302,7 +302,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab`, которая поставляется вместе с apache, полезна для быстрой и поверхностной проверки производительности веб-сервера. Для более серьезного нагрузочного тестирования используйте `siege`. -- Для более серьёзной отладки сетей используйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) и `ngrep`. +- Для более серьёзной отладки сетей используйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) и [`ngrep`](http://ngrep.sourceforge.net/). - Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит, и вы не знаете почему Или если вы хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) и возможность прицепиться к процессу по pid (`-p`). @@ -473,7 +473,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`wireshark`](https://wireshark.org/) и [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): перехват пакетов и отладка сети -- `ngrep`: grep для слоя сети (network layer). Перехват пакетов по заданной маске. +- [`ngrep`](http://ngrep.sourceforge.net/): grep для слоя сети (network layer). Перехват пакетов по заданной маске. - `host` и `dig`: узнать DNS diff --git a/README-sl.md b/README-sl.md index cdf8c90..f4c2620 100644 --- a/README-sl.md +++ b/README-sl.md @@ -305,7 +305,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Orodje `ab` (prihaja z Apache-jem) je v pomoč za hitro in nečisto preverjanje uspešnosti spletnega strežnika. Za bolj kompleksno testiranje nalaganja poskusite `siege`. -- Za bolj resno razhroščevanje omrežja, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ali `ngrep`. +- Za bolj resno razhroščevanje omrežja, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) ali [`ngrep`](http://ngrep.sourceforge.net/). - Poznajte `strace` in `ltrace`. Ta sta v pomoč, če program ni uspešen, se ustavlja ali poruši in ne veste zakaj, ali če želite dobiti splošno idejo o uspešnosti. Bodite pozorni na opcijo profiliranja (`-c`) in zmožnost dodajanja k procesu, ki se poganja (`-p`). @@ -475,7 +475,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - [`wireshark`](https://wireshark.org/) in [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): zajem paketov in razhroščevanje omrežja -- `ngrep`: grep za nivo omrežja +- [`ngrep`](http://ngrep.sourceforge.net/): grep za nivo omrežja - `host` in `dig`: pogled DNS diff --git a/README-uk.md b/README-uk.md index 68795bc..3bb0882 100644 --- a/README-uk.md +++ b/README-uk.md @@ -207,7 +207,7 @@ - Для того, щоб дізнатися, чому диск повністю забитий, використовуйте [`ncdu`](https://dev.yorhel.nl/ncdu), це зберігає час у порівнянні з тим же `du -sh *`. - Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs). - Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. -- Для більш серйозної відладки мережі використовуйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), і `ngrep`. +- Для більш серйозної відладки мережі використовуйте [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), і [`ngrep`](http://ngrep.sourceforge.net/). - Знайте про `strace` та `ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість відладки (`-c`) і можливість причепитися до процесу по pid (` -p`). - `ldd` для перевірки системних бібліотек. - Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. @@ -311,7 +311,7 @@ - `cssh`: паралельне виконання команд в графічному інтерфейсі - `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі - [`wireshark`](https://wireshark.org/) і [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): перехоплення пакетів і відладка мережі -- `ngrep`: grep мережевого рівня +- [`ngrep`](http://ngrep.sourceforge.net/): grep мережевого рівня - `host` і `dig`: пошук в DNS - `lsof`: інформація про файлові дескриптори та сокети - `dstat`: корисна статистика ОС diff --git a/README-zh-Hant.md b/README-zh-Hant.md index a2dd813..82b79c1 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -267,7 +267,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(內建於Apache)可以簡單粗暴地檢查 web 伺服器的效能。對於更複雜的負載測試,使用`siege`。 -- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和`ngrep` 可用於復雜的網路偵錯。 +- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和[`ngrep`](http://ngrep.sourceforge.net/) 可用於復雜的網路偵錯。 - 瞭解 `strace` 和 `ltrace`。這倆工具在你的程式運行失敗、掛起甚至崩潰,而你卻不知道為什麼或你想對效能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的程序參數(`-p`)。 @@ -430,7 +430,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`wireshark`](https://wireshark.org/) 和[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html):抓包和網路偵錯工具 -- `ngrep`:網路層的 grep +- [`ngrep`](http://ngrep.sourceforge.net/):網路層的 grep - `host` 和 `dig`:DNS 查詢 diff --git a/README-zh.md b/README-zh.md index 1cc9962..057b8c7 100644 --- a/README-zh.md +++ b/README-zh.md @@ -303,7 +303,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `ab` 工具(捆绑于 Apache)可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试,使用 `siege`。 -- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和 `ngrep` 可用于复杂的网络调试。 +- [`wireshark`](https://wireshark.org/),[`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 和 [`ngrep`](http://ngrep.sourceforge.net/) 可用于复杂的网络调试。 - 了解 `strace` 和 `ltrace`。这俩工具在你的程序运行失败、挂起甚至崩溃,而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的。注意 profile 参数(`-c`)和附加到一个运行的进程参数 (`-p`)。 @@ -474,7 +474,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - [`wireshark`](https://wireshark.org/) 和 [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html):抓包和网络调试工具 -- `ngrep`:网络层的 grep +- [`ngrep`](http://ngrep.sourceforge.net/):网络层的 grep - `host` 和 `dig`:DNS 查找 diff --git a/README.md b/README.md index b9c1ef8..6194d04 100644 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - The `ab` tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try `siege`. -- For more serious network debugging, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), or `ngrep`. +- For more serious network debugging, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), or [`ngrep`](http://ngrep.sourceforge.net/). - Know about `strace` and `ltrace`. These can be helpful if a program is failing, hanging, or crashing, and you don't know why, or if you want to get a general idea of performance. Note the profiling option (`-c`), and the ability to attach to a running process (`-p`). @@ -478,7 +478,7 @@ A few examples of piecing together commands: - [`wireshark`](https://wireshark.org/) and [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): packet capture and network debugging -- `ngrep`: grep for the network layer +- [`ngrep`](http://ngrep.sourceforge.net/): grep for the network layer - `host` and `dig`: DNS lookups From 7e7991bf88fdf1eed9f03f1c795c630e2af6657f Mon Sep 17 00:00:00 2001 From: Fernando Almeida Date: Thu, 25 Aug 2016 11:23:44 -0300 Subject: [PATCH 333/337] Add `sar` link --- README-cs.md | 4 ++-- README-el.md | 4 ++-- README-es.md | 4 ++-- README-fr.md | 4 ++-- README-it.md | 4 ++-- README-ja.md | 4 ++-- README-ko.md | 4 ++-- README-pt.md | 4 ++-- README-ru.md | 4 ++-- README-sl.md | 4 ++-- README-uk.md | 4 ++-- README-zh-Hant.md | 4 ++-- README-zh.md | 4 ++-- README.md | 4 ++-- 14 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README-cs.md b/README-cs.md index 71f593d..070b559 100644 --- a/README-cs.md +++ b/README-cs.md @@ -280,7 +280,7 @@ Příklady: - 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. +- Když zjišťujete proč se něco v minulosti pokazilo, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) 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). @@ -460,7 +460,7 @@ Pár příkladů na spojování příkazů: - `id`: informace o identitě uživatele/skupiny -- `sar`: historické systémové statistiky +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): historické systémové statistiky - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) nebo [`nethogs`](https://github.com/raboof/nethogs): využití sítě pro proces nebo socket diff --git a/README-el.md b/README-el.md index 512a8d4..7fab5d3 100644 --- a/README-el.md +++ b/README-el.md @@ -311,7 +311,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Χρησιμοποιήστε τον κατάλογο `/proc`. Είναι εκπληκτικά χρήσιμος ορισμένες φορές, όταν αποσφαλματώνετε ζωντανά προβλήματα. Παραδείγματα: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (όπου `xxx` είναι το id της διεργασίας ή pid). -- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η `sar` μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για επεξεργαστή, μνήμη, δίκτυο κλπ. +- Όταν αποσφαλματώνετε κάτι που ήταν λάθος στο παρελθόν, η [`sar`](http://sebastien.godard.pagesperso-orange.fr/) μπορεί να είναι πολύ χρήσιμη. Δείχνει ιστορικά στατιστικά για επεξεργαστή, μνήμη, δίκτυο κλπ. - Για πιο εις βάθος ανάλυση συστήματος και απόδοσης, δείτε τις `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))και [`sysdig`](https://github.com/draios/sysdig). @@ -471,7 +471,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `id`: πληροφορίες ταυτότητας χρήστη/ομάδας -- `sar`: ιστορικά στατιστικά συστήματος +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): ιστορικά στατιστικά συστήματος - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ή [`nethogs`](https://github.com/raboof/nethogs): χρήση δικτύου ανά δικτυακή σύνδεση ή διεργασία diff --git a/README-es.md b/README-es.md index e6650f3..cd96a47 100644 --- a/README-es.md +++ b/README-es.md @@ -285,7 +285,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Usa `/proc`. Es extraordinariamente útil algunas veces cuando se depuran problemas en vivo. Ejemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (donde `xxx` es el id o pid del proceso). -- Cuando se depura porque algo salió mal en el pasado, `sar` puede ser muy útil. Este muestra la estadística histórica en CPU, memoria, red, etc. +- Cuando se depura porque algo salió mal en el pasado, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) puede ser muy útil. Este muestra la estadística histórica en CPU, memoria, red, etc. - Para sistemas y análisis de rendimiento de mayor profundidad, examina `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), y [`sysdig`](https://github.com/draios/sysdig). @@ -467,7 +467,7 @@ Algunos ejemplos de comandos reunidos: - `id`: información de identidad de usuario/grupo -- `sar`: estadísticas históricas del sistema +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): estadísticas históricas del sistema - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs): utilización de la red por un socket o proceso diff --git a/README-fr.md b/README-fr.md index 8991bda..26c227f 100644 --- a/README-fr.md +++ b/README-fr.md @@ -402,7 +402,7 @@ Remarquez l'option de profilage (`-c`) et la possibilité de les attacher à un - 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. +- Pour comprendre pourquoi quelque chose a mal tourné antérieurement, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) 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 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). @@ -592,7 +592,7 @@ Si vous voulez un décompte du nombre de requêtes pour chaque valeur de `acct_i - `id` : affiche les informations sur un utilisateur et ses groupes. -- `sar` : statistiques sur l'activité du système +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/) : statistiques sur l'activité du système - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs) : utilisation du réseau par un socket ou un processus. diff --git a/README-it.md b/README-it.md index 57e638e..313a3cc 100644 --- a/README-it.md +++ b/README-it.md @@ -288,7 +288,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Usa `/proc`. Fantastico quando devi fare un live debug in caso di problemi. Esempi: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (dove `xxx` è il nome del processo o il suo pid). -- Quando vuoi debuggare qualcosa che è andato storto in passato, `sar` può essere molto utile. Permette di controllare uno storico delle statistiche di CPU, memoria, rete e così via. +- Quando vuoi debuggare qualcosa che è andato storto in passato, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) può essere molto utile. Permette di controllare uno storico delle statistiche di CPU, memoria, rete e così via. - Usa `stap` per un'analisi più approfondita del sistema in termini di performance ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), e [`sysdig`](https://github.com/draios/sysdig). @@ -475,7 +475,7 @@ Qualche esempio di combinazione di più comandi comandi: - `id`: user/group identity info. -- `sar`: cronologia di alcune statistiche del sistema. +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): cronologia di alcune statistiche del sistema. - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) o [`nethogs`](https://github.com/raboof/nethogs): uso della rete da parte di socket e processi. diff --git a/README-ja.md b/README-ja.md index a2a1105..3270eca 100644 --- a/README-ja.md +++ b/README-ja.md @@ -281,7 +281,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `/proc`以下のファイルを使おう。今起こっている問題をデバッグするのには素晴らしく便利だ。例えば、`/proc/cpuinfo`、`/proc/meminfo`、`/proc/cmdline`、`/proc/xxx/cwd`、`/proc/xxx/ece`、`/proc/xxx/fd/`、`/proc/xxx/smaps` (ここで、`xxx`はプロセスIDまたはPIDを意味する)。 -- 過去に何か問題が起きたことの原因を探るなら、`sar`がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 +- 過去に何か問題が起きたことの原因を探るなら、[`sar`](http://sebastien.godard.pagesperso-orange.fr/)がとても便利。CPUやメモリ、ネットワークなどの過去の統計情報を見られる。 - さらに深いシステムとパフォーマンスの分析には、`stap` ([SystemTap](https://sourceware.org/systemtap/wiki))、[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux))、 [`sysdig`](https://github.com/draios/sysdig)。 @@ -466,7 +466,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `id`: ユーザやグループの情報 -- `sar`: システム統計情報の履歴 +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): システム統計情報の履歴 - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) または [`nethogs`](https://github.com/raboof/nethogs): ソケットあるいはプロセスごとのネットワーク使用量 diff --git a/README-ko.md b/README-ko.md index 02673fd..c556527 100644 --- a/README-ko.md +++ b/README-ko.md @@ -255,7 +255,7 @@ - `/proc`를 사용하세요. 이것은 현재 발생하고 있는 문제를 디버깅할때 종종 놀랍도록 큰 도움이 될것입니다. 예시:`/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (`xxx`는 프로세스 id나 pid입니다). -- 과거에 왜 무엇인가가 잘못되었는지를 디버깅할때에는 `sar`가 매우 유용할 것입니다. 이 커맨드는 CPU, memory, network 등의 통계 내역을 보여줍니다. +- 과거에 왜 무엇인가가 잘못되었는지를 디버깅할때에는 [`sar`](http://sebastien.godard.pagesperso-orange.fr/)가 매우 유용할 것입니다. 이 커맨드는 CPU, memory, network 등의 통계 내역을 보여줍니다. - 시스템의 보다 깊은곳을 보거나 퍼포먼스를 분석하기 위해서는, `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)),나 [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), 그리고 [`sysdig`](https://github.com/draios/sysdig)를 사용해보세요. @@ -426,7 +426,7 @@ - `id`: 현재 유저나 그룹에 대한 식별 정보를 보여줍니다 -- `sar`: 시스템 상태에 대한 정보를 보여줍니다 +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): 시스템 상태에 대한 정보를 보여줍니다 - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 diff --git a/README-pt.md b/README-pt.md index 3ecc059..c5d4676 100644 --- a/README-pt.md +++ b/README-pt.md @@ -246,7 +246,7 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Utilize `/proc`. Este é incrivelmente útil em algumas vezes quando se deseja debugar problemas ao vivo. Exemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. -- Quando estiver debugando o porque de algo ter dado errado no passado, `sar` pode ser de muita utilidade. Ele exibe as estatísticas históricas da CPU, memória, rede e etc. +- Quando estiver debugando o porque de algo ter dado errado no passado, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) pode ser de muita utilidade. Ele exibe as estatísticas históricas da CPU, memória, rede e etc. - Para análises de performance mais profundas do sistema, dê uma olhada em `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), e [`sysdig`](https://github.com/draios/sysdig). @@ -414,7 +414,7 @@ Alguns exemplos de como reunir os comandos. - `id`: Informações sobre a identidade do user/group. -- `sar`: histórico dos estados do sistema. +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): histórico dos estados do sistema. - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ou [`nethogs`](https://github.com/raboof/nethogs): Utilização da rede por sockets ou processos. diff --git a/README-ru.md b/README-ru.md index 8cc21a3..1f8721c 100644 --- a/README-ru.md +++ b/README-ru.md @@ -312,7 +312,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (где `xxx` это pid). -- Когда отлаживаете что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. +- Когда отлаживаете что-то, что сломалось в прошлом, используйте [`sar`](http://sebastien.godard.pagesperso-orange.fr/) – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д. - Для анализа более сложных систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig). @@ -497,7 +497,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `id`: информация о пользователе/группе -- `sar`: история системной статистики +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): история системной статистики - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) или [`nethogs`](https://github.com/raboof/nethogs): использование сети конкретным сокетом или процессом diff --git a/README-sl.md b/README-sl.md index f4c2620..824c5e9 100644 --- a/README-sl.md +++ b/README-sl.md @@ -315,7 +315,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Uporabite `/proc`. Včasih je izjemno v pomoč, ko se razhroščuje probleme v živo. Primeri: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, ``/proc/xxx/cwd`,asdf `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (kjer je `xxx` id procesa ali pid). -- Ko se razhroščuje, zakaj je šlo nekaj narobe v preteklosti, je lahko zelo uporaben `sar`. Prikazuje statistiko zgodovine na procesorju, spominu, omrežju itd. +- Ko se razhroščuje, zakaj je šlo nekaj narobe v preteklosti, je lahko zelo uporaben [`sar`](http://sebastien.godard.pagesperso-orange.fr/). Prikazuje statistiko zgodovine na procesorju, spominu, omrežju itd. - Za globlje analize sistema in uspešnosti, poglejte `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)) in [`sysdig`](https://github.com/draios/sysdig). @@ -499,7 +499,7 @@ Nekaj primerov sestavljanja ukazov skupaj: - `id`: informacije identifikacije uporabnika/skupine -- `sar`: statistika zgodovine sistema +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): statistika zgodovine sistema - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) ali [`nethogs`](https://github.com/raboof/nethogs): izkoriščenost omrežja po vtičnici ali procesu diff --git a/README-uk.md b/README-uk.md index 3bb0882..c2adc05 100644 --- a/README-uk.md +++ b/README-uk.md @@ -212,7 +212,7 @@ - `ldd` для перевірки системних бібліотек. - Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. - Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). -- Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. +- Коли дебажите щось, що зламалося в минулому, використовуйте [`sar`](http://sebastien.godard.pagesperso-orange.fr/) буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д. - Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)) і [`sysdig`](https://github.com/draios/sysdig). - Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` (інформація про ядро) або `lsb_release -a` (інформація про дистрибутив Linux). - Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом, драйверами, тощо). @@ -323,7 +323,7 @@ - `last`: історія входів у систему - `w`: хто є залогіненим - `id`: інформація про користувача/групу -- `sar`: historic system stats +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): historic system stats - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) або [`nethogs`](https://github.com/raboof/nethogs): використання мережі конкретним сокетом або процесом - `ss`: статистика сокетів - `dmesg`: помилки завантаження і помилки системи diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 82b79c1..e9b4679 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -277,7 +277,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 學會使用 `/proc`。它在偵錯正在出現的問題的時候有時會效果驚人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/` ,`/proc/xxx/smaps`(這裡的`xxx` 表示程序的 id 或 pid)。 -- 當偵錯一些之前出現的問題的時候,`sar` 非常有用。它展示了 cpu、記憶體以及網路等的歷史資料。 +- 當偵錯一些之前出現的問題的時候,[`sar`](http://sebastien.godard.pagesperso-orange.fr/) 非常有用。它展示了 cpu、記憶體以及網路等的歷史資料。 - 關於更深層次的系統分析以及效能分析,看看`stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org /wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 @@ -454,7 +454,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `id`:使用者/組 ID 資訊 -- `sar`:系統歷史資料 +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/):系統歷史資料 - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或[`nethogs`](https://github.com/raboof/nethogs):套接字及程序的網路利用 diff --git a/README-zh.md b/README-zh.md index 057b8c7..bfbfce8 100644 --- a/README-zh.md +++ b/README-zh.md @@ -313,7 +313,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - 学会使用 `/proc`。它在调试正在出现的问题的时候有时会效果惊人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/`,`/proc/xxx/smaps`(这里的 `xxx` 表示进程的 id 或 pid)。 -- 当调试一些之前出现的问题的时候,`sar` 非常有用。它展示了 cpu、内存以及网络等的历史数据。 +- 当调试一些之前出现的问题的时候,[`sar`](http://sebastien.godard.pagesperso-orange.fr/) 非常有用。它展示了 cpu、内存以及网络等的历史数据。 - 关于更深层次的系统分析以及性能分析,看看 `stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。 @@ -498,7 +498,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - `id`:用户/组 ID 信息 -- `sar`:系统历史数据 +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/):系统历史数据 - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) 或 [`nethogs`](https://github.com/raboof/nethogs):套接字及进程的网络利用 diff --git a/README.md b/README.md index 6194d04..288e11d 100644 --- a/README.md +++ b/README.md @@ -317,7 +317,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Use `/proc`. It's amazingly helpful sometimes when debugging live problems. Examples: `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (where `xxx` is the process id or pid). -- When debugging why something went wrong in the past, `sar` can be very helpful. It shows historic statistics on CPU, memory, network, etc. +- When debugging why something went wrong in the past, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) can be very helpful. It shows historic statistics on CPU, memory, network, etc. - For deeper systems and performance analyses, look at `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), and [`sysdig`](https://github.com/draios/sysdig). @@ -502,7 +502,7 @@ A few examples of piecing together commands: - `id`: user/group identity info -- `sar`: historic system stats +- [`sar`](http://sebastien.godard.pagesperso-orange.fr/): historic system stats - [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs): network utilization by socket or process From 94e7e0d1bcdecb951cdd700e663bb57296134ee7 Mon Sep 17 00:00:00 2001 From: Not Mark Date: Fri, 26 Aug 2016 09:50:24 -0500 Subject: [PATCH 334/337] Remove substitution trick for now --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index c79c848..4cdde00 100644 --- a/README.md +++ b/README.md @@ -101,12 +101,6 @@ Notes: cat hosts | xargs -I{} ssh root@{} hostname ``` -- To rerun the previous command with some pattern replaced: `^old^new`. For example: -```bash - echo foo - ^foo^bar # equivalent to: echo bar -``` - - `pstree -p` is a helpful display of the process tree. - Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). From d60f04de09b9bc65f839c5821df4c0a4285b7cf9 Mon Sep 17 00:00:00 2001 From: Not Mark Date: Fri, 26 Aug 2016 09:55:38 -0500 Subject: [PATCH 335/337] Clarification of `su` according to @neil-greenwood's suggestion in #450 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4cdde00..c7af707 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Notes: - For running a command as another user, use `sudo`. Defaults to running as root; use `-u` to specify another user. Use `-i` to login as that user (you will be asked for _your_ password). -- For switching to another user, use `su`. Add `-` to get an environment as if the user just logged in. By default this switches to root, but you can specify a user: `su - user`. You will be asked for the password _of the user you are switching to_. +- For switching the shell to another user, use `su username` or `su - username`. Include the `-` to get an environment as if the user just logged in. Omitting the username defaults to root. You will be asked for the password _of the user you are switching to_. - Know about the [128K limit](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) on command lines. This "Argument list too long" error is common when wildcard matching large numbers of files. (When this happens alternatives like `find` and `xargs` may help.) From 62b98a5c9bc15fde9ef8905314f34ff77c6a5de8 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Fri, 26 Aug 2016 09:09:33 -0700 Subject: [PATCH 336/337] Rework formatting on one item. --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6afaf39..85d7db6 100644 --- a/README.md +++ b/README.md @@ -147,13 +147,12 @@ Notes: diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- When writing scripts you may want to put all of your code in curly braces: -```sh +- When writing scripts you may want to put all of your code in curly braces. If the closing brace is missing, your script will be prevented from executing due to a syntax error. This makes sense when your script is going to be downloaded from the web, since it prevents partially downloaded scripts from executing: +```bash { # Your code here } ``` -If the closing brace is missing, your script will be prevented from executing due to a syntax error. This makes sense when your script is going to be downloaded from the web, since it prevents partially downloaded scripts from executing. - Know about "here documents" in Bash, as in `cat < Date: Wed, 31 Aug 2016 07:03:48 +0900 Subject: [PATCH 337/337] ko: Updates translation - Corrects punctuation errors - Updates translation to 62b98a5 --- README-ko.md | 323 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 221 insertions(+), 102 deletions(-) diff --git a/README-ko.md b/README-ko.md index c556527..6566944 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,10 +1,14 @@ 🌍 *[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.md) ∙ [日本語](README-ja.md) ∙ [한국어](README-ko.md) ∙ [Português](README-pt.md) ∙ [Русский](README-ru.md) ∙ [Slovenščina](README-sl.md) ∙ [Українська](README-uk.md) ∙ [简体中文](README-zh.md) ∙ [繁體中文](README-zh-Hant.md)* + # The Art of Command Line +[![Ask a Question](https://img.shields.io/badge/%3f-Ask%20a%20Question-ff69b4.svg)](https://airtable.com/shrzMhx00YiIVAWJg) + [![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) - [Basics](#basics) - [Everyday use](#everyday-use) @@ -13,75 +17,85 @@ - [One-liners](#one-liners) - [Obscure but useful](#obscure-but-useful) - [OS X only](#os-x-only) +- [Windows only](#windows-only) - [More resources](#more-resources) - [Disclaimer](#disclaimer) ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -커맨드라인을 능숙하게 다루는것은 도외시되거나 신비스럽게 여겨집니다. 하지만 커맨드라인은 명백하고도 미묘한 방법으로 엔지니어가 하는 작업의 유연성과 생산성을 향상시킵니다. 이 문서는 리눅스에서 작업을 하면서 찾은 노트와 팁들의 모음입니다. 몇 가지는 기초적이고, 몇가지는 상당히 구체적이며, 세련되고, 잘 알려지지 않은 것입니다. 이 문서는 그리 길지 않지만, 여기 있는 모든것을 사용할 수 있게 되고, 기억해낼 수 있게 된다면, 많은 것을 알게되는 것입니다. +커맨드 라인을 능숙하게 다루는 것은 도외시되거나 신비스럽게 여겨집니다. 하지만 커맨드 라인은 명백하고도 미묘한 방법으로 엔지니어가 하는 작업의 유연성과 생산성을 향상시킵니다. 이 문서는 리눅스에서 작업을 하면서 찾은 노트와 팁들의 모음입니다. 몇 가지는 기초적이고, 몇 가지는 상당히 구체적이며, 세련되고, 잘 알려지지 않은 것입니다. 이 문서는 그리 길지 않지만, 여기 있는 모든 것을 사용할 수 있게 되고, 기억해낼 수 있게 된다면, 많은 것을 알게 되는 것입니다. -여기있는 대부분의 것은 +이 문서는 [많은 작가와 번역가](AUTHORS.md)가 참여했습니다. +여기 중 일부 것은 [원래](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [Quora에](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) [올라온](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know) 것입니다. -하지만 거기에 관심을 가지기보다, Github를 이용하는 것이 더 가치있는 것처럼 보입니다. 여기엔 더 재능있는 사람들이 손쉽게 개선안을 제안할 수 있는 곳이죠. 만약 문제가 있거나, 더 나아질 수 있는 내용이 보인다면, 이슈를 제출하거나 풀 리퀘스트를 보내주세요! (물론 meta 섹션과 이미 존재하는 풀 리퀘스트와 이슈를 봐주기를 바랍니다.) +하지만 거기에 관심을 가지기보다, Github를 이용하는 것이 더 가치 있는 것처럼 보입니다. 여기엔 더 재능 있는 사람들이 손쉽게 개선안을 제안할 수 있는 곳이죠. +맨드 란이에 관한 질문이 있으면 [**질문해 주세요**.](https://airtable.com/shrzMhx00YiIVAWJg) 오류가 있거나, 더 나아질 수 있는 내용이 보인다면, [**기여 해 주세요**!](/CONTRIBUTING.md) ## Meta 범위: -- 이 가이드는 초보자와 경험자 모두를 위한 것입니다. 목표는 범위(전부 다 중요합니다!), 구체성(대부분의 일반적인 케이스에 대한 구체적인 예제), 그리고 간결함(쉽게 마주치지 않는, 중요하지 않고, 지엽적인 것을 피함) 입니다. 모든 팁은 특정 상황에서 매우 중요하거나, 여러 대안들 사이에서의 시간을 확연하게 절약합니다. -- 이 문서는 리눅스를 위한것입니다. "[OS X only](#os-x-only)"세션을 제외하고 말이죠. 일부는 MacOS에서 똑같이 적용되지 않습니다(Cygwin에서 조차 말이죠). +- 이 가이드는 초보자와 경험자 모두를 위한 것 입니다. 목표는 범위(전부 다 중요합니다!), 구체성(대부분의 일반적인 케이스에 대한 구체적인 예제), 그리고 간결함(쉽게 마주치지 않는, 중요하지 않고, 지엽적인 것을 피함)입니다. 모든 팁은 특정 상황에서 매우 중요하거나, 여러 대안들 사이에서의 시간을 확연하게 절약합니다. +- 이 문서는 리눅스를 위한것입니다. "[OS X only](#os-x-only)", "[Windows only](#windows-only)" 섹션을 제외하고 말이죠. 그 밖의 대부분은 유닉스, OS X(심지어 Cygwin)에서도 적용하거나 설치할 수 있습니다. - 인터랙티브 Bash에 초점이 맞추어져있습니다만, 대부분의 팁은 다른 쉘이나, general Bash 스크립트에서도 동작합니다. -- 이 문서는 "스탠다드" 유닉스 커맨드와 특정 패키지 설치를 필요로 하는 것 둘 다 포함하고 있습니다. 여기서 다루는 스탠다드 커맨드와 특정 패키지에 대한 것은 포함될만큼 충분히 중요합니다. +- 이 문서는 "표준" 유닉스 커맨드와 특정 패키지 설치를 필요로 하는 것 둘 다 포함하고 있습니다. 여기서 다루는 표준 커맨드와 특정 패키지에 대한 것은 포함될 만큼 충분히 중요합니다. 노트: -- 이 문서를 한 파일로 유지하기 위해서, 컨텐츠들은 암시적인 레퍼런스 형태로 포함되어있습니다. 한 개념이나 명령어에 대해 알게 된 후에, 다른곳에서 그에대한 좀 더 자세한 정보를 찾을 수 있을만큼 당신은 똑똑할것입니다. `apt-get`, `yum`, `dnf`, `pacman`, `pip`, `brew` (혹은 적절한 다른 것)을 이용해 새 프로그램을 설치하세요. -- [Explainshell](http://explainshell.com/)을 이용해서 각각의 커맨드, 옵션, 파이프나 그 외 등등이 어떤것인지 알아보십시오. +- 이 문서를 한 파일로 유지하기 위해서, 콘텐츠들은 암시적인 레퍼런스 형태로 포함되어있습니다. 한 개념이나 명령어에 대해 알게 된 후에, 구글에서 그에 대한 좀 더 자세한 정보를 찾을 수 있을 만큼 당신은 똑똑할 것입니다. `apt-get`, `yum`, `dnf`, `pacman`, `pip`, `brew` (혹은 적절한 다른 것)을 이용해 새 프로그램을 설치하세요. +- [Explainshell](http://explainshell.com/)을 이용해서 각각의 커맨드, 옵션, 파이프나 그 외 등등이 어떤 것인지 알아보십시오. ## Basics -- 기본 Bash를 배우세요. 말하자면, 최소한 `man bash`를 실행하고, 전부를 훑어 보세요. 매뉴얼의 내용은 따라가기 쉬우며 그리 길지 않습니다. 다른 쉘들 또한 좋습니다만, Bash는 강력하고 언제나 사용가능합니다( *오직* zsh, fish, 그 외의 쉘만을 당신의 노트북에서 시도하면서 배우는 경우에는, 많은 경우 제한이 생길것입니다. 이미 존재하는 서버를 사용하는 것등의 일에서 말이죠). +- 기본 Bash를 배우세요. 말하자면, 최소한 `man bash`를 실행하고, 전부를 훑어보세요. 매뉴얼의 내용은 따라가기 쉬우며 그리 길지 않습니다. 다른 쉘들 또한 좋습니다만, Bash는 강력하고 언제나 사용 가능합니다(zsh, fish, 그 외의 쉘*만*을 배우는 것은, 노트북에서는 좋겠지만, 많은 경우 제한이 생길 것입니다. 이미 존재하는 서버를 사용하는 것등의 일에서 말이죠). -- 텍스트 기반 에디터를 최소한 하나정도 다룰 수 있게 배우세요. Vim(`Vi`)가 이상적입니다. 터미널에서 온갖 작업을 하는데 다른 실질적인 경쟁자가 없기 때문이죠(Emacs, 대형 IDE 또는 모던 힙스터스러운 에디터를 대부분의 작업에 사용한다고 해도 말이죠). +- 텍스트 기반 에디터를 최소한 하나 정도 다룰 수 있게 배우세요. Vim(`Vi`)가 이상적입니다. 터미널에서 온갖 작업을 하는데 다른 실질적인 경쟁자가 없기 때문이죠(Emacs, 대형 IDE 또는 모던 힙스터스러운 에디터를 대부분의 작업에 사용한다고 해도 말이죠). -- `man`을 이용해서 문서를 읽는 법을 배우세요(호기심 많은 사람을 위해서 하는 얘기입니다만, `man man`은 섹션 번호들의 목록을 표시합니다. 예를 들어 1은 "regular" 커맨드, 5는 files/conventions, 그리고 8은 administration이죠). `apropos`를 히용해서 man 페이지를 찾으세요. 몇몇 커맨드는 실행가능한 커맨드가 아니라는 것을 알아두세요. 하지만 Bash 빌트인 함수들은 `help`와 `help -d`를 이용해서 도움말을 볼 수 있습니다. +- `man`을 이용해서 문서를 읽는 법을 배우세요(호기심 많은 사람을 위해서 하는 얘기입니다만, `man man`은 섹션 번호들의 목록을 표시합니다. 예를 들어 1은 "regular" 커맨드, 5는 files/conventions, 그리고 8은 administration이죠). `apropos`를 이용해서 man 페이지를 찾으세요. 몇몇 커맨드는 실행 가능한 커맨드가 아니라는 것을 알아두세요. 하지만 Bash 빌트인 함수들은 `help`와 `help -d`를 이용해서 도움말을 볼 수 있습니다. -- `>`와 `<`, `|`를 이용한 파이프를 사용해서 입력과 출력의 리다이렉션을 배우세요. `>`는 출력 파일을 덮어 씌우고, `>>`는 덧붙이는걸 알아두세요. stdout(역주: 표준 출력)과 stderr(역주: 표준 에러 출력)에 대해서 배우세요. +- `>`와 `<`, `|`를 이용한 파이프를 사용해서 입력과 출력의 리다이렉션을 배우세요. `>`는 출력 파일을 덮어 씌우고, `>>`는 덧붙이는 걸 알아두세요. stdout(역주: 표준 출력)과 stderr(역주: 표준 에러 출력)에 대해서 배우세요. -- `*`(그리고 아마도 `?`과 `{`...`}`)을 이용하는 파일 글롭(glob) 확장을 배우세요. 그리고 쌍따옴표`"`와 홑따옴표`'`의 차이를 배우세요. (변수 확장에 대해서 더 보려면 아래를 참조하세요) +- `*`(그리고 아마도 `?`과 `[`...`]`)을 이용하는 파일 글롭(glob) 확장을 배우세요. 그리고 쌍따옴표`"`와 홑따옴표`'`의 차이를 배우세요. (변수 확장에 대해서 더 보려면 아래를 참조하세요) - Bash 작업 관리에 익숙해지세요. `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill` 등등. - `ssh`를 배우고, `ssh-agent`, `ssh-add`를 통해서 비밀번호 없는 인증 방식의 기본을 배우세요. -- 기본 파일 관리: `ls`와 `ls -l`(특별히, `ls -l`에서 각각의 열이 무슨 의미인지 배우세요), `less`, `head`, `tail` 그리고 `tail -f`(또는 더 좋은 `less +F`), `ln`과 `ln -s`(하드 링크와 소프트 링크의 차이와 각각의 장단점을 배우세요), `chown`, `chmod`, `du`( 디스크 사용량의 빠른 요약을 보려면 `du -hs *`). 파일 시스템 관리를 위해서는 `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- 기본 파일 관리: `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`. -- 정규표현식(regular expression)을 잘 알아두세요. 그리고 `grep`/`egrep`의 다양한 플래그도 알아두세요. `-i`, `-o`, `-v`,`-A`, `-B`와 `-C` 옵션은 알아둘 가치가 있습니다. +- `git` 같은 버전 관리 시스템을 배우고 사용하세요. -- `apt-get`, `yum`, `dnf` 또는 `pacman`을 이용하여 패키지를 찾고 설치하는 법을 배우세요. 그리고 `pip`가 설치되어있는지 확인해서, 파이선 기반의 커맨드 라인 도구를 설치할 수 있도록 하세요(밑에 설명된 것중 몇가지는 `pip`를 이용해 설치하는게 제일 쉽습니다. +- 정규 표현식(regular expression)을 잘 알아두세요. 그리고 `grep`/`egrep`의 다양한 플래그도 알아두세요. `-i`, `-o`, `-v`,`-A`, `-B`와 `-C` 옵션은 알아둘 가치가 있습니다. + +- `apt-get`, `yum`, `dnf` 또는 `pacman`(배포판마다 다릅니다)을 이용하여 패키지를 찾고 설치하는 법을 배우세요. 그리고 `pip`가 설치되어 있는지 확인해서, 파이선 기반의 커맨드 라인 도구를 설치할 수 있도록 하세요(밑에 설명된 것 중 몇 가지는 `pip`를 이용해 설치하는 게 제일 쉽습니다. ## Everyday use -- Bash 에서 **Tab**을 쓰면 argument를 완성하고, **ctrl-r**을 쓰면 커맨드 히스토리에서 검색합니다. +- Bash 에서 **Tab**을 쓰면 argument를 완성하고, **ctrl-r**을 쓰면 커맨드 히스토리에서 검색합니다(누른 다음, 검색할 것을 입력하고, **ctrl-r**를 계속 눌러 좀 더 맞는 것을 찾을 수 있습니다. **Enter**를 눌러 찾은 커맨드를 실행하고 오른쪽 화살표 키를 눌러 결과를 현재 라인에 복사해 수정할 수 있습니다). - Bash에서 **ctrl-w**는 마지막 단어를 지웁니다. **ctrl-u**는 라인의 처음까지 전부다 지웁니다. **alt-b**와 **alt-f**를 이용해서 단어 단위로 이동할 수 있습니다. **ctrl-a**로 라인의 시작점으로 이동할 수 있고 **ctrl-e**로 라인의 끝으로 이동할 수 있습니다. **ctrl-k**는 커서 위치부터 라인의 끝까지 지웁니다. **ctrl-l**은 화면을 깨끗하게 합니다. `man readline`을 이용해서 Bash의 기본 키 조합을 살펴보세요. 많은 것이 있습니다. 예를 들면 **alt-.**같은 경우, 이건 argument를 돌아가면서 나타내고 **alt-***는 글롭을 확장합니다. -- vi 스타일의 키 조합을 사랑한다면, `set -o vi`를 사용할수도 있습니다. -- 최근 사용한 커맨드를 보려면 `history`를 입력하세요. `!$`(마지막 argument), `!!`(마지막 커맨드)와 같은 약어들이 매우 많습니다. 비록 이런 것들이 **ctrl-r**이나 **alt-.**명령어로 자주 대체되기 쉽지만요. +- vi 스타일의 키 조합을 사랑한다면, `set -o vi`를 사용할 수도 있습니다(`set -o emacs`로 되돌릴 수 있습니다). -- 이전에 작업하던 디렉토리로 돌아가려면 `cd -`를 사용하세요. +- 긴 명령을 수정하려면 에디터를 설정한 다음(예를 들면, `export EDITOR=vim`) **ctrl-x** **ctrl-e**를 눌러 현재 명령을 에디터에서 열어 여러줄 편집을 할 수 있습니다. vi 스타일에서는 **escape-v**를 사용합니다. -- 커맨드를 타이핑 하던 도중에 마음이 바뀌었다면, **alt-#**을 쳐서 시작점에 `#`을 삽입하고, 엔터를 쳐서 코멘트로 여겨지게 하세요(또는 **ctrl-a**, **#**, **enter**). 나중에 커맨드 히스토리에서 찾아서 타이핑 중이었던 커맨드로 돌아올 수 있습니다. +- 최근 사용한 커맨드를 보려면 `history`를 입력하세요. 그 후 `!n`으로(여기서 `n`은 커맨드 번호를 뜻합니다) 다시 실행할 수 있습니다. `!$`(마지막 argument), `!!`(마지막 커맨드)와 같은 약어들이 매우 많습니다. 비록 이런 것들이 **ctrl-r**이나 **alt-.**명령어로 자주 대체되기 쉽지만요. -- `xargs`(혹은 `parallel`)를 사용하세요. 매우 강력합니다. 라인당 몇개의 아이템이 실행되게 할 것인지(`-L`) 그걸 병렬로 할 것인지(`-P`)를 제어할 수 있다는걸 기억하세요. 제대로 하고있는지 확신할 수 없다면 `xargs echo`를 먼저 실행해보세요. 또 `-I{}`도 간편합니다. 예시: +- `cd`로 홈 디렉터리로 갈 수 있습니다. 홈 디렉터리에서 상대적으로 파일을 접근하려면 `~` 접두사를 사용합니다(예: `~/.bashrc`). `sh` 스크립트에서는 `$HOME`로 홈 디렉터리를 참조합니다. + +- 이전에 작업하던 디렉터리로 돌아가려면 `cd -`를 사용하세요. + +- 커맨드를 타이핑하던 도중에 마음이 바뀌었다면, **alt-#**을 쳐서 시작점에 `#`을 삽입하고, 엔터를 쳐서 코멘트로 여겨지게 하세요(또는 **ctrl-a**, **#**, **enter**). 나중에 커맨드 히스토리에서 찾아서 타이핑 중이었던 커맨드로 돌아올 수 있습니다. + +- `xargs`(혹은 `parallel`)를 사용하세요. 매우 강력합니다. 라인당 몇 개의 아이템이 실행되게 할 것인지(`-L`) 그걸 병렬로 할 것인지(`-P`)를 제어할 수 있다는 걸 기억하세요. 제대로 하고 있는지 확신할 수 없다면 `xargs echo`를 먼저 실행해보세요. 또 `-I{}`도 편리합니다. 예시: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -91,46 +105,66 @@ - `pgrep`과 `pkill`을 사용해서 프로세스를 찾거나 시그널을 보내세요(`-f`가 유용합니다). -- 프로세스에 보낼 수 있는 다양한 시그널을 알아두세요. 예를 들어, 프로세스를 일시중지 할 때는 `kill -STOP [pid]`를 사용합니다. 전체 목록은 `man 7 signal`에서 볼 수 있습니다. +- 프로세스에 보낼 수 있는 다양한 시그널을 알아두세요. 예를 들어, 프로세스를 일시 중지 할 때는 `kill -STOP [pid]`를 사용합니다. 전체 목록은 `man 7 signal`에서 볼 수 있습니다. - 백그라운드 프로세스를 영원히 돌아가게 만들고 싶다면, `nohup`이나 `disown`을 사용하세요. -- 어떤 프로세스가 리스닝(역주: 특정 포트로 들어오는 패킷 리스닝)을 하고 있는지 알려면 `netstat -lntp`나 `ss -plat`을 사용해서 알 수 있습니다(TCP일 경우입니다. UDP의 경우 `-u`옵션을 추가하세요). +- 어떤 프로세스가 리스닝(역주: 특정 포트로 들어오는 패킷 리스닝)을 하고 있는지 알려면 `netstat -lntp`나 `ss -plat`을 사용해서 알 수 있습니다(TCP 일 경우입니다. UDP의 경우 `-u`옵션을 추가하세요). - `lsof`를 이용해서 열려있는 소켓과 파일을 볼 수 있습니다. -- Bash 스크립트에서 `set -x`를 사용하면 디버깅용 출력을 사용하게 됩니다. 스트릭트 모드(strict mode)가 가능할때면 사용하세요. `set -e`를 사용하면 에러가 났을때 중단시키게됩니다. `set -o pipefail`을 사용하면 에러에 대해서 강경한 기준을 적용합니다(이 주제가 조금 미묘하지만 말이죠). 더 복잡한 스크립트의 경우 `trap`또한 사용합니다. +- `uptime`이나 `w`를 이용해서 시스템이 얼마나 오래 실행 중인지 알 수 있습니다. -- `uptime`이나 `w`를 이용해서 시스템이 얼마나 오래 실행중인지 알 수 있습니다. +- 자주 사용되는 커맨드에 대해서 `alias`를 이용해서 숏컷을 만드세요. 예를들어, `alias ll='ls -latr'`은 새 단축 명령 `ll`을 만듭니다. -- 자주 사용되는 커맨드에 대해서 `alias`를 이용해서 숏컷을 만드세요. 예를들어, `alias ll='las -latr'`은 새 단축명령 `ll`을 만듭니다. +- 자주 사용하는 단축, 설정, 함수는 `~/.bashrc`에 저장하고, [그것을 참조하는 로그인 셸을 고쳐보세요](http://superuser.com/a/183980/7106). 이렇게 하면 설정을 모든 셸 세션에서 사용할 수 있습니다. -- Bash 스크립트에서 (괄호로 둘러쌓여 작성된) 서브쉘은 커맨드를 그룹으로 묶는 편리한 방법입니다. 일반적인 예로, 임시로 다른 디렉토리로 이동하여 작업하는 것이 있습니다. +- 환경 변수 설정이나 로그인할 때 실행해야 할 명령은 `~/.bash_profile`에 넣으세요. 그래픽 환경의 로그인의 셸과 `cron` 잡의 셸을 분리하기 위해 설정을 분리할 필요가 있습니다. + +- Git으로 여러 컴퓨터에서 같은 설정 파일을 사용하세요(예 `.bashrc`, `.bash_profile`). + +- 공백이 들어간 변수명이나 파일명은 주의할 필요가 있습니다. Bash 변수를 따옴표로 감싸세요(예: `"$FOO"`). 파일 이름의 경계에 공백 문자를 허용하려면 `-0`이나 `-print0` 옵션을 사용하세요. 예를 들면, `locate -0 pattern | xargs -0 ls -al`, `find / -print0 -type d | xargs -0 ls -al`. for 문에서 공백문자가 포함된 파일 이름을 반복하려면, `IFS=$'\n'`로 IFS를 개행 문자만으로 설정하시면 됩니다. + +- Bash 스크립트에서 `set -x`를 사용하면 디버깅용 출력을 사용하게 됩니다(아니면 다른 옵션 `set -v`가 있습니다. 확장되지 않은 변수와 주석을 포함한 로우 입력을 로깅합니다). 스트릭트 모드(strict mode)가 가능할 때면 사용하세요. `set -e`를 사용하면 에러가 났을 때 중단시키게 됩니다. `set -u`을 사용하면 설정되지 않은 변수를 찾아 줍니다. `set -o pipefail`을 사용하면 에러에 대해서 강경한 기준을 적용합니다(이 주제가 조금 미묘하지만 말이죠). 더 복잡한 스크립트의 경우 EXIT나 ERR에 `trap`도 사용합니다. 이렇게 스크립트를 시작하는 습관은 유용합니다. 이렇게 하면, 일반적인 에러를 찾고 중단하고, 메시지를 출력해 줍니다. +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` + +- Bash 스크립트에서 (괄호로 둘러싸여 작성된) 서브 셸은 커맨드를 그룹으로 묶는 편리한 방법입니다. 일반적인 예로, 임시로 다른 디렉터리로 이동하여 작업하는 것이 있습니다. ```bash # do something in current dir (cd /some/other/dir && other-command) # continue in original dir ``` -- Bash 에는 여러가지 다양한 변수 확장이 있다는 것을 알아두세요. 변수가 존재하는지 확인하려면 `${name:?error message}`를 사용하세요. 예를 들어 Bash 스크립트가 하나의 argument를 요구한다면, `input_file=${1:?usage: $0 input_file}`를 사용하세요. 산술 확장은 `i=$(( (i + 1) % 5 ))` 처럼 사용합니다. 순열은 `{1...10}`처럼 사용합니다. 문자열 트리밍(trimmin)은 `${var%suffix}`이나 `${var#prefix}`처럼 사용할 수 있습니다. 예를들어 `var=foo.pdf`라면, `echo ${var$.pdf}.txt`는 `foo.txt`를 출력합니다. +- Bash 에는 다양한 변수 확장이 있다는 것을 알아두세요. 변수가 존재하는지 확인하려면 `${name:?error message}`를 사용하세요. 예를 들어 Bash 스크립트가 하나의 argument를 요구한다면, `input_file=${1:?usage: $0 input_file}`를 사용하세요. 변수가 비어있을 때를 대비해 기본 값을 사용하세요. `${name:-default}` 이전 예제에 선택적인 파라미터를 추가하길 원한다면 `output_file=${2:-logfile}`로 할 수 있습니다. $2가 생략되어 비어있다면, `output_file`은 `logfile`로 설정됩니다. 산술 확장은 `i=$(( (i + 1) % 5 ))` 처럼 사용합니다. 순열은 `{1...10}`처럼 사용합니다. 문자열 트리밍(trimmin)은 `${var%suffix}`이나 `${var#prefix}`처럼 사용할 수 있습니다. 예를 들어 `var=foo.pdf`라면, `echo ${var$.pdf}.txt`는 `foo.txt`를 출력합니다. -- 커맨드의 실행 결과 출력물은 `<(some command)`처럼 이용해서 파일처럼 다뤄질 수 있습니다. 예를들어 로컬의 `/etc/hosts`를 리모트의 것과 비교하려면 다음처럼 하면 됩니다. -```sh +- `{`...`}`를 사용한 괄호 확장은 비슷한 텍스트의 재입력을 줄이고, 아이템의 조합을 자동화할 수 있습니다. `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`를 리모트의 것과 비교하려면 다음처럼 하면 됩니다. +```bash diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` +- 스크립트를 적을 때 모든 코드를 대괄호 안에 넣을 수 있습니다. 닫는 괄호가 없으면 스크립트는 구문 에러가 되어 실행이 방지됩니다. 이는 스크립트가 웹으로부터 다운로드할 예정이라 할 때 도중까지만 다운로드된 파일이 실행 되는 걸 예방해 줍니다. +```sh +{ + # 여기에 코드를 넣으세요 +} +``` + - `cat << EOF...`같은 "here documents"에 대해서 알아두세요. -- Bash에서 표준 출력(standard output)과 표준 에러(standard error) 둘 다 `some-command > logfile 2>&1`같은 명령어로 리다이렉트할 수 있습니다. 종종, 커맨드가 열린 파일 핸들을 남기지 않는 것을 확실히 하기 위해, 현재 작업중인 터미널에서 명령어에 ` logfile 2>&1`같은 명령어로 리다이렉트할 수 있습니다. 종종, 커맨드가 열린 파일 핸들을 남기지 않는 것을 확실히 하기 위해, 현재 작업 중인 터미널에서 명령어에 `>> 2+3 +5 +``` ## Processing files and data -- 현재 디렉토리에서 파일을 이름으로 찾으려면 `find . -iname '*something*'` (또는 비슷하게)를 사용하면 됩니다. 어느곳에 있든 파일을 이름으로 찾으려면 `locate something`을 사용하세요(하지만 인내를 가져야합니다. `updatedb`가 최근에 생성된 파일을 인덱싱하지 않았을 수 있습니다). +- 현재 디렉터리에서 파일을 이름으로 찾으려면 `find . -iname '*something*'` (또는 비슷하게)를 사용하면 됩니다. 어느 곳에 있든 파일을 이름으로 찾으려면 `locate something`을 사용하세요(하지만 인내를 가져야 합니다. `updatedb`가 최근에 생성된 파일을 인덱싱하지 않았을 수 있습니다). -- 소스나 데이터 파일들에서 일반적인 검색을 할때는(`grep -r`보다 더 복잡할때), [`ag`](https://github.com/ggreer/the_silver_searcher)를 사용하세요. +- 소스나 데이터 파일들에서 일반적인 검색을 할 때는(`grep -r`보다 더 복잡할 때), [`ag`](https://github.com/ggreer/the_silver_searcher)를 사용하세요. -- HTML을 텍스트로 변환할때는 `lynx -dump -stdin`를 사용하세요. +- HTML을 텍스트로 변환할 때는 `lynx -dump -stdin`를 사용하세요. - 마크다운, HTML, 그리고 모든 종류의 문서 변환에는 [`pandoc`](http://pandoc.org/)을 시도해보세요. @@ -172,9 +218,11 @@ - JSON에는 [`jq`](http://stedolan.github.io/jq/)를 사용하세요. -- Excel이나 CSV파일에는 [csvkit](https://github.com/onyxfish/csvkit)가 `in2csv`, `csvcut`, `csvjoin`, `csvgrep`외 다른 도구들을 제공합니다.. +- YAML에는 [`shyaml`](https://github.com/0k/shyaml)를 사용하세요. -- Amazon S3를 다룰때는 [`s3cmd`](https://github.com/s3tools/s3cmd)가 편리합니다. 그리고 [`s4cmd`](https://github.com/bloomreach/s4cmd)는 빠릅니다. Amazon의 [`aws`](https://github.com/aws/aws-cli)는 다른 AWS 관련 작업에 핵심적인 도구입니다. +- Excel이나 CSV파일에는 [csvkit](https://github.com/onyxfish/csvkit)가 `in2csv`, `csvcut`, `csvjoin`, `csvgrep`외 다른 도구들을 제공합니다. + +- Amazon S3를 다룰 때는 [`s3cmd`](https://github.com/s3tools/s3cmd)가 편리합니다. 그리고 [`s4cmd`](https://github.com/bloomreach/s4cmd)는 빠릅니다. Amazon의 [`aws`](https://github.com/aws/aws-cli)는 다른 AWS 관련 작업에 핵심적인 도구입니다. - `sort`와 `uniq`에 대해서 알아두세요. uniq의 `-u`, `-d`옵션을 포함해서 말이죠. 하단의 one-liner를 보세요. 그리고 `comm`도 보세요. @@ -182,102 +230,128 @@ - `wc`를 이용해서 행(`-l`), 캐릭터(`-m`), 단어(`-w`) 그리고 바이트(`-c`)를 세는 것을 알아두세요. -- `tee`를 이용해서 `ls -al | tee file.txt`처럼, 표준입력(stdin)에서 복사해서 파일로 보내거나, 표준 출력(stdout)으로 보내는 것을 알아두세요. +- `tee`를 이용해서 `ls -al | tee file.txt`처럼, 표준 입력(stdin)에서 복사해서 파일로 보내거나, 표준 출력(stdout)으로 보내는 것을 알아두세요. -- 로케일이 커맨드라인 도구에 정렬 순서(collation)와 퍼포먼스를 포함해서 미묘하게 영향을 끼치는 것을 알아두세요. 대부분의 리눅스 설치는 `LANG`이나 다른 로케일 변수를 US English와 같은 로컬 세팅으로 설정합니다. 하지만 로케일을 바꿀 경우 정렬도 바뀔 것이라는 것에 주의하세요. 그리고 i18n 루틴들도 정렬이나 다른 커맨드들을 *몇 배* 느리게 할 수 있습니다. `export LC_ALL=C`를 사용하여, 어떤 상황에서는( 밑에 있는 집합(set) 작업이나, 유일성 작업등) i18n의 느린 루틴들을 통채로 안전하게 무시할 수 있습니다. 그리고 전통적인 바이트 기반의 정렬 순서를 사용할 수 있습니다. +- 그룹, 필드 뒤집기, 통계적인 계산 같은 좀 더 복잡한 계산은 [`datamash`](https://www.gnu.org/software/datamash/)를 고려해보세요. -- 간단한 데이터 조작을 할때 `awk`와 `sed`를 이용하는 것을 알아두세요. 예를 들어 텍스트 파일의 세번째 열의 숫자들의 모든 값을 더하는 것은 이렇게 합니다: `awk '{ x += $3 } END { print x }'`. 이 방법은 같은 일을 하는 파이썬 코드보다 3배정도 빠르고, 1/3정도의 길이밖에 안됩니다. +- 로케일이 커맨드 라인 도구에 정렬 순서(collation)와 퍼포먼스를 포함해서 미묘하게 영향을 끼치는 것을 알아두세요. 대부분의 리눅스 설치는 `LANG`이나 다른 로케일 변수를 US English와 같은 로컬 세팅으로 설정합니다. 하지만 로케일을 바꿀 경우 정렬도 바뀔 것이라는 것에 주의하세요. 그리고 i18n 루틴들도 정렬이나 다른 커맨드들을 *몇 배* 느리게 할 수 있습니다. `export LC_ALL=C`를 사용하여, 어떤 상황에서는( 밑에 있는 집합(set) 작업이나, 유일성 작업등) i18n의 느린 루틴들을 통째로 안전하게 무시할 수 있습니다. 그리고 전통적인 바이트 기반의 정렬 순서를 사용할 수 있습니다. -- 하나 이상의 파일에서 추가적인 파일을 생성하지 않고 문자열 바꾸려면 다음과 같이 하세요. +- `TZ=Pacific/Fiji date`처럼 특정 명령의 환경 변수를 실행 앞에 붙여 설정할 수 있습니다. + +- 간단한 데이터 조작을 할 때 `awk`와 `sed`를 이용하는 것을 알아두세요. 예를 들어 텍스트 파일의 세 번째 열의 숫자들의 모든 값을 더하는 것은 이렇게 합니다: `awk '{ x += $3 } END { print x }'`. 이 방법은 같은 일을 하는 파이썬 코드보다 3배 정도 빠르고, 1/3 정도의 길이밖에 안됩니다. + +- 여러 파일 안의 문자열을 바꾸려면 다음과 같이 하세요. ```sh perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- 한번에 많은 파일을 패턴에 따라서 이름 바꾸기를 하려면, `rename`을 사용하세요. 보다 복잡한 이름 바꾸기는, [`repren`](https://github.com/jlevy/repren)이 도움이 될것입니다. +- 여러 파일의 이름을 바꾸거나 검색하거나 문자열을 바꿀 때에는 [`repren`](https://github.com/jlevy/repren)를 써보세요. (어떤 경우에는 `rename` 명령을 사용해서 여러 파일의 이름을 바꿀 수도 있습니다. 하지만, 모든 리눅스 배포판에서 같은 동작을 하지 않는 것에 주의하세요.) ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak - # Full rename of filenames, directories, and contents foo -> bar: + # 파일 이름, 디렉터, 컨텐츠 모두 foo에서 bar로 변경 repren --full --preserve-case --from foo --to bar . + # 백업 파일을 whatever.bak에서 whatever로 복원 + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # 가능하다면 rename으로 위와 같은 일을 할 수 있음 + rename 's/\.bak$//' *.bak ``` -`shuf`를 사용해서 파일안의 임의의 행을 선택하거나, 섞을 수 있습니다. +- man 페이지가 이야기하듯, `rsync`는 정말 빠르고 다재다능한 파일 복사 도구입니다. 기기 간의 동기화에 사용하는 것으로 알려져 있지만, 로컬에서도 충분히 유용합니다. 보안 규정이 허용한다면, `scp` 대신 `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 +``` -- `sort`의 옵션들을 알아두세요. `-n`은 숫자를 정렬할 때, `-h`는 사람이 읽을 수 있게 작성한 숫자의 경우(`du -h`와 같은 형태). 키가 어떻게 작동하는지 알아두세요(`-t`와 `-k`). 특별히, 첫번째 필드로만 정렬해야 한다면 `-k1,1`을 적어야 한다는걸 주의하세요. `-k1`은 모든 행에 대해서 정렬하라는 뜻입니다. 안정적인 정렬(`sort -s`)도 유용합니다. 예를들어, 먼저 2번 필드로 정렬하고, 그 다음에 1번 필드로 정렬할 경우, `sort -k1,1 | sort -s -k2,2`처럼 할 수 있습니다. +- `shuf`를 사용해서 파일 안의 임의의 행을 선택하거나, 섞을 수 있습니다. + +- `sort`의 옵션을 알아두세요. `-n`은 숫자를 정렬할 때, `-h`는 사람이 읽을 수 있게 작성한 숫자의 경우(`du -h`와 같은 형태). 키가 어떻게 작동하는지 알아두세요(`-t`와 `-k`). 특별히, 첫 번째 필드로만 정렬해야 한다면 `-k1,1`을 적어야 한다는 걸 주의하세요. `-k1`은 모든 행에 대해서 정렬하라는 뜻입니다. 안정적인 정렬(`sort -s`)도 유용합니다. 예를 들어, 먼저 2번 필드로 정렬하고, 그다음에 1번 필드로 정렬할 경우, `sort -k1,1 | sort -s -k2,2`처럼 할 수 있습니다. - 만약 탭(tab)문자를 Bash 커맨드 라인에 사용해야 할 필요가 생길 경우(예를 들면 -t argument를 이용해 정렬 할 때), **ctrl-v** **[Tab]**키를 누르거나, `$'\t'`를 쓰세요(문자쪽이 복사나 붙여넣기를 할 수 있어 더 낫습니다.). -- 소스코드를 패치하는 기본 도구는 `diff`와 `patch`입니다. diff의 통계 요약을 보려면 `diffstat`를 보세요. `diff -r`은 모든 디렉토리에 대해 작업을 수행하는걸 알아두세요. `diff -r tree1 tree2 | diffstat`으로 변경 내역의 요약을 볼 수 있습니다. +- 소스 코드를 패치하는 기본 도구는 `diff`와 `patch`입니다. diff와 `sdiff`(새로 diff)의 통계 요약을 보려면 `diffstat`를 보세요. `diff -r`은 모든 디렉터리에 대해 작업을 수행하는 걸 알아두세요. `diff -r tree1 tree2 | diffstat`으로 변경 내역의 요약을 볼 수 있습니다. -- 바이너리 파일을 간단하게 hex 덤프를 뜨고 싶을 때는 `hd`를 쓰세요. 바이너리 파일을 수정할때는 `bvi`를 사용하세요. +- 바이너리 파일을 간단하게 hex 덤프를 뜨고 싶을 때는 `hd`, `hexdump`, `xxd`를 쓰세요. 바이너리 파일을 수정할 때는 `bvi`, `biew`를 사용하세요. -- `strings` (그리고 `grep`, 등) 을 사용해서 바이너리 파일 안에서 문자열 비트를 찾을 수 있습니다. +- `strings` (그리고 `grep`, 등) 을 사용해서 바이너리 파일 안에서 문자열 비트를 찾을 수 있습니다. - 바이너리 파일을 diff하려면(델타 압축), `xdelta3`를 사용하세요. -- 텍스트 파일 인코딩을 변경하려면 `iconv`를 시도해보세요. 또는 `uconv`는 더 복잡한 목적에 사용할 수 있습니다. `uconv`는 몇가지 복잡한 유니코드를 지원합니다. 예를들어, 소문자화하고 모든 악센트를 제거하는(확장하고, 떨어트리는 것을 이용해서) 커맨드는 다음과 같습니다. +- 텍스트 파일 인코딩을 변경하려면 `iconv`를 시도해보세요. 또는 `uconv`는 더 복잡한 목적에 사용할 수 있습니다. `uconv`는 몇 가지 복잡한 유니코드를 지원합니다. 예를 들어, 소문자화하고 모든 악센트를 제거하는(확장하고, 떨어트리는 것을 이용해서) 커맨드는 다음과 같습니다. ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` - 파일을 여러 조각으로 나누려면 `split`(파일을 사이즈로 나눔)이나 `csplit`(파일을 패턴으로 나눔)을 보세요. -- `zless`, `zmore`, `zcat` 그리고`zgrep`을 이용해서 압축된 파일에 대해 작업하세요. +- 날짜 시간 표현식을 제어하려면 [`dateutils`](http://www.fresse.org/dateutils/)의 `dateadd`, `datediff`, `strptime`등을 사용하세요. +- `zless`, `zmore`, `zcat` 그리고`zgrep`을 이용해서 압축된 파일에 대해 작업하세요. + +- 파일 속성은 `chattr`로 설정할 수 있습니다. 이는 파일 권한에 대한 저레벨 대안입니다. 예를 들어 `sudo chattr +i /critical/directory/or/file`로 불변 플래그를 붙여 실수로 파일을 지우는 것을 방지할 수 있습니다. + +- `getfacl`, `setfacl`를 사용해 파일 권한을 저장하고 복원할 수 있습니다. 예를 들어, +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## System debugging -- 웹 디버깅을 위해서는 `curl` 와 `curl -I` 가 도움이 되고, `wget`도 꽤 도움이 됩니다. 그외에 보다 현대적인 방식으로는 [`httpie`](https://github.com/jakubroztocil/httpie)이 있습니다. +- 웹 디버깅을 위해서는 `curl` 와 `curl -I` 가 도움이 되고, `wget`도 꽤 도움이 됩니다. 그 외에 보다 현대적인 방식으로는 [`httpie`](https://github.com/jakubroztocil/httpie)이 있습니다. -- 디스크/cpu/네트워크의 상태를 알기 위해서는 각각 `iostat`, `netstat`, `top` (혹은 더 나은 명령어인 `htop`), 그리고 특히 `dstat`을 사용하세요. 시스템에 어떠한일이 일어났는지를 빠르게 알아내는데 매우 좋습니다. +- 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 kernel에 의해 file cache로 잡혀있는 메모리 라는 것을 알고 있어야 하고 그래서 "free"값에 대해서 보다 효율적으로 계산할 수 있습니다. -- Java 시스템의 디버깅은 조금 다른상황입니다. 하지만 Oracle과 그 외의 회사에서 만든 다른 JVM들에서는 `kill -3 `를 실행하면 전체 stack trace정보와 heap의 정보(시기별로 가비지 콜렉터의 세부적인 내용같은 매우 유용한 정보)를 요약하여 stderr나 로그로 출력해주므로 간단하게 정보를 얻어올 수 있습니다. JDK의 `jps`, `jstat`, `jstack`, `jmap` 명령은 유용합니다. [SJK tools](https://github.com/aragozin/jvm-tools)은 더 고급 정보를 다룰 수 있습니다. +- Java 시스템의 디버깅은 조금 다른 상황입니다. 하지만 Oracle과 그 외의 회사에서 만든 다른 JVM들에서는 `kill -3 `를 실행하면 전체 stack trace 정보와 heap의 정보(시기별로 가비지 컬렉터의 세부적인 내용 같은 매우 유용한 정보)를 요약하여 stderr나 로그로 출력해주므로 간단하게 정보를 얻어올 수 있습니다. JDK의 `jps`, `jstat`, `jstack`, `jmap` 명령은 유용합니다. [SJK tools](https://github.com/aragozin/jvm-tools)은 더 고급 정보를 다룰 수 있습니다. -- 네트워크 이슈들을 알아보기 위해서는 traceroute를 사용할수도 있지만 이보다 더 좋은 [`mtr`](http://www.bitwizard.nl/mtr/)를 사용하세요. +- 네트워크 이슈들을 알아보기 위해서는 traceroute를 사용할 수도 있지만 더 좋은 [`mtr`](http://www.bitwizard.nl/mtr/)를 사용하세요. -- 디스크가 왜 가득찼는지 알아보기 위해서 [`ncdu`](https://dev.yorhel.nl/ncdu)를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커멘드를 사용하는 것보다는 시간을 줄일 수 있습니다. +- 디스크가 왜 가득 찼는지 알아보기 위해서 [`ncdu`](https://dev.yorhel.nl/ncdu)를 사용해보세요. 일반적으로 사용하는 `du -sh *`와 같은 커맨드를 사용하는 것보다는 시간을 줄일 수 있습니다. - 어떠한 소켓이나 프로세스가 사용하는 대역폭(bandwidth)를 찾아보려면 [`iftop`](http://www.ex-parrot.com/~pdw/iftop/)나 [`nethogs`](https://github.com/raboof/nethogs)를 사용하세요. -- `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할때는 `siege`를 사용해보세요. +- `ab`라는 툴(Apache에 딸려있는)은 신속하고 간단하게(quick-and-dirty) 웹서버의 성능을 체크하는데 유용합니다. 보다 복잡한 부하 테스트를 할 때는 `siege`를 사용해보세요. -- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html) 또는 [`ngrep`](http://ngrep.sourceforge.net/)를 사용하세요. +- 보다 심각한 경우의 네트워크 디버깅을 위해서는 [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), [`ngrep`](http://ngrep.sourceforge.net/)를 사용하세요. -- `strace` 와 `ltrace`에 대해서 알아보세요. 이 커맨드들은 만일 어떤 프로그램에서 failing, hanging 혹은 crashing이 일어나거나 그 외에 여러분이 무슨이유인지 알지 못하는 상황이나 성능에 대한 대략적인 내용을 얻고자 할때 유용할 것입니다. 특히 프로파일링을 위한 옵션(`-c`)과 현재 실행중인 프로세스에 붙이기 위한 옵션(`-p`)을 기억하세요. +- `strace` 와 `ltrace`에 대해서 알아보세요. 이 커맨드들은 만일 어떤 프로그램에서 failing, hanging 혹은 crashing이 일어나거나 그 외에 여러분이 무슨 이유인지 알지 못하는 상황이나 성능에 대한 대략적인 내용을 얻고자 할 때 유용할 것입니다. 특히 프로파일링을 위한 옵션(`-c`)과 현재 실행 중인 프로세스에 붙이기 위한 옵션(`-p`)을 기억하세요. - 공유 라이브러리(shared libraries) 등을 체크하기 위해서는 `ldd`에 대해 알아보세요. -- `gdb`를 가지고 현재 실행중인 프로세스에 연결하고 그 프로세스의 stack trace들을 얻는 방법을 알아보세요. +- `gdb`를 가지고 현재 실행 중인 프로세스에 연결하고 그 프로세스의 stack trace들을 얻는 방법을 알아보세요. -- `/proc`를 사용하세요. 이것은 현재 발생하고 있는 문제를 디버깅할때 종종 놀랍도록 큰 도움이 될것입니다. 예시:`/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (`xxx`는 프로세스 id나 pid입니다). +- `/proc`를 사용하세요. 이것은 현재 발생하고 있는 문제를 디버깅할 때 종종 놀랍도록 큰 도움이 될 것입니다. 예시:`/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (`xxx`는 프로세스 id나 pid입니다). -- 과거에 왜 무엇인가가 잘못되었는지를 디버깅할때에는 [`sar`](http://sebastien.godard.pagesperso-orange.fr/)가 매우 유용할 것입니다. 이 커맨드는 CPU, memory, network 등의 통계 내역을 보여줍니다. +- 과거에 왜 무엇인가가 잘못되었는지를 디버깅할 때에는 [`sar`](http://sebastien.godard.pagesperso-orange.fr/)가 매우 유용할 것입니다. 이 커맨드는 CPU, memory, network 등의 통계 내역을 보여줍니다. -- 시스템의 보다 깊은곳을 보거나 퍼포먼스를 분석하기 위해서는, `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)),나 [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), 그리고 [`sysdig`](https://github.com/draios/sysdig)를 사용해보세요. +- 시스템의 보다 깊은 곳을 보거나 퍼포먼스를 분석하기 위해서는, `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), [`sysdig`](https://github.com/draios/sysdig)를 사용해보세요. - 여러분이 사용하는 Linux의 배포판이 무엇인지 확인(대부분의 배포판에서 작동합니다)하려면 `uname`이나 `uname -a` 또는 `lsb_release -a`를 사용하세요. -- 언제든지 무언가가 정말로 재미있는 반응을 보인다면 `dmesg`를 사용해보세요 (아마도 하드웨어나 드라이버의 문제일 것입니다). +- 언제든지 무언가가 정말로 재미있는 반응을 보인다면 `dmesg`를 사용해보세요(아마도 하드웨어나 드라이버의 문제일 것입니다). + +- 파일을 삭제했는데 `du`로 확인해 예상한 디스크 공간을 확보하지 못했다면, 파일이 프로세스에 의해 사용 중인지 확인해보세요. +`lsof | grep deleted | grep "filename-of-my-big-file"` ## One-liners 커맨드들을 한데 묶어서 사용하는 예제들 -- `sort`/`uniq`를 사용하여 텍스트 파일의 교차점, 조합, 차이점을 확인이 필요할때 상당한 도움이 될겁니다. 가령 `a`와 `b`가 유일한 값들만을 가진 텍스트 파일이라합시다. 이것이 임의의 크기인 파일을(그게 기가바이트라고 해도) 빠르게 작업할 수 있습니다. (Sort는 메모리 제한에 걸리지 않습니다만, 만약 루트 파티션이 작은 경우, `/tmp`를 사용하기위해 `-T`옵션을 사용하면됩니다.) 위의 `LC_ALL`에대한 내용은 `sort`의 `-u`옵션을 확인하십시오. (아래 예제에 집중하기 위해서 생략) +- `sort`/`uniq`를 사용하여 텍스트 파일의 교차점, 조합, 차이점을 확인이 필요할 때 상당한 도움이 될 겁니다. 가령 `a`와 `b`가 유일한 값들만을 가진 텍스트 파일이라 합시다. 이것이 임의의 크기인 파일을(그게 기가바이트라고 해도) 빠르게 작업할 수 있습니다. (Sort는 메모리 제한에 걸리지 않습니다만, 만약 루트 파티션이 작은 경우, `/tmp`를 사용하기 위해 `-T`옵션을 사용하면 됩니다.) 위의 `LC_ALL`에대한 내용은 `sort`의 `-u`옵션을 확인하십시오. (아래 예제에 집중하기 위해서 생략) ```sh cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b cat a b b | sort | uniq -u > c # c is set difference a - b ``` -- `grep . *`을 사용해서 디렉토리 안의 모든 파일을 비주얼하게 살펴 볼 수 있습니다. 예를들어 `/sys`, `/proc`, `/etc` 같이 설정 값들로 가득한 디렉토리에 말이죠. +- `grep . *`을 사용해서 디렉터리 안의 모든 파일을 비주얼하게 살펴볼 수 있습니다.(r각 줄은 파일 이름과 같이 나옵니다) 아니면 `head -100 *`를 이용할 수도 있습니다.(각 파일의 해더만 볼 수 있습니다.) 이는 `/sys`, `/proc`, `/etc` 같이 설정값들로 가득한 디렉터리에서 유용합니다. -- 텍스트 파일의 세번째 열의 숫자들의 모든 값을 더하는 것은 이렇게 합니다. 이 방법은 같은 일을 하는 파이썬 코드보다 3배정도 빠르고, 1/3정도의 길이밖에 안됩니다. + +- 텍스트 파일의 세 번째 열의 숫자들의 모든 값을 더하는 것은 이렇게 합니다. 이 방법은 같은 일을 하는 파이썬 코드보다 3배 정도 빠르고, 1/3 정도의 길이밖에 안됩니다. ```sh awk '{ x += $3 } END { print x }' myfile ``` @@ -287,11 +361,13 @@ find . -type f -ls ``` -- 웹서버 로그같은 텍스트 파일이 있다고 합시다. 그리고 URL 파라메터에 나타나는 `acct_id`같은 특정 값이 몇몇 행에 나타난다고 해보죠. 각각의 `acct_id`에 대해 얼마나 많은 요청이 있었는지 알고 싶다면 다음처럼 할 수 있습니다. +- 웹서버 로그 같은 텍스트 파일이 있다고 합시다. 그리고 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'`로 한 디렉터리 내의 파일 변경을 확인하거나, `watch -d -n 2 ifconfig`로 와이파이 설정을 고칠 때 네트워크 설정 변경을 확인할 수 있습니다. + - 다음 함수를 실행하면 이 문서에 있는 팁 중 임의의 것을 얻을 수 있습니다(마크다운을 파싱하고 항목을 추출합니다). ```sh function taocl() { @@ -304,8 +380,6 @@ ``` - - ## Obscure but useful - `expr`: 산술적이거나 논리적인 작업을 수행하거나 정규표현식을 검증할때 사용합니다 @@ -322,7 +396,7 @@ - `look`: 어떤 문자열로 시작하는 영단어(혹은 파일의 어떤 한 줄)을 찾습니다 -- `cut `, `paste` 그리고 `join`: 데이터를 수정할때 사용합니다 +- `cut `, `paste`, `join`: 데이터를 수정할때 사용합니다 - `fmt`: 문단의 서식을 지정합니다 @@ -332,7 +406,7 @@ - `column`: 문서의 컬럼이나 테이블의 서식을 지정합니다 -- `expand` and `unexpand`: 탭을 공백으로 바꾸어주거나 공백을 탭으로 바꾸어줍니다 +- `expand`, `unexpand`: 탭을 공백으로 바꾸어주거나 공백을 탭으로 바꾸어줍니다 - `nl`: 줄 번호를 추가해줍니다 @@ -346,9 +420,9 @@ - `toe`: terminfo 엔트리들의 테이블(table of terminfo entries) -- `nc`: 네트워크를 디버깅하거나 데이터를 전송할때 사용합니다 +- `nc`: 네트워크를 디버깅하거나 데이터를 전송할 때 사용합니다 -- `socat`: 소켓 릴레이나 TCP 포트로 내용을 전달할때 사용합니다(`netcat`과 비슷합니다) +- `socat`: 소켓 릴레이나 TCP 포트로 내용을 전달할 때 사용합니다(`netcat`과 비슷합니다) - [`slurm`](https://github.com/mattthias/slurm): 네트워크 상황을 시각화하여 보여줍니다 @@ -356,11 +430,19 @@ - `file`: 파일의 종류를 알아내는데 사용합니다 -- `tree`: 디렉토리들과 그 하위 디렉토리를 마치 ls를 반복적으로 입력한 것처럼 트리의 형태로 보여줍니다 +- `tree`: 디렉터리들과 그 하위 디렉터리를 마치 ls를 반복적으로 입력한 것처럼 트리의 형태로 보여줍니다 - `stat`: 파일의 정보를 보여줍니다 -- `time`: execute and time a command +- `time`: 명령을 실행하고 시간을 잽니다 + +- `timeout`: 특정 시간만큼 명령을 실행하고 시간이 끝나면 프로세스를 종료합니다. + +- `lockfile`: `rm -f`로만 지울 수 있는 세마포어 파일을 생성합니다 + +- `logrotate`: 로그를 로테이트, 압축, 메일로 보냅니다 + +- `watch`: 명령을 반복적으로 실행해 결과를 보여주거나 변경을 하일라이트합니다 - `tac`: 파일의 내용을 역순으로 출력합니다 @@ -384,7 +466,9 @@ - `units`: 단위를 변환하거나 계산하는데 사용합니다 예를들어 furlongs/fortnight 단위를 twips/blink로 변환합니다 (`/usr/share/units/definitions.units`를 참고하세요) -- `7z`: 고효율의 파일 압축프로그램입니다 +- `apg`: 렌덤 패스워드를 생성합니다 + +- `xz`: 고효율의 파일 압축프로그램입니다 - `ldd`: 동적 라이브러리들의 정보를 보여줍니다 @@ -400,11 +484,11 @@ - `rsync`: SSH를 이용해 원격 파일 시스템이나, 로컬 파일시스템의 파일과 폴더들을 동기화 할때 사용합니다 -- [`wireshark`](https://wireshark.org/) and [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 +- [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): 패킷정보를 가져오며 네트워킹을 디버깅하는데 사용합니다 - [`ngrep`](http://ngrep.sourceforge.net/): 네트워크 환경에서 grep과 같은 역할을 합니다 -- `host` and `dig`: DNS 정보를 보여줍니다 +- `host`, `dig`: DNS 정보를 보여줍니다 - `lsof`: 프로세스 파일 디스크립터와 소켓의 정보를 보여줍니다 @@ -428,47 +512,82 @@ - [`sar`](http://sebastien.godard.pagesperso-orange.fr/): 시스템 상태에 대한 정보를 보여줍니다 -- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) or [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 +- [`iftop`](http://www.ex-parrot.com/~pdw/iftop/), [`nethogs`](https://github.com/raboof/nethogs): 소켓 또는 프로세스를 이용하여 네트워크를 정보를 보여줍니다 - `ss`: 소켓에 관한 통계자료들을 보여줍니다 - `dmesg`: 부팅 메시지와 시스템 에러 메시지들을 보여줍니다 -- `hdparm`: SATA/ATA disk들의 정보를 수정하거나 그것들이 작동하도록 합니다. +- `sysctl`: 실행 시에 리눅스 커널 파라미터를 보여주거나 설정합니다 + +- `hdparm`: SATA/ATA disk들의 정보를 수정하거나 그것들이 작동하도록 합니다 - `lsblk`: 블록 디바이스들의 목록을 보여줍니다 : 여러분의 디스크들이나 디스크파티션들을 트리의 형태로 보여줍니다 - `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: CPU, BIOS, RAID, graphics, devices 등의 하드웨어 정보를 보여줍니다 -- `lsmod`와 `modifno`: 커널 모듈의 상세정보를 목록으로 보여줍니다. +- `lsmod`, `modifno`: 커널 모듈의 상세정보를 목록으로 보여줍니다. -- `fortune`, `ddate`, 그리고 `sl`: 에... 증기기관차를 생각하고있고 그것을 인용하고 싶다면 이것은 "유용"합니다 +- `fortune`, `ddate`, `sl`: 에... 증기기관차를 생각하고있고 그것을 인용하고 싶다면 이것은 "유용"합니다 ## OS X only -*MacOS에서만* 해당되는 항목입니다. +*OS X에서만* 해당되는 항목입니다. -- `brew` (Homebrew)나 `port` (MacPorts)를 패키지 메니저로 사용합니다. 보다 많은 명령어를 MacOS에 설치하여 사용할 수 있습니다. +- `brew` (Homebrew)나 `port` (MacPorts)를 패키지 매니저로 사용합니다. 위의 많은 명령어를 OS X에 설치하여 사용할 수 있습니다. -- `pbcopy`를 이용하여 데스크탑 어플리케이션에 명령어 출력물을 복사하거나 `pbpaste`를 이용해 붙여넣기를 할 수 있습니다. +- `pbcopy`를 이용하여 데스크톱 애플리케이션에 명령어 출력물을 복사하거나 `pbpaste`를 이용해 붙여넣기를 할 수 있습니다. -- 데스크탑 어플리케이션에서 파일을 열기위해, `open` 또는 `open -a /Applications/Whatever.app`을 사용하면 됩니다. +- OS X 터미널에서 옵션 키를 알트 키(**alt-b**, **alt-f** 같은 위에 나온 명령)로 사용하려면 Preferences -> Profiles -> Keyboard를 열어 "Use Option as Meta key"를 선택하세요. + +- 데스크톱 애플리케이션에서 파일을 열기위해, `open` 또는 `open -a /Applications/Whatever.app`을 사용하면 됩니다. - Spotlight: `mdfind`를 이용해 파일을 찾고, `mdls`를 이용해 메타데이타 (사진 EXIF 정보와 같은) 목록을 볼 수 있습니다. -- MacOS는 BSD Unix 기반이며 많은 명령어들을 (예로 `ps`, `ls`, `tail`, `awk`, `sed`) 사용할 수 있으며, 이것들은 Linux 버전들과 미묘한 차이가 있습니다. 그리고 크게는 System V-style Unix와 GNU 도구들에 많은 영향을 받았습니다. 이런 내용들을 man 페이지 상단의 "BSD General Commands Manual." 라는 문구를 통해 알 수 있습니다. 가끔은 GNU 버전이 설치되기도합니다. (예로, GNU awk와 sed인 `gawk`와 `gsed`에서). 만약 이종 플랫폼간 Bash 스크립트를 작성하려면, 동일한 명령어 (예로, 파이썬이나 `perl`과 같은)나 테스트시 주의해야합니다. +- OS X는 BSD Unix 기반이며 많은 명령어들을 (예로 `ps`, `ls`, `tail`, `awk`, `sed`) 사용할 수 있으며, 이것들은 Linux 버전들과 미묘한 차이가 있습니다. 그리고 크게는 System V-style Unix와 GNU 도구들에 많은 영향을 받았습니다. 이런 내용들을 man 페이지 상단의 "BSD General Commands Manual." 라는 문구를 통해 알 수 있습니다. 가끔은 GNU 버전이 설치되기도 합니다. (예로, GNU awk와 sed인 `gawk`와 `gsed`에서). 만약 이종 플랫폼 간 Bash 스크립트를 작성하려면, 동일한 명령어 (예로, 파이썬이나 `perl`과 같은)나 테스트시 주의해야 합니다. +- OS X 릴리스 정보를 얻으시려면, `sw_vers`를 사용하세요. + +## Windows only + +Windows*에서만* 해당되는 항목입니다. + +- Windows 10에서는 [Bash on Ubuntu on Windows](https://msdn.microsoft.com/commandline/wsl/about)를 사용할 수 있습니다. 이는 유닉스 커맨드 라인 도구와 함께 친숙한 Bash 환경을 제공합니다. 좋은 점은, 리눅스 프로그램을 Windows에서 사용할 수있게 합니다. 하지만 Bash에서 Windows 프로그램을 사용할 수는 없습니다. + +- [Cygwin](https://cygwin.com/)를 설치해 Microsoft Windows에서 유닉스 셸을 사용할 수 있습니다. 이 문서에 기술된 대부분의 것들은 그대로 동작할 것입니다. + +- Cygwin의 패키지 매니저로 유닉스 프로그램을 더 설치할 수 있습니다. + +- 커맨드 라인 창으로 `mintty`를 사용하세요. + +- Windows의 클립보드를 `/dev/clipboard`로 접근할 수 있습니다. + +- `cygstart`을 실행해 등록된 애플리케이션을 사용해 임의의 파일을 열 수 있습니다. + +- Windows 레지스트리는 `regtool`로 접근할 수 있습니다. + +- `C:\\` Windows 드라이브 경로는 Cygwin에서는 `/cygdrive/c`가 되고, Cygwin의 `/` Windows에서 `C:\cygwin`가 되는것을 알아 두세요. Cygwin과 Windows 스타일의 파일 패스는 `cygpath`로 변환할 수 있습니다. 이는 Windows 프로그램을 실행하는 프로그램에서 유용하게 사용됩니다. + +- You can perform and script most Windows system administration tasks from the command line by learning and using `wmic`. + +- Windows에서 유닉스 룩엔필을 얻는 다른 대안은 [Cash](https://github.com/dthree/cash)입니다. 이 환경에는 매우 적은 유닉스 명령과 커맨드 라인 옵션만 사용가능하니 주의하세요. + +- Windows에서 GNU 개발자 툴(GCC같은)을 얻는 다른 대안으로 [MinGW](http://www.mingw.org/)와 거기에 포함된 [MSYS](http://www.mingw.org/wiki/msys) 패키지가 있습니다. 여기에는 bash, gawk, make, grep같은 도구가 포함됩니다. MSYS는 Cygwin에 비교하면 모든 기능은 없습니다. MinGW는 유닉스 툴을 네이티브 Windows로 포팅할 때 부분적으로 유용합니다. ## More resources -- [awesome-shell](https://github.com/alebcay/awesome-shell): 쉘에 대한 툴과 리소스들이 잘 정리되어 있는 리스트입니다. -- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/): 보다 나은 쉘스크립트를 작성하기 위한 정보글입니다. +- [awesome-shell](https://github.com/alebcay/awesome-shell): 셸에 대한 툴과 리소스들이 잘 정리되어 있는 리스트입니다. +- [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): OS X 커맨드 라인에 관해 더 깊이 알수 있는 가이드 입니다. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/): 보다 나은 셸 스크립트를 작성하기 위한 정보글입니다. +- [shellcheck](https://github.com/koalaman/shellcheck): 셸 스크립트 정적 분석 도구 입니다. 특히, bash/sh/zsh에 대한 린트입니다. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): 셸 스크립트에서 파일 이름을 처리하는 법을 다루는 슬프도록 복잡한 미니츄어입니다. +- [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): 같은 이름의 책에서 나온, 데이터 사이언스를 위한 더 나은 명령과 도구들 입니다. ## Disclaimer -매우 작은 작업을 제외한 코드들은 다른 사람이 읽을 수 있도록 작성됩니다. 그러니 이 내용은 작성자 전원에게 책임이 있습니다. Bash에서 뭔가를 *할 수 있다는* 것이 당신이 뭔가를 해야된다는 것을 강요하는 것이 아니다! ;) +매우 작은 작업을 제외한 코드들은 다른 사람이 읽을 수 있도록 작성됩니다. 큰 힘에는 책임이 따릅니다. Bash에서 뭔가를 *할 수 있다는* 것은 Bash로 해야 된다는 의미가 아닙니다! ;) ## License