位置: 编程技术 - 正文

Shell命令行中特殊字符与其转义详解(去除特殊含义)(shell命令tee)

编辑:rootadmin

推荐整理分享Shell命令行中特殊字符与其转义详解(去除特殊含义)(shell命令tee),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell命令tee,shell的特殊变量,shell命令tee,shell特殊字符处理,shell命令tee,shell会用几个特殊字符来处理参数,shell中\t,shell中特殊字符,内容如对您有帮助,希望把文章链接给更多的朋友!

特殊符号及其转义

大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令.

比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat file*的时候, shell会对参数部分file*进行预先处理, 由于*表示任意多个(包括0个)任意字符,那么处理的结果便是file file1 file2,接下来,shell再将这个结果, 即file file1 file2传递给cat命令, 所以你看到的结果跟直接执行cat file file1 file2是一样的, 那就是三个文件的内容都显示在命令行终端.

实际上,我们有办法看到shell处理的结果是什么,或者说真正执行的命令是什么样子的, 那就是在你要执行的命令之前加上echo.比如说,在上面的目录下,你执行echo cat file* , 那么你将看到

上面那条命令,就是经过shell对参数的处理之后,真正执行的命令.

但是很多时候,我们希望传递给这些命令的,就是这些参数本身, 比如说,你当前目录下有一个文件的文件名就叫test*, 同时还有另外一个文件, test1. 而你只想看test*的内容, 这时候,如果你执行

的话,那么test*和test1的内容都会被显示出来,这时候怎么办呢&#; 这里就涉及到特殊字符的转义(escape)的问题了.所谓的转义,意思就是去掉它的特殊含义.让shell把他们当做一般字符对待,不要进行特殊处理.

在shell中,特殊字符的转义有三种办法

用转义: 把字符放在特殊字符的前面 用单引号('')转义: 用单引号把参数括起来 用双引号("")转义: 用双引号把参数括起来

在上面的例子中,这三种方法都是有效率的,也就是说,下面的三个命令都能达到目的:

cat test* cat 'test*' cat “test*”

三种转义方法的范围

Shell命令行中特殊字符与其转义详解(去除特殊含义)(shell命令tee)

在shell中,特殊字符是非常多的,而以上提到的三种转义方法的范围也不尽相同,其中第一种方法的范围是最广的,几乎可以对所有的特殊字符进行转义,常见的用法是把放在一个命令行的最后,这样一个很长的命令就可以分为两行或者更多行写. 比如

将显示成

在这里,其实就是把换行符转义了,让它失去了换行的意思,同时阻止命令立刻执行.

第二种转义(单引号)的范围比第一种小,它可以阻止命令行立刻执行,但是它不能让换行符失去换行的意思. 所以

将显示成

第三种转义(双引号)的范围又比第二种小,单引号可以转义"`", 而双引号不行. 在shell中, "`"中间的东西将被视为命令替换. shell对参数进行预先处理时,将把两个"`"中间的东西当做shell命令进行执行,再将执行结果替换掉他们本身. 举个例子:

将显示

当然,具体的日期跟你执行这条命令的时期有关. 总之,意思你应该明白了. 再回到原来的问题,我们说单引号可以转义"`", 而双引号不行, 意思就是,单引号之间的"`"将失去它的特殊含义,而双引号之间的"`"将依然有特殊含义,所以

将显示

将显示

常见的一些特殊字符

* 任意个任意字符 &#; 一个任意字符 [..] []中的任意一个字符,这里也类似于正则表达式,中括号内可以是具体的一些字符,如[abcd]也可以是用-指定的一个范围,如[a-d] # 注释 (空格) 参数分隔符 cmd 命令替换 | 管道 & 后台执行 ; 命令分隔符(可以在同一行执行两个命令,用;分割) ~ 用户home目录

最后记得,任何时候,你不确定自己是不是转义对了,或者是特殊字符用对了,记得可以在命令前面加上echo,来看看真实执行的命令是怎么样的.

总结

标签: shell命令tee

本文链接地址:https://www.jiuchutong.com/biancheng/374605.html 转载请保留说明!

上一篇:每天一个linux命令 whereis命令(linux每隔1s执行一次命令)

下一篇:复制 Windows cmd 窗口命令行的信息方法(复制链接)

  • 无形资产摊销是当月还是下月
  • 现金股利和现金利润的区别
  • 投资款转账没备案怎么办
  • 定额怎么确定
  • 美容行业如何做活动
  • 对公账户可以支付给个人吗
  • 固定资产采购计入什么科目
  • 公司购车按揭利息可以开票吗
  • 无形资产减值准备
  • 营改增后建筑企业财务核算
  • 职工福利费要交个税吗
  • 全面营改增后,某房地产开发企业需要缴纳哪种税,为什么
  • 资产改变用途的法律规定
  • 没有发票的房租调增金额怎算
  • 税务要求企业所得税预缴申报更正
  • 公司接受安全罚款的账务处理
  • 金融机构计提减值准备
  • 为生产产品而领用材料的实际成本应计入什么账户的借方
  • 报销抵冲银行日记帐要怎么入帐?
  • 在Win10系统中卸载最近更新的补丁并重启电脑
  • w11系统有哪些新功能
  • 社保增加人员网上申报
  • 支付工程款需要什么财务手续
  • 上市公司发行债券股价会涨吗
  • 单位办事人员
  • rundll32.exe进程很多
  • qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1
  • 盈余公积弥补以前年度亏损所有者权益会增加
  • 库房存货标准
  • 美国布莱斯大峡谷成因
  • 委托加工物资实际成本构成一般包括
  • 微前端的好处和缺陷
  • php实现多维数组输入
  • elementui 手机端
  • 保姆级官方yolov7的训练自己的数据集以及项目部署
  • cynefin框架
  • 面试我应该问些什么问题
  • 顺丰快递电子运单打印模板
  • 企业利润分配的账务处理
  • 不抵扣的发票需要认证吗
  • 个税系统经营所得人员怎样添加
  • 甲供材甲方如何缴纳增值税
  • 农副产品普通发票可以抵扣增值税吗
  • 厂区地面硬化施工方案
  • 月末结存材料的实际成本例题
  • 进口贴息资金
  • 福利费列支的个税怎么算
  • 建筑施工安全费用提取标准
  • 装载机如何计提折旧费用
  • 贴现利息收入的账务处理
  • 债券发行费用的计算方法
  • 营业外支出科目核算内容
  • 纳税人的住房租金专项
  • 技术服务类有哪些
  • 银行开户许可证怎么查询
  • 现销和赊销加一起等于销售收入吗
  • 农民工工资专户销户流程
  • 其它流动资产为负数原因
  • 销售免税货物的会计分录
  • 企业租用农村土地
  • 电梯在固定资产里属于什么设备类别
  • 冲回以前年度工会费
  • sql server外连接查询
  • sql基本教程
  • mac快捷键使用
  • winhost.exe - winhost是什么进程
  • win8怎么添加打印机到电脑上
  • win10周年纪念版
  • xp系统桌面图标怎么设置
  • w8系统ie浏览器在哪
  • 不经过回收站直接删除文件的操作是
  • linux安装有几种方法
  • NGUI之UITab Bar的不能将Sprite与SelectedSprite设置成相同的精灵
  • linux反弹shell方法
  • javascript数学函数
  • 安卓系统手机图片文件夹在哪里
  • 电子发票票种核定申请
  • 大渡口在重庆吗
  • 职工周转房需要缴纳房产税吗
  • 粮食收储企业税收优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设