首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bash中stderr重定向的意外行为

在bash中,stderr重定向是一种将标准错误输出流(stderr)重定向到指定位置的操作。通常情况下,我们可以使用以下语法将stderr重定向到文件中:

command 2> file

其中,command是要执行的命令,2表示标准错误输出流,>表示重定向操作符,file是要将stderr输出到的文件名。

然而,有时候在使用stderr重定向时可能会遇到一些意外行为。以下是一些可能的意外行为及其解释:

  1. 重定向到文件时,文件已存在:如果重定向的文件已经存在,那么stderr的输出将会覆盖文件中原有的内容。这可能导致原有的数据丢失。
  2. 重定向到文件时,文件不存在:如果重定向的文件不存在,bash会自动创建一个新文件,并将stderr的输出写入其中。
  3. 重定向到文件时,文件无法写入:如果重定向的文件所在的目录没有写入权限,或者文件本身没有写入权限,那么stderr的输出将无法写入文件中。在这种情况下,bash会显示一个错误消息。
  4. 重定向到特殊设备文件:除了可以将stderr重定向到普通文件外,还可以将其重定向到特殊设备文件,如/dev/null。将stderr重定向到/dev/null意味着将其丢弃,不会在终端或文件中显示。
  5. 重定向到其他文件描述符:除了使用2>来重定向stderr,还可以使用其他文件描述符来实现重定向。例如,2>&1将stderr重定向到标准输出流(stdout)。

总结起来,stderr重定向是一种将标准错误输出流重定向到指定位置的操作。它可以将错误信息保存到文件中,或者将其丢弃。在使用stderr重定向时,需要注意文件的存在与权限,以及可能出现的意外行为。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux如何在Bash中将标准错误stderr重定向到stdout标准输出

将命令输出重定向到文件或将其通过管道传递到另一个命令时,你可能会注意到错误消息已打印在屏幕上。 在Bash和其他Linux Shell,执行程序时,它使用三个标准I/O流。...command > file command 1> file 要重定向标准错误流(stderr),请使用2>运算符: command 2> file 你可以将stderr和stdout都写到两个单独文件...重定向到stdout 将程序输出保存到文件时,通常会将stderr重定向到stdout,以便将所有内容都保存在一个文件。...要将stderr重定向到stdout并将错误消息发送到与标准输出相同文件,请使用以下命令: command > file 2>&1 > file将stdout重定向到file,2>&1将stderr重定向到...在Bash,&>与2>&1含义相同: command &> file 结论 在命令行上工作时,了解重定向和文件描述符概念非常重要。

3.5K20

Bash 如何将标准错误stderr转向标准输出stdout

在将命令输出转到文件或者另外一个命令时候,你可能会注意到错误提示打印在屏幕上。 在 Bash 和其他 Linux shells ,当程序执行时,它使用三个标准 I/O 流。...每一个流由一个数字文件描述符表示: 0 - stdin,标准输入 1 - stdout,标准输出 2 - stderr,标准错误 一个文件描述符就是一个数字,代表一个打开文件。...转向stdout 当保存程序输出到文件时,通常将标准错误stderr转向stdout,以便在同一个文件记录完成信息。...file,而2>&1将标准错误stderr转向到当前标准输出stdout。...在 Bash &>和2>&1 一个意思: command &> file 四、总结 在使用命令行时候,理解转向和文件描述符概念是非常重要

1.7K30
  • bash变量

    bash变量 <span style="display: inline !...<em>中</em>,变量是一个用来存储数据<em>的</em>实体。...在<em>bash</em><em>中</em>,变量分为环境变量(全局变量)和局部变量。 环境变量可以被子进程读取和修改,父进程对环境变量<em>的</em>修改会传递到子进程,而子进程对变量<em>的</em>修改不会传递到父进程。...: $ echo $zhang 55 $ unset zhang $ echo $zhang $ 环境变量 在交互式<em>bash</em><em>中</em>,还是使用环境变量多一些。...<em>bash</em>有一些默认<em>的</em>环境变量,使用env查看: $ env XDG_SESSION_ID=39513 TERM=xterm SHELL=/bin/<em>bash</em> # 省略 在<em>bash</em><em>中</em>,环境变量<em>的</em>变量名一般全部采用大写字母

    2.2K80

    关于WebView 重定向行为导致多次加载问题

    2、如果是重定向地址,在跳转到目的地址之前会不断重定向,每一次重定向都会回调: redirection: onPageStarted()- shouldOverrideUrlLoading()- onPageFinished...() 那么一个正常重定向地址,方法执行顺序就是: shouldOverrideUrlLoading()- redirection – … – redirection – onPageStarted...,就要考虑如何避免重定向行为导致多次加载问题: 设置一个Boolean全局变量flag, 在onPageStarted()设置为true,若加载样式没有开启,就开启进度条等加载样式; 在onPageFinished...()检测,如果为true,就说明已经是目的地址,可以关闭加载样式,如果是false,就不做处理,继续等待; 在shouldOverrideUrlLoading(),设置为false,若加载样式没有开启...progressBar.setVisibility(View.GONE); m_webView.setVisibility(View.VISIBLE); } } 以上这篇关于WebView 重定向行为导致多次加载问题就是小编分享给大家全部内容了

    4.4K20

    Linux重定向

    FileDescriptor Linux给程序提供三种I/O设备 标准输入STDIN 0 默认接受来自终端窗口输入 标准输出STDOUT 1 默认输出到终端窗口...标准错误STDERR 2 默认输出到终端窗口 每个应用程序都有自己输入输出错误 查看每个文件都有固定0输入1输出2错误文件标识符 [root@centos7 ~]# ll /dev/...默认标准输入信息输出是到本地窗口,如何将输入信息重定向至其他文件?...标准输出和错误重定向 标准输出和标准错误可以被重定向到指定文件,而非默认的当前终端 格式: 命令 操作符号 文件名 支持操作符: 1>或> | 把STDOUT重定向到文件 [root@centos7...说明: 将命令1 输出发送给命令2输入,然后再讲命令2输出发送至命令3输入 所有命令会在当前shell进程子shell进程执行 组合多种工具功能 注意:标准错误不能通过管道转发,需要通过2>&1

    2.6K00

    Shell重定向

    标准输入、标准输出和标准错误 一个程序输入可以来自于键盘,也可以来自于文件或者其他设备;同样,一个程序也可以将输出显示在屏幕或者保存到文件。这就涉及到标准输入、标准输出和标准错误。...wang $ sort < input li qian sun wang wu zhao zheng zhou 本例input文件作为sort命令标准输入。...~标准输出被重定向为output,因此其输出被写入output文件。...使用0<重定向标准输入,事实上,由于程序默认重定向输入即为标准输入,所以下面的两条命令是等价: $ sort < input $ sort 0< input 同样,程序默认重定向输出为标准输出,...文件,使用2>&1将标准错误重定向为标准输出: $ sort output 2>&1 上面的例子,标准输出和标准错误都会被重定向为output文件。

    77130

    HTTP重定向

    原理 在 HTTP 协议重定向操作由服务器通过发送特殊响应(即 redirects)而触发。HTTP 协议重定向响应状态码为 3xx 。...搜索引擎机器人会在遇到该状态码时触发更新操作,在其索引库修改与该资源相关 URL 。 临时重定向 有时候请求资源无法从其标准地址访问,但是却可以从另外地方访问。在这种情况下可以使用临时重定向。...304 (Not Modified,资源未被修改)会使页面跳转到本地陈旧缓存版本当中,而 300 (Multiple Choice,多项选择) 则是一种手工重定向:以 Web 页面形式呈现在浏览器消息主体包含了一个可能重定向链接列表...HTML重定向机制 HTTP 协议重定向机制是应该优先采用创建重定向映射方式,但是有时候 Web 开发者对于服务器没有控制权,或者无法对其进行配置。...建议始终将其设置为 0 来获取更好可访问性。 JavaScript重定向机制 在 JavaScript 重定向机制原理是设置 window.location 属性值,然后加载新页面。

    1.8K30

    bash和shell入门

    -c :将目前 shell 所有 history 内容全部消除 -a :将目前新增 history 指令新增入 histfiles ,若没有加 histfiles , 则预设写入 ~/.bash_history...这样会 有 ~/.bash_history 写入问题吗?想一想,因为这些 bash 在同时以 root 身份登入, 因此所有的 bash 都有自己 1000 笔记录在内存。...这是因为这两个取得 bash 情况,读取配置文件数据 并不一样所致。 由于我们需要登入系统,所以先谈谈 login shell 会读取哪些配置文件?...在 CentOS 7.x ,这个目录底 下文件规范了 bash 操作接口颜色、 语系、ll 与 ls 指令命令别名、vi 命令别名、which 命令别名等等。...在 login shell bash 环境,所读取个人偏好配置文件其实主要有三个,依序分别是: ~/.bash_profile ~/.bash_login ~/.profile 其实 bash

    95320

    理解 Bash 尖括号

    Bash 内置了很多诸如 ls、cd、mv 这样重要命令,也有很多诸如 grep、awk、sed 这些有用工具。但除此之外,其实 Bash 还有很多可以起到胶水作用标点符号,例如点号(.)...例如可以这样把数据存放到一个文件当中: ls > dir_content.txt 在上面的例子,> 符号让 shell 将 ls 命令输出结果写入到 dir_content.txt 里,而不是直接显示在命令行...需要注意是,如果 dir_content.txt 这个文件不存在,Bash 会为你创建;但是如果 dir_content.txt 是一个已有的非空文件,它内容就会被覆盖掉。...你也可以不使用 > 而使用 >>,这样就可以把新数据追加到文件末端而不会覆盖掉文件已有的数据了。...文件,然后使用 wc -l 计算出 dir_content.txt 文件行数(也就是家目录文件数)并追加到 dir_content.txt 末尾。

    1.3K10

    jmeter自动重定向和跟随重定向区别

    自动重定向(状态码一般是200、20X):当重定向时,自动跳转时,只针对GET和Head请求,自动重定向可以自动跳转到最终目标页面,但是jmeter不记录重定向过程内容【在查看结果树只能看到重定向响应内容...】 跟随重定向(状态码一般是302、30X):当重定向时,自动跳转时,自动重定向可以自动跳转到最终目标页面,但是jmeter记录重定向过程内容【在查看结果树既能看到重定向响应内容,也能看到重定向响应内容...】 如: A重定向到B 自动重定向在结果查看树,只能看到B调用及响应。...跟随重定向在结果查看树,既能看到A调用及响应,也能看到B调用及响应。...Jmeter接口响应类型通过Content-Type指定,常见响应类型有: • text/html : HTML格式 • text/plain :纯文本格式 • text/xml

    2.1K20

    bash 2>&1 & 解释

    一、标准输入,标准输出,标准错误 bash0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,...即ls > 1.txt会新建一个1.txt文件并且将ls内容输出到新建1.txt,而ls >> 1.txt则用在1.txt已经存在,而我们只是想将ls内容追加到1.txt文本时候。...; 查看文件1内容,实际结果为:1 a.txt b.c c 可见步骤3 ls > 1并不是将ls结果重定向为标准输出,而是将结果重定向到了一个文件1。...五、结论 到了此时,你应该也能猜到2>&1用意了。不错,2>&1就是用来将标准错误2重定向到标准输出1。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。...至于最后一个&,则是让bash在后台执行。

    85420

    Bash shellbash、sh、source及“.”区别与联系

    在众多Linux发行版bash shell 可谓是随处可见。作为众多发行版首选shell,对于bash shell学习对我们来说,显得格外重要。...在学习bash shell过程bash、sh、source及英文输入状态下点号经常交替出现,他们看起来作用都差不多,但是深究下去,他们也有着不小区别与联系。...查看shell历史我们可以知道,我们通常所说bash shell(bash)全称为GNU Bourne-Again SHell。在目前发行版,sh已经成为bash一个软连接。...从上面的2个代码块,我们可以看出,b.sh脚本直接引用了a.sh变了,如果我们依次执行几个有关联脚本就可以采用这种方式,否则则使用bash及sh比较恰当。...四、结论 bash与sh在对于脚本执行来说,效果一致,不继承除了当前shell之外变量值。在无空格“.”且有执行权限脚本执行,效果与bash及sh一致。

    97810

    3分钟阅读 | 最难用 Bash ,最常用输入输出重定向

    引言 将命令输出重定向到文件,或将其通过管道传递到另一个命令时,你可能会注意到错误消息会被打印在屏幕上。 ? 在Bash和其他Linux Shell,执行程序时,它使用三个标准 I/O 流。...到stdout 将程序输出保存到文件时,重定向stderr到 stdout很常见,因此你可以将所有内容都保存在一个文件。...重定向顺序很重要。例如,以下示例仅重定向stdout到file。发生这种情况是因为将stderr重定向到stdout之前,stdout已经重定向到file了。...command 2>&1 > file 重定向stderr另一种方法stdout是使用&>构造。...在Bash&>具有以下含义2>&1: command &> file 写在最后 在命令行上工作时,了解重定向和文件描述符概念非常重要。

    90410

    C++IO重定向

    在 C ,我们可以使用函数freopen()将现有的 FILE 指针重定向到另一个流。...C++ 是一种面向对象编程语言,让我们不仅能够定义自己流,还能够重定向标准流。因此,在 C++ ,流是一个对象,其行为由类定义。因此,任何行为类似于流东西也是流。 ...C++Streams对象主要有以下三种类型: \   istream : 这种类型流对象只能从流执行输入操作 ostream : 这些对象只能用于输出操作。...因此,文件流和 IO 流对象行为相似。 所有流对象也有一个关联数据成员流缓冲类。简单地说,streambuf 对象是流缓冲区。...因此,重定向任务简单地简化为更改与流关联流缓冲区。

    66930

    shell入门第十讲

    从命令到shell文本输出是通过 标准输出 (标准输出)流,stdout就是标准输出流之意(也称为输出重定向),来自命令错误消息通过发送 标准错误 (标准错误)流,比如stderr就是标准错误流之意...那么在Linux标准流,stdout和stderr也同样如此。如果我们使用了Linux标准流功能,当我们执行一个命令成功后,那么终端打印信息也将会被传送至stdout。...当我们执行命令失败后,那么终端打印报错信息也将会被传送至stderr。 1.1、stdout 输出重定向我们一般使用 >来表示,比如将信息输出重定向到一个文件。...1.2、stderr 错误重定向我们一般使用 2> 来表示,比如将错误信息重定向到一个文件。...1.4、追加信息输出重定向 我们上面的stdout和stderr只是将信息输出到一个文件,如果再次重定向输出的话,文件之前内容将会被覆盖掉,只会写入最新内容到文件,比如: bash [root@

    87620
    领券