linux 星号 通配符,如何在bash中转义通配符/星号字符?

简短的回答

像其他人所说的那样 - 你应该总是引用变量来防止奇怪的行为。所以使用echo“$ foo”代替echo $ foo。

长期回答

我确实认为这个例子值得进一步解释,因为它的表面看起来比它看起来更多。

我可以看到你的困惑在哪里,因为在你运行你的第一个例子后,你可能会认为shell显然正在做:参数扩展

文件名扩展

所以从你的第一个例子:me$ FOO="BAR * BAR"me$ echo $FOO

参数扩展后相当于:me$ echo BAR * BAR

文件名扩展后相当于:me$ echo BAR file1 file2 file3 file4 BAR

如果只输入echo BAR * BAR命令行,您将看到它们是等效的。

所以你可能会想到“如果我逃避*,我可以阻止文件名扩展”

所以从你的第二个例子:me$ FOO="BAR \* BAR"me$ echo $FOO

参数扩展后应相当于:me$ echo BAR \* BAR

文件名扩展后应相当于:me$ echo BAR \* BAR

如果您尝试直接在命令行中键入“echo BAR \ * BAR”,它将确实打印“BAR * BAR”,因为转义会阻止文件名扩展。

那么为什么使用$ foo不起作用?

这是因为发生了第三次扩张 - 报价清除。从bash手册中删除引用是:在前面的扩展之后,所有未引用的字符“\”,“”和“”的出现都将被删除,这些字符不是由上述扩展之一产生的。

所以当你直接在命令行输入命令时,转义字符不是先前扩展的结果,所以BASH在将它发送到echo命令之前将其删除,但在第二个例子中,“\ *”是先前参数扩展的结果,因此不会被删除。结果,echo收到“\ *”,这就是它打印的内容。

请注意第一个示例之间的差异 - “*”不包括在将被删除的字符中删除的字符中。

我希望这是有道理的。最后得出的结论 - 只是使用引号。我只是想我会解释为什么转义,如果只有参数和文件名扩展在起作用,它在逻辑上应该起作用,不起作用。

有关BASH扩展的完整说明,请参阅:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PYTHON面试

大部分的面试问题,有最近要找事的老铁吗?python语法以及其他基础部分可变与不可变类型; 浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现; __new__() 与 __init__()的区别; 你知…

vs怎么更改编译的堆空间_再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度...

前言长期以来困扰我们的一个问题就是构建速度,AndroidStudio 的构建速度严重影响 Android 开发者的工作效率,尤其是更新一个版本号,导致整个项目重新构建,在网络慢的情况下,这是无法忍受的。buildSrc 这种方式&#xf…

java map的遍历

转载地址:http://www.cnblogs.com/shenliang123/archive/2012/08/28/2660705.html -------------------------------------------------------------------------------------------------------------------- java中的遍历 import java.util.Collection; import j…

python循环for...in_python循环while和forin实例

python 循环while和for in简单实例#!/uer/bin/env python# _*_ coding: utf-8 _*_lucknumber 5b 0while b <3:print(guss count:,b)a int(input(you guse number))if a > lucknumber:print (youaerbiger)elif a lucknumber:print (youare righet)break #跳出这个层级…

android悬浮功能实现,Android实现系统级悬浮按钮

本文实例为大家分享了Android系统级悬浮按钮的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下具体的需求1、就是做一个系统级的悬浮按钮&#xff0c;就像iPhone 桌面的那个悬浮按钮效果一样&#xff0c;能随意拖动&#xff0c;并且手一放开&#xff0c;悬浮按钮就自动…

oracle decode_错过血亏!一文搞懂Oracle锁相关视图及相关操作

本文主要研究锁的相关视图&#xff0c;以及锁的相关操作&#xff0c;通过视图查锁的问题。 一、v$transaction视图第一个视图是v$transaction&#xff0c;就是Oracle数据库所有活动的事务数&#xff0c;所有活动的事务每一个活动的事务在这里有一行。v$transactionXIDUSN表示当…

Linux文件系统与命令行

什么是命令行? 接收键盘命令并将其传给操作系统执行的程序(用于输入和管理命令的程序),统称命令行,也叫: Shell&#xff0c;几乎所有Linux发行版都提供了一个 Shell 程序,叫做: Bash (Bourne-Again Shell, 因为最初的 Shell 是由 Steve Bourne 编写的原始 Unix 程序, Again 表…

freeMarker 遍历 list,map,listmap

List List<String> clientSourceDatanew ArrayList<String>();clientSourceData.add("field字段");clientSourceData.add("title标题");ftl&#xff1a; <#if clientSourceData?exists><#list clientSourceData as key> <tr&g…

qtableview不选中_如何选中/取消选中QTableView并触发setData()

我有一个自定义的QTableModel&#xff0c;我在PyQt中使用QTableView显示它。我有一些字段设置为可检查&#xff0c;我想添加“全部检查”和“不检查”按钮。我觉得应该有一种方法可以使setData()从代码中被调用&#xff0c;这样检查状态就会改变&#xff0c;就像我已经用setDat…

android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...

AndroidBottomNavigation截图使用方法gradle:compile com.whitelife.library:library:1.0.1maven:com.whitelife.librarylibrary1.0pomandroid:id"id/bottom_navigation"android:layout_width"match_parent"android:layout_height"56dp"android:…

windows怎么打开python_windows怎么打开Python

Windows中运行Python的两种运行方式认识编程环境 1 直接命令行启用Python。当然&#xff0c;如果直接在cmd中输入python&#xff0c;需要在windows中的path环境变量中做好设置。 此时&#xff0c;cmd中运行python就可以出现 “>>>” 符号。意味着python进入了交互运行…

sqldeveloper创建账号_用oralce 自带工具sql developer 创建表空间,用户,权限

用oralce 自带工具sql developer 创建/*第1步&#xff1a;创建临时表空间 */create temporary tablespace hudongtemptablespacetempfile E:\worksubject\WY-Honda_Ess\Oracle11g\hudongtemptablespace.dbfsize 50mautoextend onnext 50m maxsize 20480mextent management loc…

AOE网与关键路径简介

前面我们说过的拓扑排序主要是为解决一个工程能否顺序进行的问题&#xff0c;但有时我们还需要解决工程完成需要的最短时间问题。如果我们要对一个流程图获得最短时间&#xff0c;就必须要分析它们的拓扑关系&#xff0c;并且找到当中最关键的流程&#xff0c;这个流程的时间就…

Java 集合体系详解——List体系有序集合

引言 面向对象语言对事物的体现必然是以对象的形式&#xff0c;Java工程师为了方便多多个对象的操作&#xff0c;就对对象进行存储&#xff0c;集合就是存储对象的一种方式&#xff0c;他们的底层都是基于不同的数据结构。当然集合和数组一样都是容器&#xff0c;数组也是可以存…

android 定义固定数组,Android 图片数组定义和读取

位置&#xff1a;packages/apps/Launcher21、图片数组定义、资源读取如果有多张图片&#xff0c;这些图片的使用与顺序无关&#xff0c;可以采取这种方式。drawable-nodpi中有3张图片&#xff0c;wallpaper_1.jpg、wallpaper_2.jpg、wallpaper_3.jpgXML中定义数组IDwallpaper_1…

alert闪一下就没了_尾部贯穿式镀铬银饰条除了丑,还能闪瞎眼

尾部贯穿式镀铬银饰条&#xff0c;在2010年代成为诸多汽车品牌车型争相采用的新世纪新标配&#xff0c;配以双边排气&#xff0c;让整个车尾看起来层次感强烈&#xff0c;视觉收窄&#xff0c;几十万的奥迪A8L有&#xff0c;十几万的斯柯达速派有&#xff0c;A级车有&#xff0…

docker 指定网卡_Docker | Docker技术基础梳理(五) Docker网络管理

为什么需要容器的网络管理&#xff1f;容器的网络默认与宿主机、与其他容器相互隔离&#xff0c;且容器中可以运行一些网络应用&#xff0c;比如nginx、web应用、数据库等&#xff0c;如果需要让外部也可以访问这些容器中运行的网络应用&#xff0c;那么就需要配置网络来实现。…

java.net.URLEncode编码 与 URLDecode解码问题

原文&#xff1a;http://blog.csdn.net/luojian520025/article/details/9139293 -------------------------------------------------------------------------------------------- String mytext java.net.URLEncoder.encode("中国", "utf-8")…

Android安装两次才成功,Android应用从市场安装完成打开与桌面打开,被启动两次的问题...

问题描述&#xff1a;1、从Android应用市场下载并安装应用&#xff0c;安装完成后&#xff0c;当前界面下方会出现“打开”按钮&#xff0c;这时候我们点击“打开”&#xff0c;会启动应用&#xff0c;进入到应用的启动页面&#xff0c;然后进入应用的主界面&#xff0c;这个时…

事务保存点

在SQL Server中使用rollback会回滚所有的未提交事务状态&#xff0c;但是有些时候我们只需要回滚部分语句&#xff0c;把不需要回滚的语句提到事务外面来&#xff0c;虽然是个方法&#xff0c;但是却破坏了事务的ACID。 SQL中使用事务保存点 即可解决这个问题. 一.SQL 事务中存…