zoukankan      html  css  js  c++  java
  • Bash Redirections Cheat Sheet

    .---------------------------------------------------------------------------.
    |                                                                           |
    |                      Bash Redirections Cheat Sheet                        |
    |                                                                           |
    +---------------------------------------------------------------------v1.08-+
    |                                                                           |
    | Created by Peter Krumins (peter@catonmat.net, @pkrumins on twitter)       |
    | www.catonmat.net -- good coders code, great coders reuse                  |
    |                                                                           |
    +-----------------------------.---------------------------------------------+
    | Redirection                 | Description                                 |
    '-----------------------------'---------------------------------------------'
    | cmd > file                  | Redirect the standard output (stdout) of    |
    |                             | `cmd` to a file.                            |
    +-----------------------------'---------------------------------------------'
    | cmd 1> file                 | Same as `cmd > file`. 1 is the default file |
    |                             | descriptor for stdout.                      |
    +-----------------------------'---------------------------------------------'
    | cmd 2> file                 | Redirect the standard error (stderr) of     |
    |                             | `cmd` to a file. 2 is the default file      |
    |                             | descriptor for stderr.                      |
    +-----------------------------'---------------------------------------------'
    | cmd >> file                 | Append stdout of `cmd` to a file.           |
    +-----------------------------'---------------------------------------------'
    | cmd 2>> file                | Append stderr of `cmd` to a file.           |
    +-----------------------------'---------------------------------------------'
    | cmd &> file                 | Redirect stdout and stderr to a file.       |
    +-----------------------------'---------------------------------------------'
    | cmd > file 2>&1             | Another way to redirect both stdout and     |
    |                             | stderr of `cmd` to a file. This *is not*    |
    |                             | same as `cmd 2>&1 > file`.                  |
    |                             | Redirection order matters!                  |
    +-----------------------------'---------------------------------------------'
    | cmd > /dev/null             | Discard stdout of `cmd`.                    |
    +-----------------------------'---------------------------------------------'
    | cmd 2> /dev/null            | Discard stderr of `cmd`.                    |
    +-----------------------------'---------------------------------------------'
    | cmd &> /dev/null            | Discard stdout and stderr.                  |
    +-----------------------------'---------------------------------------------'
    | cmd < file                  | Redirect the contents of the file to the    |
    |                             | stdin of `cmd`.                             |
    +-----------------------------'---------------------------------------------'
    | cmd << EOL                  |                                             |
    | foo                         | Redirect a bunch of lines to the stdin.     |
    | bar                         | If 'EOL' is quoted, text is treated         |
    | baz                         | literally. This is called a here-document.  |
    | EOL                         |                                             |
    +-----------------------------'---------------------------------------------'
    | cmd <<- EOL                 |                                             |
    | <tab>foo                    | Redirect a bunch of lines to the stdin.     |
    | <tab><tab>bar               | The <tab>'s are ignored but not the         |
    | EOL                         | whitespace. Helpful for formatting.         |
    +-----------------------------'---------------------------------------------'
    | cmd <<< "string"            | Redirect a single line of text to stdin.    |
    |                             | This is called a here-string.               |
    +-----------------------------'---------------------------------------------'
    | exec 2> file                | Redirect stderr of all commands to a file   |
    |                             | forever.                                    |
    +-----------------------------'---------------------------------------------'
    | exec 3< file                | Open a file for reading using a custom fd.  |
    +-----------------------------'---------------------------------------------'
    | exec 3> file                | Open a file for writing using a custom fd.  |
    +-----------------------------'---------------------------------------------'
    | exec 3<> file               | Open a file for reading and writing using   |
    |                             | a custom file descriptor.                   |
    +-----------------------------'---------------------------------------------'
    | exec 3>&-                   | Close a file descriptor.                    |
    +-----------------------------'---------------------------------------------'
    | exec 4>&3                   | Make file descriptor 4 to be a copy of file |
    |                             | descriptor 3. (Copy fd 3 to 4.)             |
    +-----------------------------'---------------------------------------------'
    | exec 4>&3-                  | Copy file descriptor 3 to 4 and close fd 3  |
    +-----------------------------'---------------------------------------------'
    | echo "foo" >&3              | Write to a custom file descriptor.          |
    +-----------------------------'---------------------------------------------'
    | cat <&3                     | Read from a custom file descriptor.         |
    +-----------------------------'---------------------------------------------'
    | (cmd1; cmd2) > file         | Redirect stdout from multiple commands to a |
    |                             | file (using a sub-shell).                   |
    +-----------------------------'---------------------------------------------'
    | { cmd1; cmd2; } > file      | Redirect stdout from multiple commands to a |
    |                             | file (faster; not using a sub-shell).       |
    +-----------------------------'---------------------------------------------'
    | exec 3<> /dev/tcp/host/port | Open a TCP connection to host:port.         |
    +-----------------------------'---------------------------------------------'
    | exec 3<> /dev/udp/host/port | Open a UDP connection to host:port.         |
    +-----------------------------'---------------------------------------------'
    | cmd <(cmd1)                 | Redirect stdout of `cmd1` to an anonymous   |
    |                             | fifo, then pass the fifo to `cmd` as an     |
    |                             | argument. Useful when `cmd` doesn't read    |
    |                             | from stdin directly.                        |
    +-----------------------------'---------------------------------------------'
    | cmd < <(cmd1)               | Redirect stdout of `cmd1` to an anonymous   |
    |                             | fifo, then redirect the fifo to stdin of    |
    |                         ____' `cmd`. Best example:                        |
    |                        | diff <(find /path1 | sort) <(find /path2 | sort) |
    +------------------------'----.---------------------------------------------'
    | cmd <(cmd1) <(cmd2)         | Redirect stdout of `cmd1` `cmd2` to two     |
    |                             | anonymous fifos, then pass both fifos as    |
    |                             | arguments to verb|cmd|.                    |
    +-----------------------------.---------------------------------------------'
    | cmd1 >(cmd2)                | Run `cmd2` with its stdin connected to an   |
    |                             | anonymous fifo, and pass the filename of    |
    |                             | the pipe as an argument to `cmd1`.          |
    +-----------------------------.---------------------------------------------'
    | cmd1 | cmd2                 | Redirect stdout of cmd1 to stdin of `cmd2`. |
    |                             | Pro-tip: This is the same as                |
    |                             | `cmd1 > >(cmd2)`, same as `cmd2 < <(cmd1)`, |
    |                             | same as `> >(cmd2) cmd1`, same as           |
    |                             | `< <(cmd1) cmd2`.                           |
    +-----------------------------'---------------------------------------------'
    | cmd1 |& cmd2                | Redirect stdout and stderr of `cmd1` to     |
    |                             | stdin of `cmd2` (bash 4.0+ only).           |
    |                             | Use `cmd1 2>&1 | cmd2` for older bashes.    |
    +-----------------------------'---------------------------------------------'
    | cmd | tee file              | Redirect stdout of `cmd` to a file and      |
    |                             | print it to screen.                         |
    +-----------------------------'---------------------------------------------'
    | exec {filew}> file          | Open a file for writing using a named file  |
    |                             | descriptor called `{filew}` (bash 4.1+)     |
    +-----------------------------'---------------------------------------------'
    | cmd 3>&1 1>&2 2>&3          | Swap stdout and stderr of `cmd`.            |
    +-----------------------------'---------------------------------------------'
    | cmd > >(cmd1) 2> >(cmd2)    | Send stdout of `cmd` to `cmd1` and stderr   |
    |                             | `cmd` to `cmd2`.                            |
    +-----------------------------'---------------------------------------------'
    | cmd1 | cmd2 | cmd3 | cmd4   | Find out the exit codes of all piped cmds.  |
    | echo ${PIPESTATUS[@]}       |                                             |
    +-----------------------------'---------------------------------------------'
    |                                                                           |
    | I explained each one of these redirections in my article All About Bash   |
    | Redirections:                                                             |
    |                                                                           |
    | www.catonmat.net/bash-one-liners-explained-part-three                     |
    |                                                                           |
    +---------------------------------------------------------------------------+
    |                                                                           |
    | Did I miss any redirections? Let me know! Email me peter@catonmat.net, or |
    | fork this cheat sheet on github:                                          |
    |                                                                           |
    | www.github.com/pkrumins/bash-redirections-cheat-sheet                     |
    |                                                                           |
    `-( Released under GNU Free Document License )------------------------------'

    https://catonmat.net/projects/cheat-sheets

  • 相关阅读:
    Android控件之ListView探究二
    解决activity页面跳转时显示桌面
    TextView实现滚动显示的效果
    QPainter的坐标系系统的转换
    MODBUS_RTU通信协议
    收藏的博客 -- Qt有关的GitHub/Gitee开源项目
    VS联调多个解决方案的项目
    软件工具——GitGUI使用教程
    Python中对文件的操作
    VMware虚拟机三种网络模式详解 --------- NAT(地址转换模式)
  • 原文地址:https://www.cnblogs.com/Searchor/p/13468102.html
Copyright © 2011-2022 走看看