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 ...
随机推荐
- Enter键提交表单
input type="submit"在360浏览器上不能提交 用了这个 <input type="button" class="btn b ...
- HTML5与CSS3权威指南.pdf1
第2章 HTML5与HTML4的区别 HTML5的文件扩展符与内容类型保持不变仍为“.html”或“.htm”,内容类型(ContentType)仍为“text/html” DOCTYPE声明: HT ...
- Android 自定义View可拖动移动位置及边缘拉伸放大缩小
一.首先说一下定义这样一个View有什么用?在一些app中,需要设置头像,而用户选择的图片可能是使用摄像头拍摄,也可能是选择的相册里面的图片,总之,这样的图片大小不一,就比如在使用某个聊天软件的时候, ...
- 搜索算法:深度优先搜索(DFS)
关于深搜的介绍,在网上有很多,不再赘述.主要以题目形式实例讲解. POJ - 1321 (http://poj.org/problem?id=1321) 题目大意:给出一个棋盘,棋子不能同行同列,求放 ...
- 【ACM/ICPC2013】线段树题目集合(一)
前言:前一段时间在网上找了一个线段树题目列表,我顺着做了一些,今天我把做过的整理一下.感觉自己对线段树了解的还不是很深,自己的算法能力还要加强.光练代码能力还是不够的,要多思考.向队友学习,向大牛学习 ...
- 【转】谁说Vim不是IDE?(三)
谁说Vim不是IDE?(三) 常用插件 之所以说Vim形成了自己的生态环境,就是因为Vim具备开放的插件体系,开发者为了提升开发效率,为Vim编写了数以万计的插件,我们可以根据需要任意选择,也可以 ...
- spring boot项目配置文件集合
表 1. Spring Boot 推荐的基础 POM 文件 名称 说明 spring-boot-starter 核心 POM,包含自动配置支持.日志库和对 YAML 配置文件的支持. spring-b ...
- eclipse中java项目的build path详解(转载)
BuildPath中只支持加入jar文件,具体方法如下:在eclips里在工程名上右键->build path->contigure bud path->java build pat ...
- uva 11195 Another queen (用状态压缩解决N后问题)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- JAVA Metrics度量工具 - Metrics Core 翻译
Metrics核心 翻译自Metrics官方文档: http://metrics.codahale.com/manual/core/ JAVA Metrics是一个用于度量的一个JAVA的类库,使用请 ...