xml地图|网站地图|网站标签 [设为首页] [加入收藏]
来自 关于我们 2019-12-13 17:34 的文章
当前位置: 新濠国际登录平台 > 关于我们 > 正文

其输入或输出数据流的位置称为句柄,前一个命

管道符"|"

管道符"|":前一个命令的输出,作为后一个命令的输入

命令1 | 命令2 | 命令3 | ...

# 输出"hello,world."并将小写转换为大写
[root@localhost ~]# echo "hello,world." | tr 'a-z' 'A-Z'
HELLO,WORLD.

# 显示passwd文件中按:分割的每行第一个部分并排序并将小写转换为大写
[root@localhost ~]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
ADM
APACHE
BIN
DAEMON
DBUS
FEDORA

管道符"|"

管道符"|":前一个命令的输出,作为后一个命令的输入

命令1 | 命令2 | 命令3 | ...

# 输出"hello,world."并将小写转换为大写
[root@localhost ~]# echo "hello,world." | tr 'a-z' 'A-Z'
HELLO,WORLD.

# 显示passwd文件中按:分割的每行第一个部分并排序并将小写转换为大写
[root@localhost ~]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
ADM
APACHE
BIN
DAEMON
DBUS
Fedora

linux重定向

inux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。

I/O重定向

简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中。

I/O重定向

简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中。

 

  Linux默认输入是键盘,输出是显示器。你可以用重定向来改变这些设置。比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了。输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果。重定向操作符可以用来将命令输入和输出数据流从默认位置重定向到其他位置,其输入或输出数据流的位置称为句柄;常见的句柄有三种,当然句柄可以自行扩展,一般的OS都提供类似的功能。句柄 句柄代号 句柄描述

标准输入输出

执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。

标准输入输出

执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。

目录

  STDIN 0 键盘输入

I/O重定向符号

  • cmd 1 | cmd 2 把 stdout 重定向到 cmd 2 的 shdin;
  • cmd > file 把 stdout 或者 stderr 重定向到 file 文件中;
  • cmd >> file 把 stdout 或者 stderr 重定向到 file 文件中(追加);
  • cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
  • cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);
  • cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
  • cat <>file 以读写的方式打开 file;
  • cmd < file cmd 命令以 file 文件作为 stdin;
  • cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符;
  • cmd 1 | cmd 2 > file 把多个 stdout 重定向到 file 文件中。

其中2>&1中的数字代表重定向文件描述符,表示重定向 stderr 到 stdout 。

I/O重定向符号

  • cmd 1 | cmd 2 把 stdout 重定向到 cmd 2 的 shdin;
  • cmd > file 把 stdout 或者 stderr 重定向到 file 文件中;
  • cmd >> file 把 stdout 或者 stderr 重定向到 file 文件中(追加);
  • cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
  • cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);
  • cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
  • cat <>file 以读写的方式打开 file;
  • cmd < file cmd 命令以 file 文件作为 stdin;
  • cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符;
  • cmd 1 | cmd 2 > file 把多个 stdout 重定向到 file 文件中。

其中2>&1中的数字代表重定向文件描述符,表示重定向 stderr 到 stdout 。

 

  STDOUT 1 输出信息到提示符窗口

关闭文件描述符

n<&-
#关闭输入文件描述符n.

0<&-
<&-
#关闭stdin.

n>&-
#关闭输出文件描述符n.

1>&-
>&-
#关闭stdout.

关闭文件描述符

n<&-
#关闭输入文件描述符n.

0<&-
<&-
#关闭stdin.

n>&-
#关闭输出文件描述符n.

1>&-
>&-
#关闭stdout.

基本概念

  STDERR 2 输出错误信息到提示符窗口

set

set -C:禁止对已经存在文件使用覆盖重定向:
    强制覆盖输出,则使用 >|
set +C:关闭上述功能

set

set -C:禁止对已经存在文件使用覆盖重定向:
    强制覆盖输出,则使用 >|
set +C:关闭上述功能

Linux公社的RSS地址:

本文永久更新链接地址

新濠国际登录平台 1

基本IO

  默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 < 或 > 操作符之后,必须指定数据的读写位置,可以是文件名或其他现有的句柄。

进阶IO

  要指定重定向到现有句柄,请使用与 & 字符,后面接要重定向的句柄号(即 &句柄号)。

 

例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):2>&1

基本概念

  下表列出了可用于重定向输入和输出数据流的操作符:

  (这是理解后面的知识的前提,请务必理解)

  Linux重定向操作符 功能描述

  a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;

  > 将命令输出写入文件或设备,而不是命令提示符或句柄

  b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor有关;

  < 从文件而不是从键盘或句柄读入命令输入

  c、 用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;

  >> 将命令输出添加到文件末尾而不删除文件中已有的信息

  d、 用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;

  >& 将一个句柄的输出写入到另一个句柄的输入中

  e、 0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;

  <& 从一个句柄读取输入并将其写入到另一个句柄输出中

  f、 在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;

  | 从一个命令中读取输出并将其写入另一个命令的输入中;也称为管道操作符

  g、 管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;

  现在我们回过头来看看上面的那条语句mysh > mylog.txt 2>&1就可明白:

  h、 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;

  > mylog.txt意思是将标准输出重定向到mylog.txt,等价于mysh 1> mylog.txt;

  i、 bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;

  2 >& 1 意思是将错误输出重定向到句柄1标准输出;综合起来就是mysh命令执行过程中产生的标准输出和错误输出都会被重定向到mylog.txt中;

新濠国际登录平台,  j、 ( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。

  重定向的功能十分强大,有兴趣的可以去尝试各种不同的组合,看看前后位置变下会有什么结果?

  k、 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。

  某些时候我们可能并不希望记录什么标准输出或者是错误输出,那可以用mysh >null 2>null或者mysh >/dev/null 2>/dev/null;

本文由新濠国际登录平台发布于关于我们,转载请注明出处:其输入或输出数据流的位置称为句柄,前一个命

关键词: