From 918ddd71c95365a28dfed54dcb66afc68f6104bb Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Fri, 26 Jun 2015 16:58:12 -0300 Subject: [PATCH 01/24] Translate 10% of the text to portugues. #130 --- README-pt.md | 453 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 README-pt.md diff --git a/README-pt.md b/README-pt.md new file mode 100644 index 0000000..a79605a --- /dev/null +++ b/README-pt.md @@ -0,0 +1,453 @@ +[ Languages: [中文](README-zh.md) ] + +# The Art of Command Line + +- [Meta](#meta) +- [Basics](#basics) +- [Everyday use](#everyday-use) +- [Processing files and data](#processing-files-and-data) +- [System debugging](#system-debugging) +- [One-liners](#one-liners) +- [Obscure but useful](#obscure-but-useful) +- [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) + +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilizada usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você sabe bastante coisas. + +Mais sobre isso +[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) +em [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (É claro por favor revise as meta sections e PRs/issues existentes primeiro.) + +## Meta + +Escopo: + +- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *breadth* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais or digressões que vou pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. +- Este guia é escrito para o Linux. Muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). +- O foco está na interatividade no Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. +- Este inclui tanto comandos Unix "padrão", como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. + +Notas: + +- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou siga para o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. +- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre comandos, opções, pipes e etc. faz. + + +## Básico + +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). + +- Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). + +- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim builins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. + +- Aprenda a respeito do redirecionamento da saída e entrada usando `>` e `<` e pipes usando `|`. Aprenda sobre o stdout e stdin. + +- Aprenda sobre a expensão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) and quoting and the difference entre aspas duplas `"` e aspas simples `'`. (Veja mais em expansões de variáveis abaixo.) + +- Esteja familiar com o gerenciamento de jobs no Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. + +- Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. + +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), + +- 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 -sk *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. + +- Basic network management: `ip` or `ifconfig`, `dig`. + +- Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-A`, and `-B` 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`). + + +## Everyday use + +- In Bash, use **Tab** to complete arguments 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-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`. + +- 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 -` + +- 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. + +- Use `xargs` (or `parallel`). It's very powerful. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use `xargs echo` first. Also, `-I{}` is handy. Examples: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` is a helpful display of the process tree. + +- Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). + +- Know the various signals you can send processes. For example, to suspend a process, use `kill -STOP [pid]`. For the full list, see `man 7 signal` + +- Use `nohup` or `disown` if you want a background process to keep running forever. + +- Check what processes are listening via `netstat -lntp` or `ss -plat` (for TCP; add `-u` for UDP). + +- See also `lsof` for open sockets and files. + +- 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, 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 + # do something in current dir + (cd /some/other/dir && other-command) + # 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`. + +- 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) +``` + +- 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 ` foo: + rename 's/\.bak$//' *.bak + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . +``` + +- Use `shuf` to shuffle or select random lines from a file. + +- Know `sort`'s options. 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` + +- 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. + +- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. + +- Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. + +- For binary diffs (delta compression), use `xdelta3`. + +- To convert text encodings, try `iconv`. Or `uconv` for more advanced use; it supports some advanced Unicode things. For example, this command lowercases and removes all accents (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 +``` + +- To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). + +- 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). + +- 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. + +- 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. + +- 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. + +- 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. + +- Use `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 *`. + +- To find which socket or process is using bandwidth, try `iftop` or `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`. + +- For more serious network debugging, `wireshark`, `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`). + +- Know about `ldd` to check shared libraries etc. + +- Know how to connect to a running process with `gdb` and get its stack traces. + +- Use `/proc`. It's amazingly helpful sometimes when debugging live problems. Examples: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. + +- 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). + +- Confirm what Linux distribution you're using (works on most distros): `lsb_release -a` + +- Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). + + +## One-liners + +A few examples of piecing together commands: + +- It is remarkably helpful sometimes that you can do set intersection, union, and difference of text files via `sort`/`uniq`. Suppose `a` and `b` are text files that are already uniqued. This is fast, and works on files of arbitrary size, up to many gigabytes. (Sort is not limited by memory, though you may need to use the `-T` option if `/tmp` is on a small root partition.) See also the note about `LC_ALL` above and `sort`'s `-u` option (left out for clarity below). +```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 +``` + +- 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`. + + +- Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python): +```sh + 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`: +```sh + find . -type f -ls +``` + +- Use `xargs` or `parallel` whenever you can. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use xargs echo first. Also, `-I{}` is handy. Examples: +```sh + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- Say you have a text file, like a web server log, and a certain value that appears on some lines, such as an `acct_id` parameter that is present in the URL. If you want a tally of how many requests for each `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Run this function to get a random tip from this document (parses Markdown and extracts an item): +```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 + } +``` + + +## Obscure but useful + +- `expr`: perform arithmetic or boolean operations or evaluate regular expressions + +- `m4`: simple macro processor + +- `yes`: print a string a lot + +- `cal`: nice calendar + +- `env`: run a command (useful in scripts) + +- `printenv`: print out environment variables (useful in debugging and scripts) + +- `look`: find English words (or lines in a file) beginning with a string + +- `cut `and `paste` and `join`: data manipulation + +- `fmt`: format text paragraphs + +- `pr`: format text into pages/columns + +- `fold`: wrap lines of text + +- `column`: format text into columns or tables + +- `expand` and `unexpand`: convert between tabs and spaces + +- `nl`: add line numbers + +- `seq`: print numbers + +- `bc`: calculator + +- `factor`: factor integers + +- `gpg`: encrypt and sign files + +- `toe`: table of terminfo entries + +- `nc`: network debugging and data transfer + +- `socat`: socket relay and tcp port forwarder (similar to `netcat`) + +- `slurm`: network trafic visualization + +- `dd`: moving data between files or devices + +- `file`: identify type of a file + +- `tree`: display directories and subdirectories as a nesting tree; like `ls` but recursive + +- `stat`: file info + +- `tac`: print files in reverse + +- `shuf`: random selection of lines from a file + +- `comm`: compare sorted files line by line + +- `pv`: monitor the progress of data through a pipe + +- `hd` and `bvi`: dump or edit binary files + +- `strings`: extract text from binary files + +- `tr`: character translation or manipulation + +- `iconv` or `uconv`: conversion for text encodings + +- `split `and `csplit`: splitting files + +- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) + +- `7z`: high-ratio file compression + +- `ldd`: dynamic library info + +- `nm`: symbols from object files + +- `ab`: benchmarking web servers + +- `strace`: system call debugging + +- `mtr`: better traceroute for network debugging + +- `cssh`: visual concurrent shell + +- `rsync`: sync files and folders over SSH + +- `wireshark` and `tshark`: packet capture and network debugging + +- `ngrep`: grep for the network layer + +- `host` and `dig`: DNS lookups + +- `lsof`: process file descriptor and socket info + +- `dstat`: useful system stats + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat`: CPU and disk usage stats + +- `htop`: improved version of top + +- `last`: login history + +- `w`: who's logged on + +- `id`: user/group identity info + +- `sar`: historic system stats + +- `iftop` or `nethogs`: network utilization by socket or process + +- `ss`: socket statistics + +- `dmesg`: boot and system error messages + +- `hdparm`: SATA/ATA disk manipulation/performance + +- `lsb_release`: Linux distribution info + +- `lsblk`: List block devices: a tree view of your disks and disk paritions + +- `lshw` and `lspci`: hardware information, including RAID, graphics, etc. + +- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" + + +## More resources + +- [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. + + +## Disclaimer + +With the exception of very small tasks, code is written so others can read it. With power comes responsibility. The fact you *can* do something in Bash doesn't necessarily mean you should! ;) + + +## License + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From 87e5dadc9af58762cb0f384941099200afe65c49 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 09:09:04 -0300 Subject: [PATCH 02/24] Translate 20% of the text. --- README-pt.md | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/README-pt.md b/README-pt.md index a79605a..c7b6905 100644 --- a/README-pt.md +++ b/README-pt.md @@ -54,56 +54,54 @@ Notas: - Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. -- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` and `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versus hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `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 -sk *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Gerenciamento básico da rede: `ip` ou `ifconfig`, `dig`. -- Basic network management: `ip` or `ifconfig`, `dig`. +- Sabia bem expressões regulares, e as várias flags para `grep`/`egrep`. As `-i`, `-o`, `-A`, e `-B` são opções que é importante saber. -- Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-A`, and `-B` 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`). +- Aprenda a usar `apt-get`, `yum`, `dnf` ou `pacman` (dependendo da distribuição) para procurar e instalar pacotes. E garanta que você possui o `pip` para instalar ferramentas baseadas em Python (algumas abaixo são fáceis de instalar através do `pip`). -## Everyday use +## Usu diário -- In Bash, use **Tab** to complete arguments and **ctrl-r** to search through command history. +- No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. -- 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-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. +- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-*** expande um glob. *** -- Alternatively, if you love vi-style key-bindings, use `set -o vi`. +- Como alternativa, se você ama os keybinds ao estilo do vi, use `set -o vi`. -- 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-.**. +- Para ver os comandos recentes, `history`. Existem também muitas abreviações como `!$` (último argumento) e `!!` último comando, embora estes sejam muitas vezes facilmente substituídos por **ctrl-r** e **alt-.**. -- To go back to the previous working directory: `cd -` +- Volte atrás para o diretório de trabalho anterior: `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. +- Se você estar na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Você pode então recuperar o comando mais tarde através do histórico de comandos. -- Use `xargs` (or `parallel`). It's very powerful. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use `xargs echo` first. Also, `-I{}` is handy. Examples: +- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname ``` -- `pstree -p` is a helpful display of the process tree. +- `pstree -p` é um modo de visualização muito útil da árvore de processos. -- Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). +- Use `pgrep` e `pkill` para procurar ou sinalizar os processo pelo seu nome (`-f` é muito útil). -- Know the various signals you can send processes. For example, to suspend a process, use `kill -STOP [pid]`. For the full list, see `man 7 signal` +- Saiba os vários sinais que você pode enviar para um processo. Por exemplo, para suspender um processo, use `kill -STOP [pid]`. Para saber a lista completas dos sinais, veja `man 7 signal`. -- Use `nohup` or `disown` if you want a background process to keep running forever. +- Use `nohup` ou `disown` se você deseja por o processo em background executando para sempre. -- Check what processes are listening via `netstat -lntp` or `ss -plat` (for TCP; add `-u` for UDP). +- Verifique quais processos estão escutando através `netstat -lntp` ou `ss -plat` (para TCP; adicione `-u` para UDP). -- See also `lsof` for open sockets and files. +- Veja também `lsof` para abrir sockets e arquivos. -- 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`. +- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` como também, para ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. -- 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. +- Em Bash scripts, subshells (escrito com parênteses) são formas convenientes de agrupar comandos. Um exemplo comum é temporariamente mover para um diretório de trabalho diferente, e.g. ```bash - # do something in current dir + # faz algo no diretório corrente (cd /some/other/dir && other-command) - # continue in original dir + # continua no diretório atual ``` - 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`. From f14b8edbf76e77639ffa76034a63e6f6bd0c35ee Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 09:45:51 -0300 Subject: [PATCH 03/24] Translate 40% of the text. #130 --- README-pt.md | 138 +++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 70 deletions(-) diff --git a/README-pt.md b/README-pt.md index c7b6905..ba95afb 100644 --- a/README-pt.md +++ b/README-pt.md @@ -15,13 +15,13 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilizada usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você sabe bastante coisas. +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui tem bastante conhecimento. Mais sobre isso -[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) -em [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (É claro por favor revise as meta sections e PRs/issues existentes primeiro.) +[originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta @@ -63,7 +63,7 @@ Notas: - Aprenda a usar `apt-get`, `yum`, `dnf` ou `pacman` (dependendo da distribuição) para procurar e instalar pacotes. E garanta que você possui o `pip` para instalar ferramentas baseadas em Python (algumas abaixo são fáceis de instalar através do `pip`). -## Usu diário +## Uso diário - No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. @@ -328,123 +328,121 @@ A few examples of piecing together commands: - `column`: format text into columns or tables -- `expand` and `unexpand`: convert between tabs and spaces +- `expand` e `unexpand`: converte entre tabs e espaços. -- `nl`: add line numbers +- `nl`: adiciona números as linhas. -- `seq`: print numbers +- `seq`: imprime números. -- `bc`: calculator +- `bc`: calculadora. -- `factor`: factor integers +- `factor`: fatora inteiros. -- `gpg`: encrypt and sign files +- `gpg`: criptografa e assina arquivos. -- `toe`: table of terminfo entries +- `toe`: tabela de entradas dos tipos de terminais. -- `nc`: network debugging and data transfer +- `nc`: ferramenta de debug de rede e transferência de dados. -- `socat`: socket relay and tcp port forwarder (similar to `netcat`) +- `socat`: socket relay e portas encaminhamento de portas tcp (similar ao `netcat`) -- `slurm`: network trafic visualization +- `slurm`: visualização do tráfego da rede. -- `dd`: moving data between files or devices +- `dd`: move os dados entre arquivos ou dispositivos. -- `file`: identify type of a file +- `file`: identifica o tipo do arquivo. -- `tree`: display directories and subdirectories as a nesting tree; like `ls` but recursive +- `tree`: mostra os diretórios e subdiretórios como um árvore de dependências; como `ls` mas recursivo. -- `stat`: file info +- `stat`: informações do arquivo. -- `tac`: print files in reverse +- `tac`: imprime arquivos na ordem reversa. -- `shuf`: random selection of lines from a file +- `shuf`: seleção random de linhas de um arquivo. -- `comm`: compare sorted files line by line +- `comm`: compara uma lista de arquivos ordenadas linha por linha. -- `pv`: monitor the progress of data through a pipe +- `pv`: monitora o progresso dos dados através de um pipe. -- `hd` and `bvi`: dump or edit binary files +- `hd` e `bvi`: dump ou edita arquivos binários. -- `strings`: extract text from binary files +- `strings`: extrai texto de arquivos binários. -- `tr`: character translation or manipulation +- `tr`: tradução manipulação de caracteres. -- `iconv` or `uconv`: conversion for text encodings +- `iconv` ou `uconv`: conversor de codificações de text. -- `split `and `csplit`: splitting files +- `split ` e `csplit`: divisão de arquivos. -- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) +- `units`: conversor de unidades e cálculos; converte furlongs por quinzena para twips per blink (veja também `/usr/share/units/definitions.units`) -- `7z`: high-ratio file compression +- `7z`: Compressor de arquivos de alto desempenho. -- `ldd`: dynamic library info +- `ldd`: informações dinâmicas das bibliotecas. -- `nm`: symbols from object files +- `nm`: símbolos de arquivos objetos. -- `ab`: benchmarking web servers +- `ab`: benchmarking para web servers. -- `strace`: system call debugging +- `strace`: Debug para chamadas de sistema. -- `mtr`: better traceroute for network debugging +- `mtr`: melhor tracerout para debugar a rede. -- `cssh`: visual concurrent shell +- `cssh`: Visualização concorrente do shell. -- `rsync`: sync files and folders over SSH +- `rsync`: Sincroniza arquivos e pastas através do SSH. -- `wireshark` and `tshark`: packet capture and network debugging +- `wireshark` e `tshark`: captura de pacotes e debug de rede. -- `ngrep`: grep for the network layer +- `ngrep`: grep para a camada de rede. -- `host` and `dig`: DNS lookups +- `host` e `dig`: Consultas DNS. -- `lsof`: process file descriptor and socket info +- `lsof`: Arquivo de descritores dos processos e informações dos sockets. -- `dstat`: useful system stats +- `dstat`: Estatísticas úteis do sistema. -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): Resumo em alto nível, de multi subsistemas. -- `iostat`: CPU and disk usage stats +- `iostat`: Estatísticas de uso do CPU e do disco. -- `htop`: improved version of top +- `htop`: Versão do top melhorada. -- `last`: login history +- `last`: histórico de logins. -- `w`: who's logged on +- `w`: quem está logado. -- `id`: user/group identity info +- `id`: Informações sobre a identidade do user/group. -- `sar`: historic system stats +- `sar`: histórico dos estados do sistema. -- `iftop` or `nethogs`: network utilization by socket or process +- `iftop` ou `nethogs`: Utilização da rede por sockets ou processos. -- `ss`: socket statistics +- `ss`: Statísticas dos sockets. -- `dmesg`: boot and system error messages +- `dmesg`: Mensagens de erro do sistema e do boot. -- `hdparm`: SATA/ATA disk manipulation/performance +- `hdparm`: Manipulação/performance de discos SATA/ATA. -- `lsb_release`: Linux distribution info +- `lsb_release`: Informações sobre a distribuição do Linux. -- `lsblk`: List block devices: a tree view of your disks and disk paritions +- `lsblk`: Lista os blocos dos dispositivos: uma visualização é forma de árvore dos seus discos e partições do disco. -- `lshw` and `lspci`: hardware information, including RAID, graphics, etc. +- `lshw` e `lspci`: informações do hardware, incluindo RAID, gráficos, etc. -- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" +- `fortune`, `ddate`, e `sl`: um, bem, isto depende de você considerar locomotivas a vapor e citações Zippy "úteis". + +## Mais conteúdo + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Uma lista refinada de ferramentas do shell e outros recursos. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) para escrever shell scripts melhores. + +## Aviso + +Com a exceção de tarefas muito pequenas, o código é escrito de modo que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) -## More resources - -- [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. - - -## Disclaimer - -With the exception of very small tasks, code is written so others can read it. With power comes responsibility. The fact you *can* do something in Bash doesn't necessarily mean you should! ;) - - -## License +## Licença [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) From 0e95df1ef4dce2b40915fc3d0fd133787f9434f4 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 10:15:13 -0300 Subject: [PATCH 04/24] Translate title and links --- README-pt.md | 19 ++++++++++--------- README.md | 2 ++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/README-pt.md b/README-pt.md index ba95afb..1dbb50c 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,16 +1,17 @@ [ Languages: [中文](README-zh.md) ] +[ Languages: [Portuguese](README-pt.md) ] -# The Art of Command Line +# A arte da linha de comando - [Meta](#meta) -- [Basics](#basics) -- [Everyday use](#everyday-use) -- [Processing files and data](#processing-files-and-data) -- [System debugging](#system-debugging) +- [Básico](#basics) +- [Uso diário](#everyday-use) +- [Processamento de arquivos e dados](#processing-files-and-data) +- [Debugs do sistema](#system-debugging) - [One-liners](#one-liners) -- [Obscure but useful](#obscure-but-useful) -- [More resources](#more-resources) -- [Disclaimer](#disclaimer) +- [Obscuros mas úteis](#obscure-but-useful) +- [Mais conteúdo](#more-resources) +- [Aviso](#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) @@ -21,7 +22,7 @@ Mais sobre isso [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro por favor revise as meta sections e PRs/issues existentes primeiro.) +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta diff --git a/README.md b/README.md index 8d9563f..d546670 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ [ Languages: [中文](README-zh.md) ] +[ Languages: [Portuguese](README-pt.md) ] + # The Art of Command Line From 092a4c0d39bb5a5e9b773019a3f63631f3a4142f Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:08:17 -0300 Subject: [PATCH 05/24] Translate 50% of the text. --- README-pt.md | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/README-pt.md b/README-pt.md index 1dbb50c..8ece63b 100644 --- a/README-pt.md +++ b/README-pt.md @@ -105,22 +105,22 @@ Notas: # continua no diretório atual ``` -- 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`. +- No Bash, note que existem muitos tipos de variáveis de expansão. Verificando a existência de uma variável: `${name:?error_messages}`. Por exemplo, se um script Bash requer um único argumento, apenas escreva `input_file=${1:?usage: $0 input_file}`. Expansões aritméticas: `i=$(( (i + 1) % 5 ))`. Sequências: `{1..10}`. Aparando as strings: `${var%suffix}` e `${var#prefix}`. Por exemplo, se `var=foo.pdf`, então `echo ${var%.pdf}.txt` imprime `foo.txt`. -- The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: +- A saída de um comando pode ser trata como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- 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`. Muitas vezes, para garantir que um comando não deixa um arquivo aberto para manipular a entrada padrão, digitando isso no terminal que você está, é uma boa prática adicionar um ` 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 ``` -- 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 . *` para visualmente examinar todo o conteúdo de todos os arquivos de um diretório, por exemplo, para diretórios com arquivos de configurações, como `/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): +- Somar todos os números em uma terceira coluna de um arquivo de texto (isto é provavelmente 3X mais rápido e 3X menos linhas de código do que o equivalente em Python). ```sh 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`: +- Se você quer visualizar tamanhos/datas em uma árvore de arquivos, isto é como uma `ls -l` recursivo, mas é mais fácil de ler do que `ls -lR`: ```sh find . -type f -ls ``` -- Use `xargs` or `parallel` whenever you can. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use xargs echo first. Also, `-I{}` is handy. Examples: +- Utilize `xargs` ou `parallel` sempre que você puder. Note que você pode controlar quantos item é executado por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de que esta é a coisa certa a se fazer, utilize `xargs echo` primeiro. ```sh find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname ``` -- Say you have a text file, like a web server log, and a certain value that appears on some lines, such as an `acct_id` parameter that is present in the URL. If you want a tally of how many requests for each `acct_id`: +- Digamos que você tenha um arquivo de texto, como um log do servidor web, e um certo valor que aparece em algumas linhas, como por exemplo o parâmetro `acct_id` que está presente na URL. Se você quer um cálculo de quantas requisições para este `acct_id`. ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` -- Run this function to get a random tip from this document (parses Markdown and extracts an item): +- Execute esta função para obter uma dica random deste documento (analisa a sintaxe Markdown e extrai um item) ```sh function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | @@ -303,31 +303,31 @@ A few examples of piecing together commands: ``` -## Obscure but useful +## Obscuros mas úteis -- `expr`: perform arithmetic or boolean operations or evaluate regular expressions +- `expr`: executa operações boleanas ou aritméticas ou avalia expressões regulares. -- `m4`: simple macro processor +- `m4`: simples processador de macros. -- `yes`: print a string a lot +- `yes`: imprime uma string muitas vezes. -- `cal`: nice calendar +- `cal`: calendário legal. -- `env`: run a command (useful in scripts) +- `env`: executa um comando (útil em scripts). -- `printenv`: print out environment variables (useful in debugging and scripts) +- `printenv`: imprime as variáveis de ambiente (útil em debug e scripts). -- `look`: find English words (or lines in a file) beginning with a string +- `look`: procura palavras Inglesas (ou linhas em um arquivo) começando com uma string. -- `cut `and `paste` and `join`: data manipulation +- `cut ` e `paste` e `join`: manipulação de dados. -- `fmt`: format text paragraphs +- `fmt`: formata parágrafos de texto. -- `pr`: format text into pages/columns +- `pr`: formata textos em páginas/colunas. -- `fold`: wrap lines of text +- `fold`: envolve linhas de texto. -- `column`: format text into columns or tables +- `column`: formata texto em colunas ou tabelas. - `expand` e `unexpand`: converte entre tabs e espaços. From 05e41b987235f45c0c507385ec46537c562b0fac Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:14:00 -0300 Subject: [PATCH 06/24] Fix links. --- README-pt.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-pt.md b/README-pt.md index 8ece63b..de7a909 100644 --- a/README-pt.md +++ b/README-pt.md @@ -4,14 +4,14 @@ # A arte da linha de comando - [Meta](#meta) -- [Básico](#basics) -- [Uso diário](#everyday-use) -- [Processamento de arquivos e dados](#processing-files-and-data) -- [Debugs do sistema](#system-debugging) +- [Básico](#basico) +- [Uso diário](#uso-diario) +- [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) +- [Debugs do sistema](#debugs-do-sistema) - [One-liners](#one-liners) -- [Obscuros mas úteis](#obscure-but-useful) -- [Mais conteúdo](#more-resources) -- [Aviso](#disclaimer) +- [Obscuros mas úteis](#obscuros-mas-uteis) +- [Mais conteúdo](#mais-conteudo) +- [Aviso](#aviso) ![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 d538d8122264ff153635fb24e06c8c8e008a708a Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:16:43 -0300 Subject: [PATCH 07/24] Fix links. --- README-pt.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-pt.md b/README-pt.md index de7a909..fe31636 100644 --- a/README-pt.md +++ b/README-pt.md @@ -4,13 +4,13 @@ # A arte da linha de comando - [Meta](#meta) -- [Básico](#basico) -- [Uso diário](#uso-diario) +- [Básico](#básico) +- [Uso diário](#uso-diário) - [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) - [Debugs do sistema](#debugs-do-sistema) - [One-liners](#one-liners) -- [Obscuros mas úteis](#obscuros-mas-uteis) -- [Mais conteúdo](#mais-conteudo) +- [Obscuros mas úteis](#obscuros-mas-úteis) +- [Mais conteúdo](#mais-conteúdo) - [Aviso](#aviso) From fc27b43c68ee2980af02dce8e4d2bed336ce2017 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:45:48 -0300 Subject: [PATCH 08/24] Translate 55% of the text --- README-pt.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-pt.md b/README-pt.md index fe31636..c24e2bf 100644 --- a/README-pt.md +++ b/README-pt.md @@ -41,7 +41,7 @@ Notas: ## Básico -- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). - Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). @@ -217,17 +217,17 @@ Notas: - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. -## System debugging +## Debugando o sistema -- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). +- Para web debug, `curl` e `curl -I` são úteis, ou os equivalentes `wget`, or uma alternativa mais moderna [`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. +- Para saber o status do disco/cpu/rede, use `iostat`, `netstat`, `top` (ou o `htop` como alternativa melhor), e (especialmente) `dstat`. Bom para obter uma ideia rápida do que está acontecendo em um sistema. -- 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. +- Para um resumo mais aprofundado do sistema, use [`glances`](https://github.com/nicolargo/glances). Este lhe apresenta vários níveis de estatísticas do sistema em uma janela do terminal. Muito útil para uma rápida verificação em vários subsistemas. -- 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. +- Para saber o status da memória, execute e entenda a saída do `free` `vmstat`. Em particular, esteja ciente de que o valor "cached", é mantido pelo kernel Linux como um arquivo de cache, então este efetivamente conta como um valor de memória disponível. -- 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. +- Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. - Use `mtr` as a better traceroute, to identify network issues. From ccc3c5ce8e13feacaa1aed3d5ff6094cc2e4e495 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 23:49:17 -0300 Subject: [PATCH 09/24] Translate 95% of the text. #130 --- README-pt.md | 105 ++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/README-pt.md b/README-pt.md index c24e2bf..370ba02 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,5 @@ [ Languages: [中文](README-zh.md) ] + [ Languages: [Portuguese](README-pt.md) ] # A arte da linha de comando @@ -68,7 +69,7 @@ Notas: - No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. -- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-*** expande um glob. *** +- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-** expande um glob. - Como alternativa, se você ama os keybinds ao estilo do vi, use `set -o vi`. @@ -122,7 +123,7 @@ Notas: - No ssh, saber como realizar um túnel de portas com `-L` ou `-D` (e ocasionalmente `-R`) é útil, para por exemplo acessar sites webs de um servidor remoto. -- 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, use compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: +- Pode ser útil realizar algumas otimizações em suas configurações do ssh; por exemplo, o arquivo `~/.ssh/config` contém configurações para evitar que conexões sejam dropadas em certos ambientes de rede, use compressão (muito útil quando se está usando o scp através de uma conexão lenta), e multiplexação de canais do mesmo servidor com um arquivo de controle local: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -133,88 +134,88 @@ Notas: ControlPersist yes ``` -- 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` +- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam serem habilitadas com cuidado, por exemplo por sub rede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- 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 +- Para conseguir as permissões em arquivo em forma octal, o qual é útil para as configurações do sistema mas não disponível no `ls` e fácil de se confundir, use algo como: ```sh stat -c '%A %a %n' /etc/timezone ``` -- For interactive selection of values from the output of another command, use [`percol`](https://github.com/mooz/percol). +- Para seleção interativas de valores da saída de outro comando, use [`percol`](https://github.com/mooz/percol). -- For interaction with files based on the output of another command (like `git`), use `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). +- Para interação com arquivos baseados na saída de outro comando (like `git`), use `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). -- 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). +- Para um simples servidor web para todos os arquivos do diretório atual (e subdiretórios), disponível para alguém na sua rede, use: +`python -m SimpleHTTPServer 7777` (para a porta 7777 e Python 2) e `python -m http.server 7777` (para a porta 7777 e Python 3). -## Processing files and data +## Processamento de arquivos e dados -- 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). +- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente `updatedb` pode não ter indexado arquivos criados recentemente). -- For general searching through source or data files (more advanced than `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). +- Para uma busca mais geral através de arquivos de dados ou de códigos (mais avançado do que `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). -- To convert HTML to text: `lynx -dump -stdin` +- Para converter HTML para texto: `lynx -dump -stdin`. -- For Markdown, HTML, and all kinds of document conversion, try [`pandoc`](http://pandoc.org/). +- Para Markdown, HTML, e todos os demais tipos de conversão de documentos, tente [`pandoc`](http://pandoc.org/). -- If you must handle XML, `xmlstarlet` is old but good. +- Se você precisa manipular XML, `xmlstarlet` é antigo mas é bom. -- For JSON, use `jq`. +- Para JSON, `jq`. -- For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. +- Para Excel ou arquivos CSV, [csvkit](https://github.com/onyxfish/csvkit) que provê `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. +- Para a Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) é uma forma conveniente e [`s4cmd`](https://github.com/bloomreach/s4cmd) é mais rápido. O [`aws`](https://github.com/aws/aws-cli) da amazon é essencial para outras tarefas relacionadas. -- Know about `sort` and `uniq`, including uniq's `-u` and `-d` options -- see one-liners below. See also `comm`. +- Aprenda a respeito do `sort` e `uniq`, incluindo as opções do `-u` e `-d` do `uniq` -- veja os one-liners abaixo. Veja também `comm`. -- Know about `cut`, `paste`, and `join` to manipulate text files. Many people use `cut` but forget about `join`. +- Aprenda a respeito do `cut`, `paste`, e `join` para manipular arquivos de texto. Muitas pessoas usam `cut` mas esquecem do `join`. -- Know about `wc` to count newlines (`-l`), characters (`-m`), words (`-w`) and bytes (`-c`). +- Aprenda a respeito do `wc` para contar novas linhas (`-l`), caracteres (`-m`), palavras (`-m`) e bytes (`-c`). -- Know about `tee` to copy from stdin to a file and also to stdout, as in `ls -al | tee file.txt`. +- Aprenda a respeito do `tee` para copiar da entrada padrão (stdin) para um arquivo e também para a saída padrão (stdout), como no `ls -al | tee file.txt`. -- 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`. +- Aprenda que as configurações de localização afetam um várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n oide fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. -- 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. +- Aprenda o básico sobre `awk` e `sed` para obtenção de informações simples de dados. Por exemplo, somar todos os números na terceira coluna de um arquivo de texto: `awk '{ x += $3 } END { print x }'`. Isto é provavelmente 3X mais rápido e 3X mais curto do que o equivalente em Python. -- To replace all occurrences of a string in place, in one or more files: +- Para substituir todas as ocorrências de uma string em um lugar, em um ou mais arquivos: ```sh 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. +- Para renomear muitos arquivos de uma vez, de acordo com um padrão, use `rename`. Para renomeações mais complexas, [`repren`](https://github.com/jlevy/repren) pode ajudar. ```sh - # Recover backup files foo.bak -> foo: + # Recuperar arquivos de backup foo.bak -> foo: rename 's/\.bak$//' *.bak - # Full rename of filenames, directories, and contents foo -> bar: + # Renomea completamente o nome dos arquivos, diretórios, e outros conteúdos foo -> bar: repren --full --preserve-case --from foo --to bar . ``` -- Use `shuf` to shuffle or select random lines from a file. +- Utilize o `shuf` para embaralhar ou selecionar linhas randoms de um arquivo. -- Know `sort`'s options. 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. +- Para as opções do `sort`. Aprenda com as chaves (`-t` e `-k`). Em particular, saiba que precisa escrever `-k1,1` para ordenar somente o primeiro campo; `-k1` significa ordenar de acordo com a linha inteira. -- 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` +- Ordenação estável (`sort -s`) pode ser útil. Por exemplo, para ordenar primeiramente pelo campo 2, então secundariamente pelo campo 1, você pode usar `sort -k1,1 | sort -s -k2,2`. -- 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). +- Se você precisa escrever literalmente um tab na linha de comando no Bash (por exemplo, para o argumento -t do `sort`), pressione **ctrl-v** **[Tab]** ou escreva `$'\t'` (o último é melhor pois você pode copiar e colar ele). -- 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. +- As ferramentas padrão para extrair patches de códigos fonte são `diff`e `patch`. Veja também `diffstat` para um resumo de estatísticas de um diff. Note que `diff -r` funciona para diretórios inteiros. Use `diff -r tree1 tree2 | diffstat` para um resumo das alterações. -- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. +- Para arquivos binários, use `hd` para um simples dump hexadecimal e `bvi` para edição binária. -- Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. +- Também para arquivos binários, `strings` (mais `grep`, etc.) deixa você encontrar pedaços de texto. -- For binary diffs (delta compression), use `xdelta3`. +- Para diffs binários (compressão delta), use `xdelta3.` -- To convert text encodings, try `iconv`. Or `uconv` for more advanced use; it supports some advanced Unicode things. For example, this command lowercases and removes all accents (by expanding and dropping them): +- Para converter a codificação de textos, tente `iconv`. Ou `uconv` para uso mais avançado; Este suporta algumas funcionalidades avançadas do Unicode. Por exemplo, este comando transforma o texto para minúsculo e remove todos os acentos (expandindo e removendo eles): ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` -- To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). +- Para dividir um arquivo em pedaços, veja `split` (para dividir por tamanho) e `csplit` (para dividir por um padrão). -- Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. +Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. ## Debugando o sistema @@ -229,31 +230,31 @@ Notas: - Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. -- Use `mtr` as a better traceroute, to identify network issues. +- Use `mtr` como um melhor alternativa ao traceroute, para identificar problemas na rede. -- For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. +- Para verificar o porque de um disco está cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais com `du -sh *`. -- To find which socket or process is using bandwidth, try `iftop` or `nethogs`. +- Para procurar qual socket ou processo está utilizando a banda de rede, tente `iftop` ou `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`. +- 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`. -- For more serious network debugging, `wireshark`, `tshark`, or `ngrep`. +- Para debugs mais sérios da rede, `wireshark`, `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`). +- Aprenda a respeito do `strace`e `ltrace`. Estes podem serem ú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`). -- Know about `ldd` to check shared libraries etc. +- Aprenda a respeito do `ldd` para verificar bibliotecas compartilhadas, e etc. -- Know how to connect to a running process with `gdb` and get its stack traces. +- Aprenda sobre como se contar a um processo em execução com o `gdb` e obter informações sobre a stack trace. -- Use `/proc`. It's amazingly helpful sometimes when debugging live problems. Examples: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. +- Utilize `/proc`. Este é incrivelmente útil em algumas vezes quando se deseja debugar problemas vivos. Exemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. -- When debugging why something went wrong in the past, `sar` can be very helpful. It shows historic statistics on CPU, memory, network, etc. +- Quando estiver debugando o porque de algo ter dado errado no passado, `sar` pode ser de muita utilidade. Este exibe as estatísticas históricas da CPU, memória, rede e 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). +- 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). -- Confirm what Linux distribution you're using (works on most distros): `lsb_release -a` +- Confirme qual a sua distribuição do Linux usando (funciona na maioria das distros): `lsb_release -a`. -- Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). +- Use `dmesg` sempre que algo estiver de maneira estranha (isto poderia ser um hardware ou problemas de driver). ## One-liners @@ -447,4 +448,4 @@ Com a exceção de tarefas muito pequenas, o código é escrito de modo que outr [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) -This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). +Este trabalho está licenciado sobre uma [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From 626e6d69e524c125183fd06ceffbc45fcfa2268e Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 23:53:42 -0300 Subject: [PATCH 10/24] Fix languages section. --- README-pt.md | 3 +-- README.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README-pt.md b/README-pt.md index 370ba02..93b1996 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ -[ Languages: [中文](README-zh.md) ] +[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] -[ Languages: [Portuguese](README-pt.md) ] # A arte da linha de comando diff --git a/README.md b/README.md index d546670..81c2521 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -[ Languages: [中文](README-zh.md) ] -[ Languages: [Portuguese](README-pt.md) ] +[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] # The Art of Command Line From aefc01ee7958c04867180ab7e58d430cf6be64b8 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sun, 28 Jun 2015 10:49:19 -0300 Subject: [PATCH 11/24] Translate 100% of the text. Minor improves. #130 --- README-pt.md | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/README-pt.md b/README-pt.md index 93b1996..07eb54e 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,4 @@ -[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] +[ Languages: [English](README.md), [中文](README-zh.md), [Portuguese](README-pt.md)] # A arte da linha de comando @@ -7,7 +7,7 @@ - [Básico](#básico) - [Uso diário](#uso-diário) - [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) -- [Debugs do sistema](#debugs-do-sistema) +- [Debugando o sistema](#debugs-do-sistema) - [One-liners](#one-liners) - [Obscuros mas úteis](#obscuros-mas-úteis) - [Mais conteúdo](#mais-conteúdo) @@ -16,46 +16,46 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui tem bastante conhecimento. +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui bastante conhecimento. Mais sobre isso [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) +mas dado o interesse lá, então me parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta Escopo: -- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *breadth* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais or digressões que vou pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. -- Este guia é escrito para o Linux. Muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). -- O foco está na interatividade no Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. -- Este inclui tanto comandos Unix "padrão", como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. +- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *generalização* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais ou digressões que você pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. +- Este guia é escrito para o Linux. Porém muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). +- O foco está na interatividade com o Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. +- Este inclui tanto comandos no "padrão" Unix, como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. Notas: -- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou siga para o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. -- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre comandos, opções, pipes e etc. faz. +- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou caso contrário não exite em usar o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. +- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre o que faz os comandos, opções, pipes e etc. ## Básico -- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, enquanto é tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). -- Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). +- Aprenda pelo menos um editor baseado em texto bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). -- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim builins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. +- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim built-ins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. - Aprenda a respeito do redirecionamento da saída e entrada usando `>` e `<` e pipes usando `|`. Aprenda sobre o stdout e stdin. -- Aprenda sobre a expensão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) and quoting and the difference entre aspas duplas `"` e aspas simples `'`. (Veja mais em expansões de variáveis abaixo.) +- Aprenda sobre a expansão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) e entendendo as diferenças entre aspas duplas `"` e aspas simples `'`. (Veja mais em variáveis de expansão abaixo.) - Esteja familiar com o gerenciamento de jobs no Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. - Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. -- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` and `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versus hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` e `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versos hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Gerenciamento básico da rede: `ip` ou `ifconfig`, `dig`. @@ -76,9 +76,9 @@ Notas: - Volte atrás para o diretório de trabalho anterior: `cd -`. -- Se você estar na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Você pode então recuperar o comando mais tarde através do histórico de comandos. +- Se você está na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Mais tarde você poderá recuperar o comando através do `history`. -- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: +- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza se isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -96,7 +96,7 @@ Notas: - Veja também `lsof` para abrir sockets e arquivos. -- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` como também, para ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. +- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` para também ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. - Em Bash scripts, subshells (escrito com parênteses) são formas convenientes de agrupar comandos. Um exemplo comum é temporariamente mover para um diretório de trabalho diferente, e.g. ```bash @@ -107,7 +107,7 @@ Notas: - No Bash, note que existem muitos tipos de variáveis de expansão. Verificando a existência de uma variável: `${name:?error_messages}`. Por exemplo, se um script Bash requer um único argumento, apenas escreva `input_file=${1:?usage: $0 input_file}`. Expansões aritméticas: `i=$(( (i + 1) % 5 ))`. Sequências: `{1..10}`. Aparando as strings: `${var%suffix}` e `${var#prefix}`. Por exemplo, se `var=foo.pdf`, então `echo ${var%.pdf}.txt` imprime `foo.txt`. -- A saída de um comando pode ser trata como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: +- A saída de um comando pode ser tratada como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` @@ -118,7 +118,7 @@ Notas: - Use `man ascii` para visualizar a tabela ASCII, com valores hexadecimais e decimais. Para informações gerais sobre codificações, `man unicode`, `man utf-8`, e `man latin1` são úteis. -- Use `screen` ou [`tmux`](https://tmux.github.io/) para multiplexar as telas, especialmente útil em sessões ssh remotas e para desanexar e reanexar a uma sessão. Uma alternativa mais simples para a persistência de uma sessão é `dtach`. +- Use `screen` ou [`tmux`](https://tmux.github.io/) para multiplexar as telas, especialmente útil em sessões ssh remotas e para desplugar e replugar a uma sessão. Uma alternativa mais simples para a persistência de uma sessão é `dtach`. - No ssh, saber como realizar um túnel de portas com `-L` ou `-D` (e ocasionalmente `-R`) é útil, para por exemplo acessar sites webs de um servidor remoto. @@ -133,7 +133,7 @@ Notas: ControlPersist yes ``` -- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam serem habilitadas com cuidado, por exemplo por sub rede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam ser habilitadas com cuidado, por exemplo para subrede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` - Para conseguir as permissões em arquivo em forma octal, o qual é útil para as configurações do sistema mas não disponível no `ls` e fácil de se confundir, use algo como: ```sh @@ -150,7 +150,7 @@ Notas: ## Processamento de arquivos e dados -- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente `updatedb` pode não ter indexado arquivos criados recentemente). +- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente que o `updatedb` pode não ter indexado arquivos criados recentemente). - Para uma busca mais geral através de arquivos de dados ou de códigos (mais avançado do que `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). @@ -174,7 +174,7 @@ Notas: - Aprenda a respeito do `tee` para copiar da entrada padrão (stdin) para um arquivo e também para a saída padrão (stdout), como no `ls -al | tee file.txt`. -- Aprenda que as configurações de localização afetam um várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n oide fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. +- Aprenda que as configurações de localização afetam várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n podem fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. - Aprenda o básico sobre `awk` e `sed` para obtenção de informações simples de dados. Por exemplo, somar todos os números na terceira coluna de um arquivo de texto: `awk '{ x += $3 } END { print x }'`. Isto é provavelmente 3X mais rápido e 3X mais curto do que o equivalente em Python. @@ -227,23 +227,23 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Para saber o status da memória, execute e entenda a saída do `free` `vmstat`. Em particular, esteja ciente de que o valor "cached", é mantido pelo kernel Linux como um arquivo de cache, então este efetivamente conta como um valor de memória disponível. -- Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. +- Debugar um sistema java é uma "kettle of fish", 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 da heap (incluindo detalhes geracionais do garbage collector, os quais podem ser altamente informativos) serão vazados para stderr/logs. -- Use `mtr` como um melhor alternativa ao traceroute, para identificar problemas na rede. +- Use `mtr` como uma melhor alternativa ao traceroute, para identificar problemas na rede. -- Para verificar o porque de um disco está cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais com `du -sh *`. +- 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`. - 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`, or `ngrep`. +- Para debugs mais sérios da rede, `wireshark`, `tshark`, ou `ngrep`. -- Aprenda a respeito do `strace`e `ltrace`. Estes podem serem ú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`). +- 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`). - Aprenda a respeito do `ldd` para verificar bibliotecas compartilhadas, e etc. -- Aprenda sobre como se contar a um processo em execução com o `gdb` e obter informações sobre a stack trace. +- Aprenda sobre como se conectar a um processo em execução com o `gdb` e obter informações sobre a stack trace. - Utilize `/proc`. Este é incrivelmente útil em algumas vezes quando se deseja debugar problemas vivos. Exemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. @@ -253,14 +253,14 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Confirme qual a sua distribuição do Linux usando (funciona na maioria das distros): `lsb_release -a`. -- Use `dmesg` sempre que algo estiver de maneira estranha (isto poderia ser um hardware ou problemas de driver). +- Use `dmesg` sempre que algo estiver agindo de maneira estranha (isto poderia ser um hardware ou problemas de driver). ## One-liners Alguns exemplos de como reunir os comandos. -- É notavelmente útil algumas vezes, que você quer obter a interseção, união e a diferença de arquivos de texto através de `sort`/`uniq`. Suponha que `a` e `b` são arquivos de texto que são únicos. Desde modo é rápido, e funciona em arquivos de tamanhos arbitrários, podem até possuírem gigabytes. (Ordenação não é limitada por memória, embora você possa precisar usar a opção `-T` se `/tmp` está em uma partição pequena.) Veja também a nota sobre `LC_ALL` a cima es opções `-u` do `sort`(vamos deixar isso claro abaixo). +- É notavelmente útil algumas vezes, que você quer obter a interseção, união e a diferença de arquivos de texto através de `sort`/`uniq`. Suponha que `a` e `b` são arquivos de texto que são únicos. Desse modo é rápido, e funciona em arquivos de tamanhos arbitrários, podem até possuírem gigabytes. (Ordenação não é limitada por memória, embora você possa precisar usar a opção `-T` se `/tmp` está em uma partição pequena.) Veja também a nota sobre `LC_ALL` a cima e as opções `-u` do `sort`(vamos deixar isso claro abaixo). ```sh cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b @@ -294,7 +294,7 @@ Alguns exemplos de como reunir os comandos. - Execute esta função para obter uma dica random deste documento (analisa a sintaxe Markdown e extrai um item) ```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-pt.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]" | @@ -345,7 +345,7 @@ Alguns exemplos de como reunir os comandos. - `nc`: ferramenta de debug de rede e transferência de dados. -- `socat`: socket relay e portas encaminhamento de portas tcp (similar ao `netcat`) +- `socat`: socket relay e encaminhamento de portas tcp (similar ao `netcat`) - `slurm`: visualização do tráfego da rede. @@ -369,9 +369,9 @@ Alguns exemplos de como reunir os comandos. - `strings`: extrai texto de arquivos binários. -- `tr`: tradução manipulação de caracteres. +- `tr`: tradução e manipulação de caracteres. -- `iconv` ou `uconv`: conversor de codificações de text. +- `iconv` ou `uconv`: conversor de codificações de texto. - `split ` e `csplit`: divisão de arquivos. @@ -387,7 +387,7 @@ Alguns exemplos de como reunir os comandos. - `strace`: Debug para chamadas de sistema. -- `mtr`: melhor tracerout para debugar a rede. +- `mtr`: melhor traceroute para debugar a rede. - `cssh`: Visualização concorrente do shell. @@ -419,7 +419,7 @@ Alguns exemplos de como reunir os comandos. - `iftop` ou `nethogs`: Utilização da rede por sockets ou processos. -- `ss`: Statísticas dos sockets. +- `ss`: Estatísticas dos sockets. - `dmesg`: Mensagens de erro do sistema e do boot. @@ -427,7 +427,7 @@ Alguns exemplos de como reunir os comandos. - `lsb_release`: Informações sobre a distribuição do Linux. -- `lsblk`: Lista os blocos dos dispositivos: uma visualização é forma de árvore dos seus discos e partições do disco. +- `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. @@ -440,7 +440,7 @@ Alguns exemplos de como reunir os comandos. ## Aviso -Com a exceção de tarefas muito pequenas, o código é escrito de modo que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) +Com a exceção de tarefas muito pequenas, o código é escrito para que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) ## Licença From c004dac0e068186e4aa46bf13ec1733089e5f04b Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Fri, 26 Jun 2015 16:58:12 -0300 Subject: [PATCH 12/24] Translate 10% of the text to portugues. #130 --- README-pt.md | 453 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 README-pt.md diff --git a/README-pt.md b/README-pt.md new file mode 100644 index 0000000..a79605a --- /dev/null +++ b/README-pt.md @@ -0,0 +1,453 @@ +[ Languages: [中文](README-zh.md) ] + +# The Art of Command Line + +- [Meta](#meta) +- [Basics](#basics) +- [Everyday use](#everyday-use) +- [Processing files and data](#processing-files-and-data) +- [System debugging](#system-debugging) +- [One-liners](#one-liners) +- [Obscure but useful](#obscure-but-useful) +- [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) + +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilizada usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você sabe bastante coisas. + +Mais sobre isso +[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) +em [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (É claro por favor revise as meta sections e PRs/issues existentes primeiro.) + +## Meta + +Escopo: + +- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *breadth* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais or digressões que vou pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. +- Este guia é escrito para o Linux. Muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). +- O foco está na interatividade no Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. +- Este inclui tanto comandos Unix "padrão", como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. + +Notas: + +- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou siga para o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. +- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre comandos, opções, pipes e etc. faz. + + +## Básico + +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). + +- Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). + +- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim builins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. + +- Aprenda a respeito do redirecionamento da saída e entrada usando `>` e `<` e pipes usando `|`. Aprenda sobre o stdout e stdin. + +- Aprenda sobre a expensão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) and quoting and the difference entre aspas duplas `"` e aspas simples `'`. (Veja mais em expansões de variáveis abaixo.) + +- Esteja familiar com o gerenciamento de jobs no Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. + +- Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. + +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), + +- 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 -sk *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. + +- Basic network management: `ip` or `ifconfig`, `dig`. + +- Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-A`, and `-B` 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`). + + +## Everyday use + +- In Bash, use **Tab** to complete arguments 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-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`. + +- 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 -` + +- 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. + +- Use `xargs` (or `parallel`). It's very powerful. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use `xargs echo` first. Also, `-I{}` is handy. Examples: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- `pstree -p` is a helpful display of the process tree. + +- Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). + +- Know the various signals you can send processes. For example, to suspend a process, use `kill -STOP [pid]`. For the full list, see `man 7 signal` + +- Use `nohup` or `disown` if you want a background process to keep running forever. + +- Check what processes are listening via `netstat -lntp` or `ss -plat` (for TCP; add `-u` for UDP). + +- See also `lsof` for open sockets and files. + +- 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, 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 + # do something in current dir + (cd /some/other/dir && other-command) + # 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`. + +- 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) +``` + +- 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 ` foo: + rename 's/\.bak$//' *.bak + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . +``` + +- Use `shuf` to shuffle or select random lines from a file. + +- Know `sort`'s options. 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` + +- 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. + +- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. + +- Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. + +- For binary diffs (delta compression), use `xdelta3`. + +- To convert text encodings, try `iconv`. Or `uconv` for more advanced use; it supports some advanced Unicode things. For example, this command lowercases and removes all accents (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 +``` + +- To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). + +- 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). + +- 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. + +- 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. + +- 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. + +- 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. + +- Use `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 *`. + +- To find which socket or process is using bandwidth, try `iftop` or `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`. + +- For more serious network debugging, `wireshark`, `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`). + +- Know about `ldd` to check shared libraries etc. + +- Know how to connect to a running process with `gdb` and get its stack traces. + +- Use `/proc`. It's amazingly helpful sometimes when debugging live problems. Examples: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. + +- 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). + +- Confirm what Linux distribution you're using (works on most distros): `lsb_release -a` + +- Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). + + +## One-liners + +A few examples of piecing together commands: + +- It is remarkably helpful sometimes that you can do set intersection, union, and difference of text files via `sort`/`uniq`. Suppose `a` and `b` are text files that are already uniqued. This is fast, and works on files of arbitrary size, up to many gigabytes. (Sort is not limited by memory, though you may need to use the `-T` option if `/tmp` is on a small root partition.) See also the note about `LC_ALL` above and `sort`'s `-u` option (left out for clarity below). +```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 +``` + +- 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`. + + +- Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python): +```sh + 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`: +```sh + find . -type f -ls +``` + +- Use `xargs` or `parallel` whenever you can. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use xargs echo first. Also, `-I{}` is handy. Examples: +```sh + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` + +- Say you have a text file, like a web server log, and a certain value that appears on some lines, such as an `acct_id` parameter that is present in the URL. If you want a tally of how many requests for each `acct_id`: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` + +- Run this function to get a random tip from this document (parses Markdown and extracts an item): +```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 + } +``` + + +## Obscure but useful + +- `expr`: perform arithmetic or boolean operations or evaluate regular expressions + +- `m4`: simple macro processor + +- `yes`: print a string a lot + +- `cal`: nice calendar + +- `env`: run a command (useful in scripts) + +- `printenv`: print out environment variables (useful in debugging and scripts) + +- `look`: find English words (or lines in a file) beginning with a string + +- `cut `and `paste` and `join`: data manipulation + +- `fmt`: format text paragraphs + +- `pr`: format text into pages/columns + +- `fold`: wrap lines of text + +- `column`: format text into columns or tables + +- `expand` and `unexpand`: convert between tabs and spaces + +- `nl`: add line numbers + +- `seq`: print numbers + +- `bc`: calculator + +- `factor`: factor integers + +- `gpg`: encrypt and sign files + +- `toe`: table of terminfo entries + +- `nc`: network debugging and data transfer + +- `socat`: socket relay and tcp port forwarder (similar to `netcat`) + +- `slurm`: network trafic visualization + +- `dd`: moving data between files or devices + +- `file`: identify type of a file + +- `tree`: display directories and subdirectories as a nesting tree; like `ls` but recursive + +- `stat`: file info + +- `tac`: print files in reverse + +- `shuf`: random selection of lines from a file + +- `comm`: compare sorted files line by line + +- `pv`: monitor the progress of data through a pipe + +- `hd` and `bvi`: dump or edit binary files + +- `strings`: extract text from binary files + +- `tr`: character translation or manipulation + +- `iconv` or `uconv`: conversion for text encodings + +- `split `and `csplit`: splitting files + +- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) + +- `7z`: high-ratio file compression + +- `ldd`: dynamic library info + +- `nm`: symbols from object files + +- `ab`: benchmarking web servers + +- `strace`: system call debugging + +- `mtr`: better traceroute for network debugging + +- `cssh`: visual concurrent shell + +- `rsync`: sync files and folders over SSH + +- `wireshark` and `tshark`: packet capture and network debugging + +- `ngrep`: grep for the network layer + +- `host` and `dig`: DNS lookups + +- `lsof`: process file descriptor and socket info + +- `dstat`: useful system stats + +- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview + +- `iostat`: CPU and disk usage stats + +- `htop`: improved version of top + +- `last`: login history + +- `w`: who's logged on + +- `id`: user/group identity info + +- `sar`: historic system stats + +- `iftop` or `nethogs`: network utilization by socket or process + +- `ss`: socket statistics + +- `dmesg`: boot and system error messages + +- `hdparm`: SATA/ATA disk manipulation/performance + +- `lsb_release`: Linux distribution info + +- `lsblk`: List block devices: a tree view of your disks and disk paritions + +- `lshw` and `lspci`: hardware information, including RAID, graphics, etc. + +- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" + + +## More resources + +- [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. + + +## Disclaimer + +With the exception of very small tasks, code is written so others can read it. With power comes responsibility. The fact you *can* do something in Bash doesn't necessarily mean you should! ;) + + +## License + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From b801887bc18b894db1ae9af1f8eaa7081982d35d Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 09:09:04 -0300 Subject: [PATCH 13/24] Translate 20% of the text. --- README-pt.md | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/README-pt.md b/README-pt.md index a79605a..c7b6905 100644 --- a/README-pt.md +++ b/README-pt.md @@ -54,56 +54,54 @@ Notas: - Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. -- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` and `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versus hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `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 -sk *`). For filesystem management, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Gerenciamento básico da rede: `ip` ou `ifconfig`, `dig`. -- Basic network management: `ip` or `ifconfig`, `dig`. +- Sabia bem expressões regulares, e as várias flags para `grep`/`egrep`. As `-i`, `-o`, `-A`, e `-B` são opções que é importante saber. -- Know regular expressions well, and the various flags to `grep`/`egrep`. The `-i`, `-o`, `-A`, and `-B` 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`). +- Aprenda a usar `apt-get`, `yum`, `dnf` ou `pacman` (dependendo da distribuição) para procurar e instalar pacotes. E garanta que você possui o `pip` para instalar ferramentas baseadas em Python (algumas abaixo são fáceis de instalar através do `pip`). -## Everyday use +## Usu diário -- In Bash, use **Tab** to complete arguments and **ctrl-r** to search through command history. +- No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. -- 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-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. +- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-*** expande um glob. *** -- Alternatively, if you love vi-style key-bindings, use `set -o vi`. +- Como alternativa, se você ama os keybinds ao estilo do vi, use `set -o vi`. -- 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-.**. +- Para ver os comandos recentes, `history`. Existem também muitas abreviações como `!$` (último argumento) e `!!` último comando, embora estes sejam muitas vezes facilmente substituídos por **ctrl-r** e **alt-.**. -- To go back to the previous working directory: `cd -` +- Volte atrás para o diretório de trabalho anterior: `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. +- Se você estar na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Você pode então recuperar o comando mais tarde através do histórico de comandos. -- Use `xargs` (or `parallel`). It's very powerful. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use `xargs echo` first. Also, `-I{}` is handy. Examples: +- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname ``` -- `pstree -p` is a helpful display of the process tree. +- `pstree -p` é um modo de visualização muito útil da árvore de processos. -- Use `pgrep` and `pkill` to find or signal processes by name (`-f` is helpful). +- Use `pgrep` e `pkill` para procurar ou sinalizar os processo pelo seu nome (`-f` é muito útil). -- Know the various signals you can send processes. For example, to suspend a process, use `kill -STOP [pid]`. For the full list, see `man 7 signal` +- Saiba os vários sinais que você pode enviar para um processo. Por exemplo, para suspender um processo, use `kill -STOP [pid]`. Para saber a lista completas dos sinais, veja `man 7 signal`. -- Use `nohup` or `disown` if you want a background process to keep running forever. +- Use `nohup` ou `disown` se você deseja por o processo em background executando para sempre. -- Check what processes are listening via `netstat -lntp` or `ss -plat` (for TCP; add `-u` for UDP). +- Verifique quais processos estão escutando através `netstat -lntp` ou `ss -plat` (para TCP; adicione `-u` para UDP). -- See also `lsof` for open sockets and files. +- Veja também `lsof` para abrir sockets e arquivos. -- 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`. +- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` como também, para ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. -- 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. +- Em Bash scripts, subshells (escrito com parênteses) são formas convenientes de agrupar comandos. Um exemplo comum é temporariamente mover para um diretório de trabalho diferente, e.g. ```bash - # do something in current dir + # faz algo no diretório corrente (cd /some/other/dir && other-command) - # continue in original dir + # continua no diretório atual ``` - 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`. From 81cdd86df93b75eeac30f271117a0a763c8db9f1 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 09:45:51 -0300 Subject: [PATCH 14/24] Translate 40% of the text. #130 --- README-pt.md | 138 +++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 70 deletions(-) diff --git a/README-pt.md b/README-pt.md index c7b6905..ba95afb 100644 --- a/README-pt.md +++ b/README-pt.md @@ -15,13 +15,13 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilizada usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você sabe bastante coisas. +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui tem bastante conhecimento. Mais sobre isso -[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) -em [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (É claro por favor revise as meta sections e PRs/issues existentes primeiro.) +[originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta @@ -63,7 +63,7 @@ Notas: - Aprenda a usar `apt-get`, `yum`, `dnf` ou `pacman` (dependendo da distribuição) para procurar e instalar pacotes. E garanta que você possui o `pip` para instalar ferramentas baseadas em Python (algumas abaixo são fáceis de instalar através do `pip`). -## Usu diário +## Uso diário - No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. @@ -328,123 +328,121 @@ A few examples of piecing together commands: - `column`: format text into columns or tables -- `expand` and `unexpand`: convert between tabs and spaces +- `expand` e `unexpand`: converte entre tabs e espaços. -- `nl`: add line numbers +- `nl`: adiciona números as linhas. -- `seq`: print numbers +- `seq`: imprime números. -- `bc`: calculator +- `bc`: calculadora. -- `factor`: factor integers +- `factor`: fatora inteiros. -- `gpg`: encrypt and sign files +- `gpg`: criptografa e assina arquivos. -- `toe`: table of terminfo entries +- `toe`: tabela de entradas dos tipos de terminais. -- `nc`: network debugging and data transfer +- `nc`: ferramenta de debug de rede e transferência de dados. -- `socat`: socket relay and tcp port forwarder (similar to `netcat`) +- `socat`: socket relay e portas encaminhamento de portas tcp (similar ao `netcat`) -- `slurm`: network trafic visualization +- `slurm`: visualização do tráfego da rede. -- `dd`: moving data between files or devices +- `dd`: move os dados entre arquivos ou dispositivos. -- `file`: identify type of a file +- `file`: identifica o tipo do arquivo. -- `tree`: display directories and subdirectories as a nesting tree; like `ls` but recursive +- `tree`: mostra os diretórios e subdiretórios como um árvore de dependências; como `ls` mas recursivo. -- `stat`: file info +- `stat`: informações do arquivo. -- `tac`: print files in reverse +- `tac`: imprime arquivos na ordem reversa. -- `shuf`: random selection of lines from a file +- `shuf`: seleção random de linhas de um arquivo. -- `comm`: compare sorted files line by line +- `comm`: compara uma lista de arquivos ordenadas linha por linha. -- `pv`: monitor the progress of data through a pipe +- `pv`: monitora o progresso dos dados através de um pipe. -- `hd` and `bvi`: dump or edit binary files +- `hd` e `bvi`: dump ou edita arquivos binários. -- `strings`: extract text from binary files +- `strings`: extrai texto de arquivos binários. -- `tr`: character translation or manipulation +- `tr`: tradução manipulação de caracteres. -- `iconv` or `uconv`: conversion for text encodings +- `iconv` ou `uconv`: conversor de codificações de text. -- `split `and `csplit`: splitting files +- `split ` e `csplit`: divisão de arquivos. -- `units`: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also `/usr/share/units/definitions.units`) +- `units`: conversor de unidades e cálculos; converte furlongs por quinzena para twips per blink (veja também `/usr/share/units/definitions.units`) -- `7z`: high-ratio file compression +- `7z`: Compressor de arquivos de alto desempenho. -- `ldd`: dynamic library info +- `ldd`: informações dinâmicas das bibliotecas. -- `nm`: symbols from object files +- `nm`: símbolos de arquivos objetos. -- `ab`: benchmarking web servers +- `ab`: benchmarking para web servers. -- `strace`: system call debugging +- `strace`: Debug para chamadas de sistema. -- `mtr`: better traceroute for network debugging +- `mtr`: melhor tracerout para debugar a rede. -- `cssh`: visual concurrent shell +- `cssh`: Visualização concorrente do shell. -- `rsync`: sync files and folders over SSH +- `rsync`: Sincroniza arquivos e pastas através do SSH. -- `wireshark` and `tshark`: packet capture and network debugging +- `wireshark` e `tshark`: captura de pacotes e debug de rede. -- `ngrep`: grep for the network layer +- `ngrep`: grep para a camada de rede. -- `host` and `dig`: DNS lookups +- `host` e `dig`: Consultas DNS. -- `lsof`: process file descriptor and socket info +- `lsof`: Arquivo de descritores dos processos e informações dos sockets. -- `dstat`: useful system stats +- `dstat`: Estatísticas úteis do sistema. -- [`glances`](https://github.com/nicolargo/glances): high level, multi-subsystem overview +- [`glances`](https://github.com/nicolargo/glances): Resumo em alto nível, de multi subsistemas. -- `iostat`: CPU and disk usage stats +- `iostat`: Estatísticas de uso do CPU e do disco. -- `htop`: improved version of top +- `htop`: Versão do top melhorada. -- `last`: login history +- `last`: histórico de logins. -- `w`: who's logged on +- `w`: quem está logado. -- `id`: user/group identity info +- `id`: Informações sobre a identidade do user/group. -- `sar`: historic system stats +- `sar`: histórico dos estados do sistema. -- `iftop` or `nethogs`: network utilization by socket or process +- `iftop` ou `nethogs`: Utilização da rede por sockets ou processos. -- `ss`: socket statistics +- `ss`: Statísticas dos sockets. -- `dmesg`: boot and system error messages +- `dmesg`: Mensagens de erro do sistema e do boot. -- `hdparm`: SATA/ATA disk manipulation/performance +- `hdparm`: Manipulação/performance de discos SATA/ATA. -- `lsb_release`: Linux distribution info +- `lsb_release`: Informações sobre a distribuição do Linux. -- `lsblk`: List block devices: a tree view of your disks and disk paritions +- `lsblk`: Lista os blocos dos dispositivos: uma visualização é forma de árvore dos seus discos e partições do disco. -- `lshw` and `lspci`: hardware information, including RAID, graphics, etc. +- `lshw` e `lspci`: informações do hardware, incluindo RAID, gráficos, etc. -- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" +- `fortune`, `ddate`, e `sl`: um, bem, isto depende de você considerar locomotivas a vapor e citações Zippy "úteis". + +## Mais conteúdo + +- [awesome-shell](https://github.com/alebcay/awesome-shell): Uma lista refinada de ferramentas do shell e outros recursos. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) para escrever shell scripts melhores. + +## Aviso + +Com a exceção de tarefas muito pequenas, o código é escrito de modo que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) -## More resources - -- [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. - - -## Disclaimer - -With the exception of very small tasks, code is written so others can read it. With power comes responsibility. The fact you *can* do something in Bash doesn't necessarily mean you should! ;) - - -## License +## Licença [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) From a735f338df23186b335f7b68a71c48384c29d3c9 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 10:15:13 -0300 Subject: [PATCH 15/24] Translate title and links --- README-pt.md | 19 ++++++++++--------- README.md | 2 ++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/README-pt.md b/README-pt.md index ba95afb..1dbb50c 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,16 +1,17 @@ [ Languages: [中文](README-zh.md) ] +[ Languages: [Portuguese](README-pt.md) ] -# The Art of Command Line +# A arte da linha de comando - [Meta](#meta) -- [Basics](#basics) -- [Everyday use](#everyday-use) -- [Processing files and data](#processing-files-and-data) -- [System debugging](#system-debugging) +- [Básico](#basics) +- [Uso diário](#everyday-use) +- [Processamento de arquivos e dados](#processing-files-and-data) +- [Debugs do sistema](#system-debugging) - [One-liners](#one-liners) -- [Obscure but useful](#obscure-but-useful) -- [More resources](#more-resources) -- [Disclaimer](#disclaimer) +- [Obscuros mas úteis](#obscure-but-useful) +- [Mais conteúdo](#more-resources) +- [Aviso](#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) @@ -21,7 +22,7 @@ Mais sobre isso [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro por favor revise as meta sections e PRs/issues existentes primeiro.) +mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta diff --git a/README.md b/README.md index 8d9563f..d546670 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ [ Languages: [中文](README-zh.md) ] +[ Languages: [Portuguese](README-pt.md) ] + # The Art of Command Line From d336e7a77e0ed64d8c9275e5adf7872eaf668d3a Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:08:17 -0300 Subject: [PATCH 16/24] Translate 50% of the text. --- README-pt.md | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/README-pt.md b/README-pt.md index 1dbb50c..8ece63b 100644 --- a/README-pt.md +++ b/README-pt.md @@ -105,22 +105,22 @@ Notas: # continua no diretório atual ``` -- 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`. +- No Bash, note que existem muitos tipos de variáveis de expansão. Verificando a existência de uma variável: `${name:?error_messages}`. Por exemplo, se um script Bash requer um único argumento, apenas escreva `input_file=${1:?usage: $0 input_file}`. Expansões aritméticas: `i=$(( (i + 1) % 5 ))`. Sequências: `{1..10}`. Aparando as strings: `${var%suffix}` e `${var#prefix}`. Por exemplo, se `var=foo.pdf`, então `echo ${var%.pdf}.txt` imprime `foo.txt`. -- The output of a command can be treated like a file via `<(some command)`. For example, compare local `/etc/hosts` with a remote one: +- A saída de um comando pode ser trata como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` -- 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`. Muitas vezes, para garantir que um comando não deixa um arquivo aberto para manipular a entrada padrão, digitando isso no terminal que você está, é uma boa prática adicionar um ` 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 ``` -- 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 . *` para visualmente examinar todo o conteúdo de todos os arquivos de um diretório, por exemplo, para diretórios com arquivos de configurações, como `/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): +- Somar todos os números em uma terceira coluna de um arquivo de texto (isto é provavelmente 3X mais rápido e 3X menos linhas de código do que o equivalente em Python). ```sh 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`: +- Se você quer visualizar tamanhos/datas em uma árvore de arquivos, isto é como uma `ls -l` recursivo, mas é mais fácil de ler do que `ls -lR`: ```sh find . -type f -ls ``` -- Use `xargs` or `parallel` whenever you can. Note you can control how many items execute per line (`-L`) as well as parallelism (`-P`). If you're not sure if it'll do the right thing, use xargs echo first. Also, `-I{}` is handy. Examples: +- Utilize `xargs` ou `parallel` sempre que você puder. Note que você pode controlar quantos item é executado por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de que esta é a coisa certa a se fazer, utilize `xargs echo` primeiro. ```sh find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname ``` -- Say you have a text file, like a web server log, and a certain value that appears on some lines, such as an `acct_id` parameter that is present in the URL. If you want a tally of how many requests for each `acct_id`: +- Digamos que você tenha um arquivo de texto, como um log do servidor web, e um certo valor que aparece em algumas linhas, como por exemplo o parâmetro `acct_id` que está presente na URL. Se você quer um cálculo de quantas requisições para este `acct_id`. ```sh cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn ``` -- Run this function to get a random tip from this document (parses Markdown and extracts an item): +- Execute esta função para obter uma dica random deste documento (analisa a sintaxe Markdown e extrai um item) ```sh function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | @@ -303,31 +303,31 @@ A few examples of piecing together commands: ``` -## Obscure but useful +## Obscuros mas úteis -- `expr`: perform arithmetic or boolean operations or evaluate regular expressions +- `expr`: executa operações boleanas ou aritméticas ou avalia expressões regulares. -- `m4`: simple macro processor +- `m4`: simples processador de macros. -- `yes`: print a string a lot +- `yes`: imprime uma string muitas vezes. -- `cal`: nice calendar +- `cal`: calendário legal. -- `env`: run a command (useful in scripts) +- `env`: executa um comando (útil em scripts). -- `printenv`: print out environment variables (useful in debugging and scripts) +- `printenv`: imprime as variáveis de ambiente (útil em debug e scripts). -- `look`: find English words (or lines in a file) beginning with a string +- `look`: procura palavras Inglesas (ou linhas em um arquivo) começando com uma string. -- `cut `and `paste` and `join`: data manipulation +- `cut ` e `paste` e `join`: manipulação de dados. -- `fmt`: format text paragraphs +- `fmt`: formata parágrafos de texto. -- `pr`: format text into pages/columns +- `pr`: formata textos em páginas/colunas. -- `fold`: wrap lines of text +- `fold`: envolve linhas de texto. -- `column`: format text into columns or tables +- `column`: formata texto em colunas ou tabelas. - `expand` e `unexpand`: converte entre tabs e espaços. From fbdbd03c31153b923c6f5045ff7bc085d345e806 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:14:00 -0300 Subject: [PATCH 17/24] Fix links. --- README-pt.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-pt.md b/README-pt.md index 8ece63b..de7a909 100644 --- a/README-pt.md +++ b/README-pt.md @@ -4,14 +4,14 @@ # A arte da linha de comando - [Meta](#meta) -- [Básico](#basics) -- [Uso diário](#everyday-use) -- [Processamento de arquivos e dados](#processing-files-and-data) -- [Debugs do sistema](#system-debugging) +- [Básico](#basico) +- [Uso diário](#uso-diario) +- [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) +- [Debugs do sistema](#debugs-do-sistema) - [One-liners](#one-liners) -- [Obscuros mas úteis](#obscure-but-useful) -- [Mais conteúdo](#more-resources) -- [Aviso](#disclaimer) +- [Obscuros mas úteis](#obscuros-mas-uteis) +- [Mais conteúdo](#mais-conteudo) +- [Aviso](#aviso) ![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 2c722dc48f6604fc475a9a8296b85da8047e7bf5 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:16:43 -0300 Subject: [PATCH 18/24] Fix links. --- README-pt.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-pt.md b/README-pt.md index de7a909..fe31636 100644 --- a/README-pt.md +++ b/README-pt.md @@ -4,13 +4,13 @@ # A arte da linha de comando - [Meta](#meta) -- [Básico](#basico) -- [Uso diário](#uso-diario) +- [Básico](#básico) +- [Uso diário](#uso-diário) - [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) - [Debugs do sistema](#debugs-do-sistema) - [One-liners](#one-liners) -- [Obscuros mas úteis](#obscuros-mas-uteis) -- [Mais conteúdo](#mais-conteudo) +- [Obscuros mas úteis](#obscuros-mas-úteis) +- [Mais conteúdo](#mais-conteúdo) - [Aviso](#aviso) From 7e24ef1e7b7cdc46d54cd466928e3b83cf9ae0d1 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 11:45:48 -0300 Subject: [PATCH 19/24] Translate 55% of the text --- README-pt.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README-pt.md b/README-pt.md index fe31636..c24e2bf 100644 --- a/README-pt.md +++ b/README-pt.md @@ -41,7 +41,7 @@ Notas: ## Básico -- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). - Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). @@ -217,17 +217,17 @@ Notas: - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. -## System debugging +## Debugando o sistema -- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). +- Para web debug, `curl` e `curl -I` são úteis, ou os equivalentes `wget`, or uma alternativa mais moderna [`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. +- Para saber o status do disco/cpu/rede, use `iostat`, `netstat`, `top` (ou o `htop` como alternativa melhor), e (especialmente) `dstat`. Bom para obter uma ideia rápida do que está acontecendo em um sistema. -- 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. +- Para um resumo mais aprofundado do sistema, use [`glances`](https://github.com/nicolargo/glances). Este lhe apresenta vários níveis de estatísticas do sistema em uma janela do terminal. Muito útil para uma rápida verificação em vários subsistemas. -- 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. +- Para saber o status da memória, execute e entenda a saída do `free` `vmstat`. Em particular, esteja ciente de que o valor "cached", é mantido pelo kernel Linux como um arquivo de cache, então este efetivamente conta como um valor de memória disponível. -- 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. +- Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. - Use `mtr` as a better traceroute, to identify network issues. From ece99bd2e541f46e877298b1c9763d7785334ed4 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 23:49:17 -0300 Subject: [PATCH 20/24] Translate 95% of the text. #130 --- README-pt.md | 105 ++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/README-pt.md b/README-pt.md index c24e2bf..370ba02 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,5 @@ [ Languages: [中文](README-zh.md) ] + [ Languages: [Portuguese](README-pt.md) ] # A arte da linha de comando @@ -68,7 +69,7 @@ Notas: - No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. -- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-*** expande um glob. *** +- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-** expande um glob. - Como alternativa, se você ama os keybinds ao estilo do vi, use `set -o vi`. @@ -122,7 +123,7 @@ Notas: - No ssh, saber como realizar um túnel de portas com `-L` ou `-D` (e ocasionalmente `-R`) é útil, para por exemplo acessar sites webs de um servidor remoto. -- 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, use compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file: +- Pode ser útil realizar algumas otimizações em suas configurações do ssh; por exemplo, o arquivo `~/.ssh/config` contém configurações para evitar que conexões sejam dropadas em certos ambientes de rede, use compressão (muito útil quando se está usando o scp através de uma conexão lenta), e multiplexação de canais do mesmo servidor com um arquivo de controle local: ``` TCPKeepAlive=yes ServerAliveInterval=15 @@ -133,88 +134,88 @@ Notas: ControlPersist yes ``` -- 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` +- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam serem habilitadas com cuidado, por exemplo por sub rede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` -- 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 +- Para conseguir as permissões em arquivo em forma octal, o qual é útil para as configurações do sistema mas não disponível no `ls` e fácil de se confundir, use algo como: ```sh stat -c '%A %a %n' /etc/timezone ``` -- For interactive selection of values from the output of another command, use [`percol`](https://github.com/mooz/percol). +- Para seleção interativas de valores da saída de outro comando, use [`percol`](https://github.com/mooz/percol). -- For interaction with files based on the output of another command (like `git`), use `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). +- Para interação com arquivos baseados na saída de outro comando (like `git`), use `fpp` ([PathPicker](https://github.com/facebook/PathPicker)). -- 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). +- Para um simples servidor web para todos os arquivos do diretório atual (e subdiretórios), disponível para alguém na sua rede, use: +`python -m SimpleHTTPServer 7777` (para a porta 7777 e Python 2) e `python -m http.server 7777` (para a porta 7777 e Python 3). -## Processing files and data +## Processamento de arquivos e dados -- 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). +- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente `updatedb` pode não ter indexado arquivos criados recentemente). -- For general searching through source or data files (more advanced than `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). +- Para uma busca mais geral através de arquivos de dados ou de códigos (mais avançado do que `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). -- To convert HTML to text: `lynx -dump -stdin` +- Para converter HTML para texto: `lynx -dump -stdin`. -- For Markdown, HTML, and all kinds of document conversion, try [`pandoc`](http://pandoc.org/). +- Para Markdown, HTML, e todos os demais tipos de conversão de documentos, tente [`pandoc`](http://pandoc.org/). -- If you must handle XML, `xmlstarlet` is old but good. +- Se você precisa manipular XML, `xmlstarlet` é antigo mas é bom. -- For JSON, use `jq`. +- Para JSON, `jq`. -- For Excel or CSV files, [csvkit](https://github.com/onyxfish/csvkit) provides `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, etc. +- Para Excel ou arquivos CSV, [csvkit](https://github.com/onyxfish/csvkit) que provê `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. +- Para a Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) é uma forma conveniente e [`s4cmd`](https://github.com/bloomreach/s4cmd) é mais rápido. O [`aws`](https://github.com/aws/aws-cli) da amazon é essencial para outras tarefas relacionadas. -- Know about `sort` and `uniq`, including uniq's `-u` and `-d` options -- see one-liners below. See also `comm`. +- Aprenda a respeito do `sort` e `uniq`, incluindo as opções do `-u` e `-d` do `uniq` -- veja os one-liners abaixo. Veja também `comm`. -- Know about `cut`, `paste`, and `join` to manipulate text files. Many people use `cut` but forget about `join`. +- Aprenda a respeito do `cut`, `paste`, e `join` para manipular arquivos de texto. Muitas pessoas usam `cut` mas esquecem do `join`. -- Know about `wc` to count newlines (`-l`), characters (`-m`), words (`-w`) and bytes (`-c`). +- Aprenda a respeito do `wc` para contar novas linhas (`-l`), caracteres (`-m`), palavras (`-m`) e bytes (`-c`). -- Know about `tee` to copy from stdin to a file and also to stdout, as in `ls -al | tee file.txt`. +- Aprenda a respeito do `tee` para copiar da entrada padrão (stdin) para um arquivo e também para a saída padrão (stdout), como no `ls -al | tee file.txt`. -- 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`. +- Aprenda que as configurações de localização afetam um várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n oide fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. -- 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. +- Aprenda o básico sobre `awk` e `sed` para obtenção de informações simples de dados. Por exemplo, somar todos os números na terceira coluna de um arquivo de texto: `awk '{ x += $3 } END { print x }'`. Isto é provavelmente 3X mais rápido e 3X mais curto do que o equivalente em Python. -- To replace all occurrences of a string in place, in one or more files: +- Para substituir todas as ocorrências de uma string em um lugar, em um ou mais arquivos: ```sh 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. +- Para renomear muitos arquivos de uma vez, de acordo com um padrão, use `rename`. Para renomeações mais complexas, [`repren`](https://github.com/jlevy/repren) pode ajudar. ```sh - # Recover backup files foo.bak -> foo: + # Recuperar arquivos de backup foo.bak -> foo: rename 's/\.bak$//' *.bak - # Full rename of filenames, directories, and contents foo -> bar: + # Renomea completamente o nome dos arquivos, diretórios, e outros conteúdos foo -> bar: repren --full --preserve-case --from foo --to bar . ``` -- Use `shuf` to shuffle or select random lines from a file. +- Utilize o `shuf` para embaralhar ou selecionar linhas randoms de um arquivo. -- Know `sort`'s options. 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. +- Para as opções do `sort`. Aprenda com as chaves (`-t` e `-k`). Em particular, saiba que precisa escrever `-k1,1` para ordenar somente o primeiro campo; `-k1` significa ordenar de acordo com a linha inteira. -- 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` +- Ordenação estável (`sort -s`) pode ser útil. Por exemplo, para ordenar primeiramente pelo campo 2, então secundariamente pelo campo 1, você pode usar `sort -k1,1 | sort -s -k2,2`. -- 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). +- Se você precisa escrever literalmente um tab na linha de comando no Bash (por exemplo, para o argumento -t do `sort`), pressione **ctrl-v** **[Tab]** ou escreva `$'\t'` (o último é melhor pois você pode copiar e colar ele). -- 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. +- As ferramentas padrão para extrair patches de códigos fonte são `diff`e `patch`. Veja também `diffstat` para um resumo de estatísticas de um diff. Note que `diff -r` funciona para diretórios inteiros. Use `diff -r tree1 tree2 | diffstat` para um resumo das alterações. -- For binary files, use `hd` for simple hex dumps and `bvi` for binary editing. +- Para arquivos binários, use `hd` para um simples dump hexadecimal e `bvi` para edição binária. -- Also for binary files, `strings` (plus `grep`, etc.) lets you find bits of text. +- Também para arquivos binários, `strings` (mais `grep`, etc.) deixa você encontrar pedaços de texto. -- For binary diffs (delta compression), use `xdelta3`. +- Para diffs binários (compressão delta), use `xdelta3.` -- To convert text encodings, try `iconv`. Or `uconv` for more advanced use; it supports some advanced Unicode things. For example, this command lowercases and removes all accents (by expanding and dropping them): +- Para converter a codificação de textos, tente `iconv`. Ou `uconv` para uso mais avançado; Este suporta algumas funcionalidades avançadas do Unicode. Por exemplo, este comando transforma o texto para minúsculo e remove todos os acentos (expandindo e removendo eles): ```sh uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt ``` -- To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). +- Para dividir um arquivo em pedaços, veja `split` (para dividir por tamanho) e `csplit` (para dividir por um padrão). -- Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. +Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. ## Debugando o sistema @@ -229,31 +230,31 @@ Notas: - Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. -- Use `mtr` as a better traceroute, to identify network issues. +- Use `mtr` como um melhor alternativa ao traceroute, para identificar problemas na rede. -- For looking at why a disk is full, `ncdu` saves time over the usual commands like `du -sh *`. +- Para verificar o porque de um disco está cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais com `du -sh *`. -- To find which socket or process is using bandwidth, try `iftop` or `nethogs`. +- Para procurar qual socket ou processo está utilizando a banda de rede, tente `iftop` ou `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`. +- 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`. -- For more serious network debugging, `wireshark`, `tshark`, or `ngrep`. +- Para debugs mais sérios da rede, `wireshark`, `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`). +- Aprenda a respeito do `strace`e `ltrace`. Estes podem serem ú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`). -- Know about `ldd` to check shared libraries etc. +- Aprenda a respeito do `ldd` para verificar bibliotecas compartilhadas, e etc. -- Know how to connect to a running process with `gdb` and get its stack traces. +- Aprenda sobre como se contar a um processo em execução com o `gdb` e obter informações sobre a stack trace. -- Use `/proc`. It's amazingly helpful sometimes when debugging live problems. Examples: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. +- Utilize `/proc`. Este é incrivelmente útil em algumas vezes quando se deseja debugar problemas vivos. Exemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. -- When debugging why something went wrong in the past, `sar` can be very helpful. It shows historic statistics on CPU, memory, network, etc. +- Quando estiver debugando o porque de algo ter dado errado no passado, `sar` pode ser de muita utilidade. Este exibe as estatísticas históricas da CPU, memória, rede e 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). +- 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). -- Confirm what Linux distribution you're using (works on most distros): `lsb_release -a` +- Confirme qual a sua distribuição do Linux usando (funciona na maioria das distros): `lsb_release -a`. -- Use `dmesg` whenever something's acting really funny (it could be hardware or driver issues). +- Use `dmesg` sempre que algo estiver de maneira estranha (isto poderia ser um hardware ou problemas de driver). ## One-liners @@ -447,4 +448,4 @@ Com a exceção de tarefas muito pequenas, o código é escrito de modo que outr [![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) -This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). +Este trabalho está licenciado sobre uma [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From ecefdf52b9b78f14afe134bc5462e5504d310dc5 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sat, 27 Jun 2015 23:53:42 -0300 Subject: [PATCH 21/24] Fix languages section. --- README-pt.md | 3 +-- README.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README-pt.md b/README-pt.md index 370ba02..93b1996 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,6 +1,5 @@ -[ Languages: [中文](README-zh.md) ] +[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] -[ Languages: [Portuguese](README-pt.md) ] # A arte da linha de comando diff --git a/README.md b/README.md index d546670..81c2521 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -[ Languages: [中文](README-zh.md) ] -[ Languages: [Portuguese](README-pt.md) ] +[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] # The Art of Command Line From 7e05a320c1b9490166d54da6481c6dcbecb8d8ab Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sun, 28 Jun 2015 10:49:19 -0300 Subject: [PATCH 22/24] Translate 100% of the text. Minor improves. #130 --- README-pt.md | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/README-pt.md b/README-pt.md index 93b1996..07eb54e 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,4 @@ -[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] +[ Languages: [English](README.md), [中文](README-zh.md), [Portuguese](README-pt.md)] # A arte da linha de comando @@ -7,7 +7,7 @@ - [Básico](#básico) - [Uso diário](#uso-diário) - [Processamento de arquivos e dados](#processamento-de-arquivos-e-dados) -- [Debugs do sistema](#debugs-do-sistema) +- [Debugando o sistema](#debugs-do-sistema) - [One-liners](#one-liners) - [Obscuros mas úteis](#obscuros-mas-úteis) - [Mais conteúdo](#mais-conteúdo) @@ -16,46 +16,46 @@ ![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) -Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui tem bastante conhecimento. +Fluência na linha de comando é uma skill muitas vezes negligenciada ou considerada obsoleta, porém ela aumenta sua flexibilidade e produtividade como um *desenvolvedor*. Este texto descreve uma selação de notas e dicas de uso da linha de comando que eu tenho encontrado muita utilidade usando o Linux. Algumas dicas são elementares, e algumas são mais específicas, sofisticadas ou obscuras. Esta página não é tão longa, mas se você puder usar e relembrar todos os items que estão aqui, então você possui bastante conhecimento. Mais sobre isso [originalmente](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [apareceu](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) no [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), -mas dado o interesse lá, então parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) +mas dado o interesse lá, então me parece que é importante usar o Github, onde pessoas mais talentosas do que eu, prontamente podem sugerir melhorias. Se você ver um erro ou algo que poderia ser melhorado, por favor abra uma issue ou um PR! (E claro, por favor revise as meta sections e PRs/issues existentes primeiro.) ## Meta Escopo: -- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *breadth* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais or digressões que vou pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. -- Este guia é escrito para o Linux. Muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). -- O foco está na interatividade no Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. -- Este inclui tanto comandos Unix "padrão", como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. +- Este guia é destinado tanto para iniciantes como para usuários mais experientes. Os objetivos são *generalização* (tudo de importante), *aprofundamento* (dar exemplos concretos dos casos de uso mais comuns), e *brevidade* (evitar coisas que não são tão essenciais ou digressões que você pode facilmente encontrar por aí). Todas as dicas são essenciais em alguma situação ou trazem uma economia notável de tempo em relação a outras alternativas. +- Este guia é escrito para o Linux. Porém muitos, mas não todos os items se aplicam igualmente para o MacOS (ou mesmo o Cygwin). +- O foco está na interatividade com o Bash, embora muitas dicas aqui são aplicadas para outros shells e em geral para Bash script. +- Este inclui tanto comandos no "padrão" Unix, como comandos que requerem instalação de pacotes adicionais -- tanto quanto estes sejam importantes o suficiente para merecerem sua inclusão. Notas: -- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou siga para o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. -- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre comandos, opções, pipes e etc. faz. +- Para manter este guia em uma página, o conteúdo implícito será incluído por referência. Você é experto o suficiente para verificar mais detalhes em outros lugares, uma vez que você já tenha entendido a ideia ou caso contrário não exite em usar o Google. Use `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (como adequado) para instalar novos programas. +- Use [Explainshell](http://explainshell.com/) para encontrar informações úteis sobre o que faz os comandos, opções, pipes e etc. ## Básico -- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, é enquanto tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). +- Aprenda o básico sobre Bash. Atualmente, digite `man bash` e pelo menos entenda superficialmente o seu funcionamento; é bastante simples de ler e nem é tão grande assim. Shells alternativos podem serem legais, mas o Bash é mais poderoso e sempre estar disponível (aprendendo *somente* zsh, fish, etc, enquanto é tentador no seu próprio notebook, restringe você em muitas situações, como ao usar servidores existentes). -- Aprenda pelo menos um editor text-base bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). +- Aprenda pelo menos um editor baseado em texto bem. Idealmente o Vim (`vi`), como não existe nenhuma competição aleatória de edição em um terminal ( mesmo se você usa o Emacs, uma grande IDE, ou um moderno editor hipster a maioria do tempo). -- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim builins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. +- Saiba como ler a documentação com o `man` (por curiosidade, `man man` lista os números das seções, exemplo. 1 se refere aos comandos "regular", 5 é sobre arquivos/convenções, e 8 se diz respeito a administração). Procure outras documentos do man com o `apropos`. Saiba que alguns dos comandos não são executáveis, mas sim built-ins(embutidos) no bash, os quais você poderá conseguir ajuda com `help` e `help -d`. - Aprenda a respeito do redirecionamento da saída e entrada usando `>` e `<` e pipes usando `|`. Aprenda sobre o stdout e stdin. -- Aprenda sobre a expensão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) and quoting and the difference entre aspas duplas `"` e aspas simples `'`. (Veja mais em expansões de variáveis abaixo.) +- Aprenda sobre a expansão de arquivos glob com `*` ( e talvez `?` e `{`...`}`) e entendendo as diferenças entre aspas duplas `"` e aspas simples `'`. (Veja mais em variáveis de expansão abaixo.) - Esteja familiar com o gerenciamento de jobs no Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, etc. - Aprenda `ssh`, e o básico de autenticação sem senha, através do `ssh-agent`, `ssh-add`, etc. -- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` and `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versus hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Gerenciamento básico de arquivos: `ls` e `ls -l` (em particular, aprenda o que cada coluna significa no `ls -l` significa), `less`, `head`, `tail` e `tail -f` (ou ainda melhor, `less +F`), `ln` e `ln -s`(aprenda as diferenças e vantagens de soft links versos hard links), `chown`, `chmod`, `du` (para um rápido resumo do uso do disco: `du -sk *`). Para gerenciamento do sistema de arquivos, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Gerenciamento básico da rede: `ip` ou `ifconfig`, `dig`. @@ -76,9 +76,9 @@ Notas: - Volte atrás para o diretório de trabalho anterior: `cd -`. -- Se você estar na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Você pode então recuperar o comando mais tarde através do histórico de comandos. +- Se você está na metade do caminho ao digitar um comando, mas mudou de ideia, tecle **alt-#** para adicionar um `#` ao início e defina este como um comentário (ou use **ctrl-a**. **#**. **enter**). Mais tarde você poderá recuperar o comando através do `history`. -- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza de isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: +- Use `xargs` (ou `parallel`). Estes são muito poderosos. Note que você pode controlar como os vários items são executados por linha (`-L`) assim como o paralelismo (`-P`). Se você não tem certeza se isto é a coisa certa a se fazer, use `xargs echo` primeiro. O `-I{}` também é muito útil. Exemplos: ```bash find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname @@ -96,7 +96,7 @@ Notas: - Veja também `lsof` para abrir sockets e arquivos. -- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` como também, para ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. +- Em scripts Bash, use `set -x` para debugar a saída. Utilize modos estritos sempre que for possível. Use `set -e` para abortar em caso de erros. Use `set -o pipefail` para também ser restrito a respeito dos erros (embora este tópico seja um pouco sútil). Para scripts mais desenvolvidos, use também `trap`. - Em Bash scripts, subshells (escrito com parênteses) são formas convenientes de agrupar comandos. Um exemplo comum é temporariamente mover para um diretório de trabalho diferente, e.g. ```bash @@ -107,7 +107,7 @@ Notas: - No Bash, note que existem muitos tipos de variáveis de expansão. Verificando a existência de uma variável: `${name:?error_messages}`. Por exemplo, se um script Bash requer um único argumento, apenas escreva `input_file=${1:?usage: $0 input_file}`. Expansões aritméticas: `i=$(( (i + 1) % 5 ))`. Sequências: `{1..10}`. Aparando as strings: `${var%suffix}` e `${var#prefix}`. Por exemplo, se `var=foo.pdf`, então `echo ${var%.pdf}.txt` imprime `foo.txt`. -- A saída de um comando pode ser trata como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: +- A saída de um comando pode ser tratada como um arquivo através `<(algum comando)`. Por exemplo, comparar um arquivo local `/etc/hosts` com um remoto: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` @@ -118,7 +118,7 @@ Notas: - Use `man ascii` para visualizar a tabela ASCII, com valores hexadecimais e decimais. Para informações gerais sobre codificações, `man unicode`, `man utf-8`, e `man latin1` são úteis. -- Use `screen` ou [`tmux`](https://tmux.github.io/) para multiplexar as telas, especialmente útil em sessões ssh remotas e para desanexar e reanexar a uma sessão. Uma alternativa mais simples para a persistência de uma sessão é `dtach`. +- Use `screen` ou [`tmux`](https://tmux.github.io/) para multiplexar as telas, especialmente útil em sessões ssh remotas e para desplugar e replugar a uma sessão. Uma alternativa mais simples para a persistência de uma sessão é `dtach`. - No ssh, saber como realizar um túnel de portas com `-L` ou `-D` (e ocasionalmente `-R`) é útil, para por exemplo acessar sites webs de um servidor remoto. @@ -133,7 +133,7 @@ Notas: ControlPersist yes ``` -- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam serem habilitadas com cuidado, por exemplo por sub rede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` +- Algumas outras opções relevantes para o ssh são sensíveis a segurança e deveriam ser habilitadas com cuidado, por exemplo para subrede ou host ou em redes confiáveis: `StrictHostKeyChecking=no`, `ForwardAgent=yes` - Para conseguir as permissões em arquivo em forma octal, o qual é útil para as configurações do sistema mas não disponível no `ls` e fácil de se confundir, use algo como: ```sh @@ -150,7 +150,7 @@ Notas: ## Processamento de arquivos e dados -- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente `updatedb` pode não ter indexado arquivos criados recentemente). +- Para localizar um arquivo pelo nome no diretório atual, `find . -iname '*something*'` (ou similar). Para procurar um arquivo em qualquer lugar pelo nome, use `locate something` (mas tenha em mente que o `updatedb` pode não ter indexado arquivos criados recentemente). - Para uma busca mais geral através de arquivos de dados ou de códigos (mais avançado do que `grep -r`), use [`ag`](https://github.com/ggreer/the_silver_searcher). @@ -174,7 +174,7 @@ Notas: - Aprenda a respeito do `tee` para copiar da entrada padrão (stdin) para um arquivo e também para a saída padrão (stdout), como no `ls -al | tee file.txt`. -- Aprenda que as configurações de localização afetam um várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n oide fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. +- Aprenda que as configurações de localização afetam várias ferramentas da linha de comando em formas sutis, incluindo a ordem da ordenação e performance. A maioria das instalações do Linux irá definir `LANG` ou outras variáveis de localização para o US English. Mas esteja ciente de que a ordem da ordenação irá mudar, caso você altere a localização. E saiba que as rotinas do i18n podem fazer o `sort` ou outros comandos executarem *muitas vezes* mais lentos. Em algumas situações (como o conjunto de operações ou as operações únicas abaixo) você pode seguramente ignorar a lentidão das rotinas do i18n inteiramente e usar a ordem baseada nos bytes, usando `export LC_ALL=C`. - Aprenda o básico sobre `awk` e `sed` para obtenção de informações simples de dados. Por exemplo, somar todos os números na terceira coluna de um arquivo de texto: `awk '{ x += $3 } END { print x }'`. Isto é provavelmente 3X mais rápido e 3X mais curto do que o equivalente em Python. @@ -227,23 +227,23 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Para saber o status da memória, execute e entenda a saída do `free` `vmstat`. Em particular, esteja ciente de que o valor "cached", é mantido pelo kernel Linux como um arquivo de cache, então este efetivamente conta como um valor de memória disponível. -- Debugar um sistema java é uma "kettle of fish", mas um simples truque nas máquinas virtuais Oracle e algum outro tipo de JVM é que você pode executar `kill -3 ` e um completo rastreamento da pilha(stack trace) e resumo da heap (incluindo detalhes geracionais do garbage collector, os quais podem serem altamente informativos) serão vazados para stderr/logs. +- Debugar um sistema java é uma "kettle of fish", 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 da heap (incluindo detalhes geracionais do garbage collector, os quais podem ser altamente informativos) serão vazados para stderr/logs. -- Use `mtr` como um melhor alternativa ao traceroute, para identificar problemas na rede. +- Use `mtr` como uma melhor alternativa ao traceroute, para identificar problemas na rede. -- Para verificar o porque de um disco está cheio, `ncdu` economiza bastante tempo em comparação aos comandos usuais com `du -sh *`. +- 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`. - 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`, or `ngrep`. +- Para debugs mais sérios da rede, `wireshark`, `tshark`, ou `ngrep`. -- Aprenda a respeito do `strace`e `ltrace`. Estes podem serem ú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`). +- 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`). - Aprenda a respeito do `ldd` para verificar bibliotecas compartilhadas, e etc. -- Aprenda sobre como se contar a um processo em execução com o `gdb` e obter informações sobre a stack trace. +- Aprenda sobre como se conectar a um processo em execução com o `gdb` e obter informações sobre a stack trace. - Utilize `/proc`. Este é incrivelmente útil em algumas vezes quando se deseja debugar problemas vivos. Exemplos: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`. @@ -253,14 +253,14 @@ Use `zsless`, `zmore`, `zcat`, and `zgrep` para manipular arquivos comprimidos. - Confirme qual a sua distribuição do Linux usando (funciona na maioria das distros): `lsb_release -a`. -- Use `dmesg` sempre que algo estiver de maneira estranha (isto poderia ser um hardware ou problemas de driver). +- Use `dmesg` sempre que algo estiver agindo de maneira estranha (isto poderia ser um hardware ou problemas de driver). ## One-liners Alguns exemplos de como reunir os comandos. -- É notavelmente útil algumas vezes, que você quer obter a interseção, união e a diferença de arquivos de texto através de `sort`/`uniq`. Suponha que `a` e `b` são arquivos de texto que são únicos. Desde modo é rápido, e funciona em arquivos de tamanhos arbitrários, podem até possuírem gigabytes. (Ordenação não é limitada por memória, embora você possa precisar usar a opção `-T` se `/tmp` está em uma partição pequena.) Veja também a nota sobre `LC_ALL` a cima es opções `-u` do `sort`(vamos deixar isso claro abaixo). +- É notavelmente útil algumas vezes, que você quer obter a interseção, união e a diferença de arquivos de texto através de `sort`/`uniq`. Suponha que `a` e `b` são arquivos de texto que são únicos. Desse modo é rápido, e funciona em arquivos de tamanhos arbitrários, podem até possuírem gigabytes. (Ordenação não é limitada por memória, embora você possa precisar usar a opção `-T` se `/tmp` está em uma partição pequena.) Veja também a nota sobre `LC_ALL` a cima e as opções `-u` do `sort`(vamos deixar isso claro abaixo). ```sh cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b @@ -294,7 +294,7 @@ Alguns exemplos de como reunir os comandos. - Execute esta função para obter uma dica random deste documento (analisa a sintaxe Markdown e extrai um item) ```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-pt.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]" | @@ -345,7 +345,7 @@ Alguns exemplos de como reunir os comandos. - `nc`: ferramenta de debug de rede e transferência de dados. -- `socat`: socket relay e portas encaminhamento de portas tcp (similar ao `netcat`) +- `socat`: socket relay e encaminhamento de portas tcp (similar ao `netcat`) - `slurm`: visualização do tráfego da rede. @@ -369,9 +369,9 @@ Alguns exemplos de como reunir os comandos. - `strings`: extrai texto de arquivos binários. -- `tr`: tradução manipulação de caracteres. +- `tr`: tradução e manipulação de caracteres. -- `iconv` ou `uconv`: conversor de codificações de text. +- `iconv` ou `uconv`: conversor de codificações de texto. - `split ` e `csplit`: divisão de arquivos. @@ -387,7 +387,7 @@ Alguns exemplos de como reunir os comandos. - `strace`: Debug para chamadas de sistema. -- `mtr`: melhor tracerout para debugar a rede. +- `mtr`: melhor traceroute para debugar a rede. - `cssh`: Visualização concorrente do shell. @@ -419,7 +419,7 @@ Alguns exemplos de como reunir os comandos. - `iftop` ou `nethogs`: Utilização da rede por sockets ou processos. -- `ss`: Statísticas dos sockets. +- `ss`: Estatísticas dos sockets. - `dmesg`: Mensagens de erro do sistema e do boot. @@ -427,7 +427,7 @@ Alguns exemplos de como reunir os comandos. - `lsb_release`: Informações sobre a distribuição do Linux. -- `lsblk`: Lista os blocos dos dispositivos: uma visualização é forma de árvore dos seus discos e partições do disco. +- `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. @@ -440,7 +440,7 @@ Alguns exemplos de como reunir os comandos. ## Aviso -Com a exceção de tarefas muito pequenas, o código é escrito de modo que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) +Com a exceção de tarefas muito pequenas, o código é escrito para que outros possam ler. Junto com o poder vem a responsabilidade. O fato de você *poder* fazer algo no Bash não necessariamente significa que você deve! ;) ## Licença From 344c34f10652ac0d4f5772fd987a50bf311fc1ae Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sun, 28 Jun 2015 10:59:05 -0300 Subject: [PATCH 23/24] =?UTF-8?q?Change=20portuguese=20to=20portugu=C3=AAs?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-pt.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-pt.md b/README-pt.md index 07eb54e..435355c 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [中文](README-zh.md), [Portuguese](README-pt.md)] +[ Languages: [English](README.md), [中文](README-zh.md), [Português](README-pt.md)] # A arte da linha de comando diff --git a/README.md b/README.md index 81c2521..e217f03 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [中文](README-zh.md), [Portuguese](README-pt.md)] +[ Languages: [中文](README-zh.md), [Português](README-pt.md)] # The Art of Command Line From f6e00638e65f72179a3cf1c337809c79fea70af1 Mon Sep 17 00:00:00 2001 From: Nilton Vasques Date: Sun, 28 Jun 2015 11:01:02 -0300 Subject: [PATCH 24/24] Fix glob shortcut. --- README-pt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-pt.md b/README-pt.md index 435355c..bbc628c 100644 --- a/README-pt.md +++ b/README-pt.md @@ -68,7 +68,7 @@ Notas: - No Bash, use **Tab** para completar argumentos e **ctrl-r** para pesquisar através do histórico de comandos. -- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-** expande um glob. +- No Bash, utilize **ctrl-w** para deletar a última palavra, e **ctrl-u** para deletar tudo e voltar para o início da linha. Use **alt-b** e **alt-f** para se mover por palavras, **ctrl-k** para apagar até o final da linha, **ctrl-l** para limpar a tela. Consulte `man readline` para todos os keybindings padrões do Bash. Existem muitos. Por exemplo **alt-.** circula através dos argumentos anteriores, e **alt-*** expande um glob. - Como alternativa, se você ama os keybinds ao estilo do vi, use `set -o vi`.