Linux Bash环境下单引(')、双引号(")、反引号(`)、反斜杠(\)的小结
在bash中,$、*、?、[、]、’、”、`、\、有特殊的含义。类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统调用。
其中,反引号类似于函数调用,而不仅仅是简单的文本替换及匹配。
命令行中,被单引号引用的部分,其中所有的特殊字符按照普通字符解释;
双引号引用的部分,仅解释$(美元符号)、\(\n \t除外)、`(反引号),解释后的文本仅按照普通文字处理(同单引号)。
反引号相当于命令替换,引用的部分优先执行,将运行结果替换到外层的命令行文本中;反引号可以嵌套,但是嵌套时内部的反引号必须用\转义
反斜杠用于命令换行,以及echo -e解释。
网上各种文章常见的例子,其中第二行重点介绍一下:
# x=*
#
echo $x 此行执行了两次替换,将$x替换为*,之后将*替换为当前目录下所有文件列表的文本,
该文本作为参数赋给echo(bash会自动按照优先级,进行多层次替换 )
hello.sh
menus.sh misc.sh phonebook tshift.sh
#
echo '$x' $x不进行任何解释,直接将文本‘$x’作为参数赋给echo
$x
#
echo "$x" $x替换为*,但是由于在双引号内,*不做替换,因此文本“*”将作为参数赋给echo
*
Tips:
大多数Linux Distribution的默认shell为bash,查询当前主机所有shell可执行如下命令:
$ cat /etc/shell
bash内部集成了40多条命令,通用格式为:
$ 命令 [-选项] [参数]
其中,”-“后为单字符选项,"--"后为完整的单词选项。一般来说,命令的某项功能(feature),会同时支持单字符选项及对应的多字符选项。
在bash中,*、?、[、]有特殊的含义,用于字符匹配。*代表0到多个字符,?代表单个字符。[]用于匹配单个字符,内部用短横线按照ASCII码顺序标明匹配的字符范围,或者枚举所有要匹配的字符。
Linux Bash环境下单引(')、双引号(")、反引号(`)、反斜杠(\)的小结的更多相关文章
- [转帖]linux bash环境变量简单总结
linux bash环境变量简单总结 来源链接:http://www.178linux.com/8005 原创文章,如有转载,请注明原文地址 需要简单学习一下. 其实 我都是直接放一个 .sh文件到 ...
- linux bash环境变量简单总结
来源链接:http://www.178linux.com/8005 原创文章,如有转载,请注明原文地址 一.环境变量简介 Linux是一个多用户的操作系统.每个用户登录系统后,都会有一个专用的运行环境 ...
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- 在 Windows 和 Linux(Gnome) 环境下 从命令界面打开网页的方式
1.在 Windows 中 通过命令 可以打开网页是很简单的: start http://www.baidu.com 或 start iexplorer http://www.baidu.com 第二 ...
- linux网络环境下socket套接字编程(UDP文件传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- 如何在Linux桌面环境下自动启动程序?
大多数Linux桌面环境有各自的图形用户界面(GUI),让用户可以配置针对特定用户的自动启动程序或服务.本文将介绍如何在各种Linux桌面环境下,自动启动某个程序的方法. AD:WOT2014:用户标 ...
- Linux centos7环境下安装JDK的步骤详解
Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令: java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...
- Linux centos7环境下安装MySQL的步骤详解
Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...
- Linux centos7环境下安装Nginx
Linux centos7环境下安装Nginx的步骤详解 1. 首先到Nginx官网下载Nginx安装包 http://nginx.org/download/nginx-1.5.9.tar.gz ...
随机推荐
- glsl-UBO
UBO 是什么?为何要用UBO? 1.数据共享设计 采用Block的原因是: 如果你的程序中包含了多个着色器,而且这些着色器使用了相同的Uniform变量,你就不得不为每个着色器分别管理这些变量.Un ...
- JSP丶新闻发布会系统
新闻发布会 项目所需要的一些实现类 servlet 工具类 1.实现登录功能 前端界面的代码 <form action="<%=path %>/LonginServlet& ...
- Android开发必知--使用View.setId的正确姿势
这两天在写一个柱状图的自定义控件,用的直接继承ViewGroup的方式实现的,我们都知道,这是自定义控件里面最简单的一种了,有时间写个总结分享一下.这里我想说的重点是,在写这个自定义控件的时候遇到了个 ...
- head tail 命令
[一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...
- 初级程序员应该了解的Linux命令
基于Linux的系统最美妙的一点,就是你可以在终端中使用命令行来管理整个系统.使用命令行的优势在于,你可以使用相同的知识和技能来管理随便哪个Linux发行版. 对于各个发行版以及桌面环境(DE)而言, ...
- 长沙Uber优步司机奖励政策(2月1日~2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等.在本文中我们来看一下缓冲区一些更细节的内容. 缓冲区的分 ...
- sublimeText3安装package control和禁止弹出更新下载弹窗
1.sublimeText3安装package control import urllib.request,os; pf = 'Package Control.sublime-package'; ip ...
- Socket程序中的Error#10054错误
近期使用winSock做的一个网络项目中,使用TCP+Socket连接编写的一个多线程的网络程序,功能是client负责不断地向server端发送数据,服务端负责接收数据.client是一个DLL,服 ...
- 手动安装 mysqldb 与[ pip easy_install]
mysqldb下载: http://sourceforge.net/projects/mysql-python/ https://sourceforge.net/projects/mysql-pyth ...