bash shell是如何识别特殊符号的

一 、 shell命令解析以及识别通配符

       Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行 。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

       shell是一个抽象概念,shell的一切操作都在计算机内部,负责处理人机交互,执行脚本等,是操作系统能正常运行的重要组 成部分
     shell在解释命令的过程中类似于编译器的预编译过程。shell对于输入的命令优先解释所有的特殊字符,再对转换完成的新命令行进行内核的系统调用。在输入命令的过程中,输入完命令直到按下enter的时候,然后shell才会以进程方式执行你所提交的命令,输入的命令的每一个charactor(字符)分为如下两种:
      *literal(文字):也就是普通纯文字,对shell来说没有特殊功能。
      *meta(元字符):对shell来说,具有特定功能的保留字。

     解释过程:  分割管道(将指令切成个别的命令,以哥哥命令进行以下解析)------》取出token(使用分割字符-----空格、tab或者eter将命令分割成token)---》替换别名(检查命令的第一个token是不是别名,若是则把别名替换成真正的命令)---》括号扩展

  (如ltouch  a{a,b}会扩展

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

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

相关文章

linux 调优系列(续)

linux 的各大发行版,都有些不必要的服务被默认开启了,针对ubuntu,我们 可以采用选择性关闭的方法加速起动,提高系统性能。 这里我们安装一个软件: sudo apt-get install sysv-rc-conf 然后这样起动: 在这个…

配置文件bashrc与profile的区别

1、当登入系统时候获得-个shell进程时,其读取环境设定档有三步 首先读入的是全局环境变量设定档/ete/profile,然后根据其内容读取额外的设定的文档,如/etc/profile. d和/ etc/ inputre 然后根据不同使用者帐号,去其家目录读取, bash, pr…

高性能MySQL(4)——查询性能优化

査询优化、索引优化、库表结构优化需要齐头并进,一个不落。 一、为什么查询速度为变慢 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。如果把查询看作是一个任务,那么他由一系列子任务组成,每个子任务都会消耗一定的时间。如果…

GooglePerformanceTools--tcmalloc

TCmalloc全称是Thread-Caching malloc,作者宣称tcmalloc相对于glibc2.3 malloc(aka ptmalloc2)有6倍的性能提高,tcmalloc的常用场景是用于加速MySQL,不过据Wikipedia的hacker Domas Mituzas说,tcmalloc不仅仅对MySQL起作用&#x…

linux基本命令以及命令常用选项

linux基本命令以及命令常用选项touch 创建文件,改变恩建时间戳,如果直接跟上一个文件,该文件不存在则创建文件-c文件不存在不创建文件,存在则改变文件的时间戳-a只改变文件的访问时间-m改变文件的修改时间-t时间格式CCYYMMDDhhmm…

Java获取上一周、上一个月、上一年的时间

SimpleDateFormat format new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); Calendar c Calendar.getInstance(); 1.过去七天 c.setTime(new Date()); c.add(Calendar.DATE, - 7); Date d c.getTime(); String day format.format(d); System.out.println(“过去七天&#…

远程网络安装RHEL5

一:Linux安装工作原理 众所周知,在安装过程中Linux首先需要一个引导程序来让安装光盘启动,再实行配置与安装。但目前转化为远程网络安装那么就需要我们的安装程序能够远程地通过网络传送给客户端。因此在搭建远程Linux安装服务器时候首先要值…

sed命令操作

sed 是一种数据流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区(pattern space称为“模式空间”)中,在内存中处理,完成后把该行发送到屏幕上,清理pattern space中的内容,接着重复刚才的动作,读入下一行,直到文件处理结束。文件内容并没有 改变,…

Portainer简介及部署

一、介绍 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用…

Nexus搭建Maven私有仓库

一、使用Docker安装Nexus 1、查询当前有哪些Nexus镜像 docker search nexus2、下载sonatype/nexus3 docker pull docker.io/sonatype/nexus33、运行nexus容器 mkdir -p /usr/local/nexus3/nexus-data #新建挂载目录 chown -R 200 /usr/local/nexus3/nexus-datadocker run -…

VI资料收集

1.6.1 vi 的工作模式Vi 在初始启动后首先进入编辑模式,这时用户可以利用一些预先定义的按键来移动光标、删除文字、复制或粘贴文字等。这些按键均是普通的字符,例如 l 是向右移动光标,相当于向右箭头键,k 是向下移动光标&#xff…

linux终端

终端就是处理计算机主机输入输出的一套设备,它用来显示主机运算的输出,并且接受主机要求的输入,典型的终端包括显示器键盘套件,打印机打字机套件等 linux终端类型终端名称标识含义串行端口终端Serial Port Terminal/dev/ttySx 串行…

日常问题——VMware下的CentOS7 Ping不通百度

问题描述: 在VMware下新创建的CentOS ping 不通百度 解决方案: 1、点击VMware的编辑按钮下的虚拟网络编辑器 2、更改设置后,选择NAT类型,点击NAT设置 3、记录下,子网ip,掩码,网管IP信息 4、…

linux查找文件find

查找命令文件whatis 从path还从man中查找which 从path环境变量中查找文件查找locate /var/lib/mlocate/mlocate.db 通过update更新数据库 find 默认动作是 -print -ls -delete -ok -exec 命令 {} \; -name根据文件名查找-iname忽略大小写-size根据文件及目录大小查找…

linux下用ntp对时

更新系统时间的命令用&#xff1a;ntpdate <时间服务器>教育网下常用的时间服务器有s1a.time.edu.cn&#xff0c;或者210.72.145.44ntpdate 210.72.145.44更多教育下的时间服务器可在这里找到&#xff1a; http://www.time.edu.cn/mem.htm。如果想让系统退出时的把时间写…

CentOS7.6下安装Ambari

一、准备工作 1.1、准备三台CentOS 1.2、配置静态IP、DNS vi /etc/sysconfig/network-scripts/ficfg-ens33IPADDR为 配置的ip NETMASK 子网掩码 GATEWAY 网关 配置保存后重启虚拟网络 service network restart1.3、配置Hostname vi /etc/hostname#将第一行替换成新名字 m…

多主机推送公钥、修改配置、修改密码脚本

推送公钥&#xff1a; !#/bin/bash if [! -f ~/.ssh/id_rsa ] ;thenssh-keygen -P "" -f ~/.ssh/id_rsa fifor i in seq 100 do {ip192.168.1.$iping -c1 $ip &>/dev/nullif [ $? -eq 0];thenecho $ip |tee addreee/usr/bin/expect<<-EOFset time 10…

shell生活序

从编程语言的观点看linux shell-变量的作用域&#xff0c;环境变量&#xff0c;位置变量我们仍以BASH 为讨论的shell 语言每一种编程语言中&#xff0c;我们都会碰到变量的作用域的问题。&#xff08;比如在函数中定义的变量在函数外不能使用的)BASH 中也有类似的问题&#xff…

linux下安装phantomjs

PhantomJS俗称为&#xff1a;无界面的浏览器。 PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能&#xff0c;使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情。 1、下载安装包 官网下载地址&#xff1a;htt…

shell 生活0806012145

引用&#xff1a;        学习 Shell Scripts 如果您真的很想要走信息这条路&#xff0c;并且想要好好的管理好属于您的主机&#xff0c;那么&#xff0c;别说鸟哥不告诉您&#xff0c; Shell Scripts 真的是必须要学习的一项课题呢&#xff01;基本上&#xff0c; shel…