bshell 脚本的重定向

深入理解linux操作系统---第11讲 bshell编程 掌握BShell编程需要理解正则表达式、流处理工具(sed/awk)以及Shell脚本设计规范。建议通过实际案例(如日志分析、批量重命名)巩固知识,并善用调试工具提高开发效率。 阅读详情

举例

$ ls
test1.txt  test2.txt
$ ls test1.txt test2.txt
test1.txt  test2.txt
$ ls test1.txt test2.txt test3.txt
ls: cannot access 'test3.txt': No such file or directory
test1.txt  test2.txt
$ ls test1.txt test2.txt test3.txt > /dev/null
ls: cannot access 'test3.txt': No such file or directory
$ 
$ ls test1.txt test2.txt test3.txt > /dev/null 2>&1
$ 

疑问

请问  2>&1 为什么 可以放在 $ ls test1.txt test2.txt test3.txt > /dev/null 而不报错,这符合 shell 语法吗?

答案:
重定向可以出现在命令行的任何位置(只要在命令名之后)
多个重定向从左到右依次处理

每个重定向独立解析

基本语法

command [重定向1] [重定向2] [重定向3] ...

关键点:重定向操作符(>、<、>>、2>&1 等)可以任意顺序出现在命令名之后、参数之前或之后
Shell 在解析命令行时,会:
    识别命令名(第一个非重定向/非赋值的词)
    识别所有重定向(无论位置)
    收集所有参数(非重定向的词)
    按从左到右的顺序应用重定向

具体解析步骤

步骤1:词法分析

$ ls test1.txt test2.txt test3.txt  >  /dev/null  2>&1
  │      │   			            │      │      │
命令   	参数  			           重定向 文件   重定向

步骤2:识别所有重定向

重定向1:> /dev/null  (将 stdout 指向 /dev/null)
重定向2:2>&1         (将 stderr 指向 stdout 当前指向的位置)

步骤3:按顺序执行

初始状态:stdout → 终端,stderr → 终端
执行重定向1:> /dev/null
    stdout → /dev/null
    stderr → 终端(未变)

执行重定向2:2>&1
    stderr → stdout 当前指向(/dev/null)
最终状态:stdout → /dev/null,stderr → /dev/null

类比理解

想象有两个水管:
    水管1(stdout):流正常的水
    水管2(stderr):流脏水
    终端:你的水桶(默认两个水管都流向水桶)

1>&1:
    告诉水管1:"流向水管1自己"
    结果:水管1还是流向水桶(没变化)
    没用

2>&1:
    告诉水管2:"流向水管1当前流的方向"
    如果水管1流向水桶,脏水也去水桶(没变化)
    但如果水管1被改道流向黑洞(/dev/null),脏水也跟着去黑洞
    很有用:可以同时控制两个水管的方向

无人机油气管道巡检:从端边云到AI识别的完整方案解析 无人机技术正从航拍工具演变为工业巡检的核心载体,尤其在长距离油气管道场景中,其价值在于构建可重复、可量化的数据闭环。理解无人机巡检,需从端-边-云三层架构切入:端侧负责采集,边缘侧完成实时AI识别与数据筛选,云端进行深度分析和报告生成。这种分层设计解决了野外弱网环境下的数据回传瓶颈,配合可见光、红外与激光雷达多载荷组合,可实现第三方施工、泄漏迹象等缺陷的精准定位。航线规划与桩号映射则是将飞行数据转化为运维指令的关键,最终输出带坐标与里程的缺陷清单。本文围绕无人机油气管道巡检方案,系统阐述从任务编排到报告归档 阅读详情

相关推荐

OpenFOAM-多孔介质模型(porous media)

文章目录一、多孔介质(porous media)二、使用步骤1.达西定律2.Darcy-Forchheimer3.OpenFOAM fvOptions4.paraview动画每帧显示时间(Annotate Time)5.参考内容总结 一、多孔介质(porous media) 在流体力学中,流体流经多孔介质是指流体流经多孔介质时的行为方式,如海绵或木材,或使用沙子或其他多孔材料过滤水。 我们将展示如何设置多孔层,并使用OpenFOAM模拟流体通过该介质。 二、使用步骤 1.达西定律 达西定律最初是由达西通.

zq93538196的博客 9938

bshell 学习资料

一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂!建立一个脚本  Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。  如同其他语言一样...

xuyong913的专栏 786

深入浅出DDR系列(二)--DDR工作原理

学习完了DDR的基本组成和硬件结构原理之后,从整体上了解了DDR的特性和静态图,包括原理、管脚图等。那么本章就要从动态的角度来分析时序结构,包括read/write的整个过程到数据返回发生了什么,其中包括以下内容 DDR是如何完成Read、Write 等的操作 DDR的基本命令 DDR的时序参数 DDR的性能分析 1. DRAM基本组成 对于DRAM,其主要由行和列组成,每一个bit中都是由类似右下图的类晶体管的结构组成,对于sdram的数据,可以通过控制column和row就可以访问sd

奇小葩 3万+

shell脚本学习1

在工作的时候接触到了shell脚本,不过我没有自己写过,但是又因为当时对shell有了兴趣,所以我就抽了一点时间,来学习shell脚本的语法结构,这里只是基本的shell语法,更高深的在以后可能会接触。 一    shell分类 1)    Bourne家族:sh,  bash(标准shell),   pshell,  zshell 2)    C shell家族:cshell,  tcsh

jiankangzhu的博客 351

windows局域网文件夹共享

windows局域网共享文件夹,亲测,包括可能出现的一些问题解决

yml15180824993的博客 4万+

【转载】参数估计(Parameter Estimation):频率学派(最大似然估计MLE、最大后验估计MAP)与贝叶斯学派(贝叶斯估计BPE)

基础 频率学派与贝叶斯学派 http://www.douban.com/group/topic/16719644/ http://www.zhihu.com/question/20587681 最大似然估计(Maximum likelihood estimation,MLE) http://baike.baidu.com/view/1918804.htm http://baike.baidu.co

影 的专栏 3413

shell学习三十三天----关于重定向

关于重定向 额外的重定向运算符 使用set -C搭配 POSIX shell提供了防止文件意外截断的选项:执行set -C命令可打开shell所谓的禁止覆盖选项,当它再打开状态时,单纯的>重定向遇到目标文件已存在时,就会失败.>|运算符则可以另noclobber选项失效.   提供行内输入的和使用program得力miter,可以在shell脚本正文内提供输入数据;这样数据叫嵌入文件.在

见证大牛成长之路的专栏 2030

Java实现双色球&大乐透随机选号算法——原理详解与代码实战

掌握核心语法:集合操作、随机数生成、排序。贴近实际场景:将编程知识应用于生活问题的解决。

wangchl0932的博客 4982

第六章 B-shell及编程

启动B-shell 启动一个交互式B-shell 键入sh命令,即进入了B-shell #/bin/sh:脚本文件的执行 shell脚本是预先定义好的一个命令序列,由需要执行的命令构成的文本文件 系统规定,如果脚本文件的第一行的头两个字符是#!,那么,就用这行后面的说明启动一个命令来解释这个脚本文件中的文本 重定向和管道 输入重定向 输入重定向自文件 用法: <文件 将标准输入重定向到一个磁盘文件,而不是从键盘输入 Here Document 用法:<<定界符 从shell

qq_43701604的博客 2753

MTK平台TP驱动设备树与GPIO配置实战解析

本文详细解析了MTK平台TP驱动开发中的设备树与GPIO配置实战。通过DCT工具配置GPIO引脚,结合设备树节点定义触摸参数,并分享驱动移植、编译调试技巧及常见问题解决方案,帮助开发者快速掌握MTK触摸驱动开发核心。

ice55的博客 234

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 144

非常好的BASH脚本编写教程

非常好的BASH脚本编写教程 --------------------------------------------------------------------------------这里有个老American写的 BASH脚本编写教程,非常不错,至少没接触过BASH的也能看懂! 建立一个脚本   Linux中有好多中不同的shell,但是通常我们使用b...

weixin_33785972的博客 76

ROS2 机械臂末端刀具执行曲面路径规划入门教程

Noether工具路径规划系统摘要 Noether是一款用于网格曲面刀具路径规划的软件,支持喷涂、打磨、检测等机器人工艺流程。其核心流程分为三步:1)网格修改(平滑、分割等预处理);2)刀具路径规划(生成有序路径点序列);3)刀具路径修改(姿态调整等后期处理)。系统提供栅格规划和边界规划两种模式,支持自定义扩展。配套GUI工具可配置完整流程,包含网格处理、路径生成和可视化功能。通过示例演示了多组件网格处理、拼图边缘铣削等典型应用场景,并指导用户进行插件开发,实现圆柱体提取、摄像机悬停等定制化功能。系统采用模

机器人控制与仿真应用 916

shell

不要使用linux的系统命令作为变量名不要使用中文不要使用特殊符号作为变量名称的开头!,@,#,¥,%,……,等等,但可以使用_作为开头默认规则:学生 stydent stu=sec 秒 sec=计算机:computer (非强制)默认加上注释的,要保证变量名的引用保持前后一致 (非强制)自定义变量在自定义变量当中:双引号 “” ‘ ’整数类型可以不加引号,赋值为字符串类型,最好加上引号,以免避免歧义,在给变量赋值时,单引号和双引号一样,不影响变量的值。

2301_79410672的博客 104

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

shell脚本编程学习笔记1——shell基础与Bash基本功能1,简介:1,Shell就是一个命令行解释器,用以连接输入设别和内核。 2,Shell是解 释执行的脚本语言,在Shell中可以直接调 用Linux系统命令。  3,shell种类比较多,总分为bshell和cshell。比较常用的是bshell中的Bash,本博客学习的也是linux中的Bash 4,查看linux支持那种shell...

敦煌的驼铃_Blog 586

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux 第一章 shell基础

1shell基础1.1shell概述1.1.1shell是什么shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是以编写一些程序。shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本于洋,在shell中可以直接调用Linux系统命令。 1.1.2shell的分类...

子非愚的博客 545

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

solaris Shell脚本学习笔记-语法

http://www.cnblogs.com/weixun/p/3262029.html   Solaris下Shell脚本学习笔记。 Shell语法 Shell中变量都是全局的,如果需要在函数中使用局部变量,在变量前加上local 'expression'单引号括起的表达式中不允许变量扩展; "expression"双引号中则允许,可以用来连接变量, fullname="$firstnam...

qq_27361945的博客 1603

Shell标准输出、标准错误 >/dev/null 2>&1

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

wu694128的博客 332

CShell

当你执行一个shell script时, 系统会检查script文件的第一行以确定如何执行 其中的命令: ○ 如果第一行以#!开始, 后面跟着一个程序名, 系统就会用那个程序来执行script中 后面的命令. ○ 如果第一行以#开始, 系统会用Cshell执行script. 等同于#!/bin/csh ○ 如果第一行不是以#开始, 系统就会用Bshell来执行script. 等同

#维多利亚的秘密# 1322

shell-一些语法与命令-个人笔记

命令的用法和语法可能会根据具体的操作系统和 shell 环境有所不同。 *记录一些容易忘记或者不常用的用法*

α的博客 966

Linux shell 远程执行命令

shell远程执行:   经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。一下介绍两种shell命令远程执行的方法。 前提条件:   配置ssh免密码登陆 对于简单的命令:   如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls"

极客点儿 1359

shell 比较语法

二、使用结构化命令知识内容:#改变命令流#使用if-then逻辑#嵌套if-then#测试条件#高级if-then功能许多程序在脚本命令之间需要某些逻辑控制流,有些命令允许脚本根据变量值的条件或者命令的结果跳过一些命令或者循环执行这些命令,这叫做结构化命令。1、使用if-then语句最基本的结构化命令类型就是if-then语句,其格式如下:ifcomman...

weixin_34417814的博客 109

linux shell if 语法

Linux shell if 语法 基本语法: if [ command ]; then 符合该条件执行的语句 fi 2、扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 注意:

sunny05296的博客 1万+

Shell逐行读取文件的4种方法

转自http://www.jb51.net/article/59041.htm 在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法。为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率。 方法1:while循环中执行效率最高,最常用的方法。 复制代码 代码如下: functio

qingkongyeyue的博客 1889

shell测试和比较函数--test、[、[[、((、和 if-then-else解密 [转载]

shell测试和比较函数--test、[、[[、((、和 if-then-else解密 Bash shell 在当今的许多 Linux® 和 UNIX® 系统上都可使用,是 ...

congyuchi5082的博客 189

linux shell运用16进制计算

((test=0x1234)) echo $test if [ $test -eq 4660 ]; then echo hello else echo not hello fi linux-shell 脚本转换 十六进制 十进制 八进制 二进制-zt http://www.51testing.com/html/00/130600-867618.html...

shipinsky的博客 1万+
上一篇: git 切换用户和邮箱的方法
下一篇: 配置samba服务 openEuler入门之一
天麓
博客等级 码龄22年 323粉丝 437原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值