我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux学堂之bash常见特殊字符集合

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux学堂之bash常见特殊字符集合

  众所周知使用Linux时往往离不开对shell的使用,而使用shell又往往离不开对bash的使用。在bash中有着很多的特殊字符,如果没有系统的归纳我们在使用时就很容易出错。为此在本文中编程学习网笔者就简单为大家总结了一些bash特殊字符的集合供大家参考参考,让大家在使用bash时更加得心应手。

Linux学堂之bash常见特殊字符集合_考试认证_Linux认证_Linux_编程学习网

 


   #注释符号(Hashmark)

  在shell文件的行首作为shell调用解释器标记,比如#!/bin/bash

  在配置文件中作为注释使用。通常在一行中#后面的内容并不会被执行。

  


 

  ;作为多命令的分隔符(Command separator [semicolon])

  ● 多个命令要放在同一行的时候我们可以通过使用分号来进行分隔的操作。

  


 

  ;;连续分号(Terminator [double semicolon])

  ● 当我们在使用case选项的时候,;;作为每个选项的终结符。

  


 

  .点号(dot command)

  执行当前目录文件。

  #!/bin/bash

  .Pythontab-file

  作为文件名的一部分。在文件名的开头表示该文件为隐藏文件。

  作为目录名。一个点代表当前目录,两个点号代表上层目录(当前目录的父目录)。需要大家注意的是两个以上的点不出现,除非用引号(单/双)包围作为点号字符本身。

  正则表达式中点号表示任意一个字符。

  


 

  "双引号(double quotation marks)

  ● 部分引用。双引号包围的内容可以允许变量扩展,也允许转义字符的存在。

  


 

  '单引号(full quoting [single quote])

  ● 单引号括住的内容,所有字符均作为字符本身处理。

  


 

  ,逗号(comma operator [comma])

  ● 通常用在连接一连串的数学表达式中,这串数学表达式均被求值,但只有最后一个求值结果被返回。比如:

  #!/bin/bash

  lett1=((a=5+1,b=7+2))

  echot1=$t1,a=$a,b=$b

  ##这个$t1=$b;

  


 

  \\反斜线,反斜杆(escape [backslash])

  放在特殊符号之前。转义特殊符号的作用,仅表示特殊符号本身,这在字符串中常用。

  放在一行指令的最末端。表示紧接着的回车无效(其实也就是转义了Enter),后继新行的输入仍然作为当前指令的一部分。

  


 

  /斜线,斜杆(Filename path separator [forward slash])

  作为路径的分隔符。路径中仅有一个斜杆表示根目录,以斜杆开头的路径表示从根目录开始的路径。

  在作为运算符的时候表示除法符号。比如:a=4/2

  


 

  `反引号,后引号(Command substitution [backquotes])

  ● 命令替换。这个引号包围的为命令,可以执行包围的命令,并将执行的结果赋值给变量。比如:a=`dirname'/tmp/x.log'`。后面dirname返回的结果会赋值给a。此时需要大家注意的地方是此处Mitchell特地使用了反引号和单引号。

  


 

  :冒号(null command [colon])

  空命令。表示这个命令什么都不做但是有返回值,返回值为0(也就是表示true)。

  可做while死循环的条件。

  在if分支中作为占位符(也就是某一分支什么都不做的时候)。

  放在必须要有两元操作的地方作为分隔符,比如::${username=`whoami`}

  在参数替换中为字符串变量赋值,在重定向操作(>)中把一个文件长度截断为0(:>>这样用的时候,目标存在则什么都不做),这个只能在普通文件中使用而不能在管道,符号链接和其他特殊文件中使用。

  用来注释(#后的内容不会被检查,但:后的内容会被检查,如果有语句如果出现语法错误则会报错)。

  作为域分隔符。比如环境变量$PATH中或者passwd中都有冒号的作为域分隔符的存在。

  作为函数名。不过这个会将冒号的本来意义转变(如果你不小心作为函数名,我们可以使用unset-f:来取消function的定义)。

  


 

  !感叹号(reverse (or negate) [bang],[exclamation mark])

  表示取反一个测试结果或退出状态。

  表示反逻辑,比如后面的!=,这个是表示不等于。

  表示取反,比如:lsa[!0-9]#表示a后面不是紧接一个数字的文件。

  在不同的环境里面感叹号也可以出现在间接变量引用里面。

  在命令行中可以用于历史命令机制的调用,我们可以试试!$,!#或者!-3。不过要注意这点特性不能在脚本文件里面使用(被禁用)。

  


 

  *星号(wildcard/arithmetic operator [asterisk])

  作为匹配文件名扩展的一个通配符能自动匹配给定目录下的每一个文件。

  正则表达式中可以作为字符限定符,表示其前面的匹配规则匹配任意次。

  算术运算中表示乘法。

  


 

  **双星号(double asterisk)

  ● 算术运算中表示求幂运算。

  


 

  ?问号(test operator/wildcard [Question mark])

  表示条件测试。

  在双括号内表示C风格的三元操作符((condition?true-result:false-result))

  参数替换表达式中用来测试一个变量是否设置了值。

  作为通配符用于匹配文件名扩展特性中,用于匹配单个字符。

  正则表达式中表示匹配其前面规则0次或者1次。

  


 

  $美元符号(Variable substitution [Dollar sign])

  作为变量的前导符用作变量替换,也就是引用一个变量的内容,比如:echo$PATH

  在正则表达式中被定义为行末(Endofline)。

  


 

  ${}参数替换(Variable substitution)

  ● 用于在字符串中表示变量。

  


 

  $‘...’

  ● 引用内容展开,执行单引号内的转义内容(单引号原本是原样引用的),这种方式会将引号内的一个或者多个[\\]转义后的八进制,十六进制值展开到ASCII或Unicode字符。

  


 

  $*/$@位置参数(Positional Parameters)

  ● 通常会在使用脚本文件的时候,在传递参数的时候会用到。两者都能返回调用脚本文件的所有参数,但$*是将所有参数作为一个整体返回(字符串),而$@是将每个参数作为单元返回一个参数列表。需要大家注意的地方是,在使用的时候需要用双引号将$*,$@括住。一般来说这两个变量受到$IFS的影响,在实际应用中我们要考虑其中的一些细节。

  


 

  $#

  ● 表示传递给脚本的参数数量。

  


 

  $?

  ● 此变量值在使用的时候,返回的是最后一个命令、函数、或脚本的退出状态码值,如果没有错误则是0,如果为非0则表示在此之前的最后一次执行有错误。

  


 

  $$

  ● 进程ID变量。这个变量保存了运行当前脚本的进程ID值。

  


 

  ()圆括号(parentheses)

  命令组(Commandgroup)。由一组圆括号括起来的命令是命令组,命令组中的命令实在子shell(subshell)中执行。因为是在子shell内运行,因此在括号外面是没有办法获取括号内变量的值,但反过来命令组内是可以获取到外面的值,这点有点像局部变量和全局变量的关系,在实作中如果碰到要cd到子目录操作并在操作完成后要返回到当前目录的时候,我们可以考虑使用subshell来处理。

  用于数组的初始化。

  


 

  {x,y,z,...}花括号扩展(Brace Expansion)

  ● 在命令中可以用这种扩展来扩展参数列表,命令将会依照列表中的括号分隔开的模式进行匹配扩展。需要注意的一点是,这花括号扩展中不能有空格存在,如果确实有必要空格则必须被转义或者使用引号来引用。比如:echo{a,b,c}-{\\d,"e",'f'}

  ● {a..z} 在Bashversion3时添加了这种花括号扩展的扩展,可以使用{A..Z}表示A-Z的所有字符列表。这种方式的扩展Mitchell测试了一下好像仅适用于A-Z,a-z,还有数字{最小..最大}的这种方式扩展。

  


 

  {}代码块(curly brackets)

  ● 这个是匿名函数但是又与函数不同,在代码块里面的变量在代码块后面仍能访问。需要大家注意的是花括号内侧需要有空格与语句分隔。另外在xargs-i中的话还可以作为文本的占位符,用以标记输出文本的位置。

  ● {}\\;这个{}是表示路径名。这个并不是shell内建的,现在接触到的情况看好像只用在find命令里。另外我们要注意后面的分号,这个是结束find命令中-exec选项的命令序列,在实际使用的时候要转义一下以免被shell理解错误。

  


 

  []中括号(brackets)

  测试的表示。Shell会测试在[]内的表达式,需要大家注意的是,[]是Shell内建的测试的一部分而非使用外部命令/usr/bin/test的链接。

  在数组的上下文中表示数组元素,方括号内填上数组元素的位置就能获得对应位置的内容,比如:

  ● Array[1]=xxx

  ● echo${Array[1]}

  表示字符集的范围。在正表达式中方括号表示该位置可以匹配的字符集范围。

  


 

  [[]]双中括号(double brackets)

  ● 这个结构也是测试。测试[[]]之中的表达式(Shell的关键字)。这个比单中括号更能防止脚本里面的逻辑错误,比如:&&,||,<,>操作符能在一个[[]]里面测试通过,但是在[]却不能通过。[[]]里面没有文件名扩展(filename expansion)或是词分隔符(word splitting),但是可以用参数扩展(Parameter expansion)和命令替换(command substitution)。不用文件名通配符和像空白这样的分隔符。注意这里面如果出现了八进制,十六进制等,shell会自动执行转换比较。

  


 

  $[...]词表达表示整数扩展(integer expansion)

  在方括号里面执行整数表达式。比如:

  ● a=3

  ● b=7

  ● echo$[$a+$b]

  ● echo$[$a*$b]

  ● ##返回是10和21

  


 

  (())双括号(double parentheses)

  表示整数扩展(integer expansion)。

  ● 在双括号结构中所有表达式可以像C语言一样,比如:a++,b--等。

  ● 在双括号结构中所有变量可以不加入:“$”符号前缀。

  ● 双括号可以进行逻辑运算,四则运算。

  ● 双括号结构扩展了for,while,if条件测试运算。

  ● 支持多个表达式运算,各个表达式之间用“,”分开。

  


 

  >/&</>&/>>/</<>重定向(redirection)

  ● scriptname>filename重定向scriptname的输出到文件filename中去,如果filename文件存在则覆盖原来文件。

  ● command&>filename重定向command的标准输出(stdout)和标准错误(stderr)到文件filename中。

  ● command>&2把command的标准输出(stdout)重定向到标准错误(stderr)中。

  ● scriptname>>filename把scriptname的输出(同>)追加到文件filename中,如果文件不存在则创建。一个>表示文件存在就覆盖,不存在就创建,两个>>表示不存在就创建,存在就在原有基础上增加。

  ● [i]<>filename打开filename这个文件用来读或者写,并且给文件指定i为它的文件描述符(filedescriptor),文件不存在就会创建。

  


 

  <<双小于号(here-document [double less then marks])

  ● 这个也被称为Here-document,用来将后继的内容重定向到左侧命令的stdin中。<<可以节省格式化时间,别且使命令执行的处理更容易。在实作的时候只需要输入<<和终止标志符,而后(一般是回车后)我们就可以输入任何内容,只要在最后的新行中输入终止标志符,就可以完成数据的导入。使用here-document的时候,我们可以保留空格,换行等。如果要让shell脚本更整洁一点,我们可以在<<和终止符之间放上一个连字符(-)。

  


 

  <<<三个小于号(here-strings)

  ● Here-字串和Here-document类似,here-strings语法:command[args]<<<["]$word["];$word会展开并作为command的stdin。

  


 

  \\<...\\>词界符(word boundary)

  ● 这个是用在正则表达式中的一个特殊分隔符,用来标记单词的分界。比如:the会匹配there,another,them等等,如果仅仅要匹配the,就可以使用这个词界符,\\<the\\>就只能匹配the了。

  


 

  |管道(pipe)

  ● 管道是Linux,Unix都有的概念,是非常基础也是非常重要的一个概念。它的作用是将管道前(左边)的命令产生的输出(stdout)作为管道后(右边)的命令的输入(stdin)。比如:ls|wcl,使用管道就可以将命令连接在一起。注意管道是每一个进程的标准输出都会作为下一个命令的标准输入,期间的标准输出不能跨越管道作为后继命令的标准输入。

  


 

  >|强制重定向(force redirection)

  ● 强制重写已经存在的文件。

  


 

  &与号(Run job in background [ampersand])

  ● 如果命令后面跟上一个&符号,表示这个命令将会在后台运行。

  


 

  &&/||逻辑操作符(logical operator)

  ● 在测试结构中我们可以用这两个操作符来进行连接两个逻辑值。||是当测试条件有一个为真时返回0(真),全假为假;&&是当测试条件两个都为真时返回真(0),有假为假。

  


 

  -减号,连字符(Hyphen/minus/dash)

  作为选项,前缀[option,prefix]使用。

  用于stdin或者stdout的重定向的源或目的[dash].在tar没有bunzip2的程序补丁时,我们可以这样:bunzip2linux-2.6.13.tar.bz2|tarxvf-。将前面解压的数据作为tar的标准输入(这里使用一个-表示)。注意在实作的时候,如果文件名是以[-]开头的,那么在加上这个作为定向操作符的时候可能会出错,此时应该为文件加上合适的前缀路径以避免这种情况发生,同样的在echo变量的时候,如果变量是以[-]开始,那么可能也会产生意想不到的结果,为了保险起见我们可以使用双引号引用标量。

  表示先前的工作目录(previous working directory)。因此如果我们cd到其他目录下要放回前一个路径的时候,可以使用cd-来达到目的,其实这里的[-]使用的是环境变量的$OLDPWD,注意这里的[-]和前一点是不同的。

  减号或者负号,用在算术操作中。

  


 

  ◎ 等号(Equals)

  赋值操作,给变量赋值。注意要有空格在等号两侧。

  在比较测试中作为比较符出现。这里要注意的地方是,如果在中括号中作为比较出现则需要有空格符在等号左右两侧。

  


 

  +加号(Plus)

  算术操作符,表示加法。

  在正则表达式中表示的是其前的这个匹配规则匹配最少一次。

  在命令或过滤器中作为选项标记,在某些命令或者内置命令中使用+来启用某些选项,使用-来禁止。

  在参数替换(parameter substitution)中,+前缀表示替代值(当变量为空的时候,使用+后面的值)。

  


 

  %百分号(modulo [percent sign])

  在算术运算中这个是求模操作符,也就是两个数进行除法运算后的余数。

  在参数替换(parameter substitution)中可以作为模式匹配。比如:

  p=b*9

  var="abcd12345abc479"

  echo${var%p},${var%%p}

  ##从右边开始查找

  ##任何在b和9之间的内容

  ##第一个是找到最短的符合匹配项

  ##后一个是找最大符合的匹配项

  


 

  ~波浪号(Home directory [tilde])

  ● 这个和内部变量$HOME是一样的。默认表示当前用户的家目录(主目录),这个和~/效果一致,如果波浪号后面跟用户名,表示是该用户的家目录。

  


 

  ^脱字符(caret)

  在正则表达式中作为一行的行首(beginning-of-line)位置标志符。

  在参数替换(Parameter substitution)中这个用法有两种,一个脱字符(${var^})或两个(${var^^}),分别表示第一个字母大写,全部大写的意思(Bashversion>=4)。

  


 

  空白 空白符(Whitespace)

  ● 空白符不仅仅是指空格(spaces),还包括制表符(tabs),空行(blank lines)或者这几种的组合。可用做函数的分隔符、分隔命令或变量。由于空行不会影响脚本的行为,所以我们可以用它来规划脚本代码以增加可读性。在内置的特殊变量$IFS可以用来针对某些命令进行输入的参数进行分割,其默认就是空白符。在字符串或变量中如果有空白符,可以使用引号来规避可能的错误。

  


  

  以上就是Linux中bash特殊字符的集合介绍。

  本次的Linux学堂之bash常见特殊字符集合的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习Linux和Linux认证能够起到一定的帮助作用!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux学堂之bash常见特殊字符集合

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux学堂之bash常见特殊字符集合

  众所周知使用Linux时往往离不开对shell的使用,而使用shell又往往离不开对bash的使用。在bash中有着很多的特殊字符,如果没有系统的归纳我们在使用时就很容易出错。为此在本文中编程学习网笔者就简单为大家总结了一些bash特殊字符的集合供大家参考参考,让大家在使用bash时更加得心应手。  
Linux学堂之bash常见特殊字符集合

编程热搜

  • 华为高级工程师认证费用
      华为高级工程师认证费用是多少?华为高级工程师认证要多少钱?华为高级工程师认证是华为认证体系中用于标识个人能力在某一技术领域达到高级工程师级别的证明,认证费用为200美金,通过考试取得的证书3年有效。  华为高级工程师认证费用是必修方向和选修方向的总和,其中必修方向认证费用为300美金,选修方向认证费用为180美金。
    华为高级工程师认证费用
  • 2024年初级软考上半年考试时间安排
    初级软考每年安排两次考试,2024年初级软考上半年考试时间已公布,2024年初级软考上半年考试时间为5月25-28日。2024年初级软考上半年报名时间及入口:根据往年各省初级软考报名时间来看,2024年上半年初级软考报名时间3月份开始,具体请考生关注全国各省2024上半年软考报名时间及入口汇总表,希赛小编将及时为大家更
    2024年初级软考上半年考试时间安排
  • HCIA证书和HCIE哪个比较好?
      HCIA证书和HCIE哪个比较好?华为认证包含三个等级,分别是HCIA(华为认证网络工程师)、HCIP(华为认证网络资深工程师)、HCIE(华为认证互联网专家)认证。  HCIA(Huawei Certified ICT Associate )即华为认证ICT工程师,是华为职业认证中用于标识个人能力在某一技术领域达
    HCIA证书和HCIE哪个比较好?
  • 教你在PPT中创建好看的镜像效果
      当我们在阅读杂志书刊,或者看电影的时候常常都会看到像下图一样的原图片与图片镜像的组合效果的图片,在很多的摄影作品中也会有,我们其实也可以在PPT中轻松实现这种应用于各大媒介的图文特效技巧,不信的话我们一起来学习一下,操作过程其实并不复杂!  下面我们就开始我们的具体操作步骤了,首先第一步,我们需要先打开PowerP
    教你在PPT中创建好看的镜像效果
  • 多媒体应用设计师可以提前交卷吗
      可以。但是多媒体应用设计师提前交卷有时间限制,根据软考的考场规则,按照人力资源和社会保障部文件规定,开考5分钟后应试人员一律禁止入场。专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  软考多媒体应用设计师属于专业技术人员资格考试,专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  根据
    多媒体应用设计师可以提前交卷吗
  • 全国计算机二级C语言程序设计章节练习题及答案(1)
      对于备考计算机二级C语言考试的考生可以多做试题,一方面了解往年考试题型,一方面熟悉往年考点。今天编程学习网小编给大家准备了全国计算机二级C语言程序设计章节练习题及答案(1),供考生们练习。  点击查看:全国计算机二级C语言程序设计章节练习题及答案汇总  判断题  ×1.C++语言和C语言都是面向对象的程序设
    全国计算机二级C语言程序设计章节练习题及答案(1)
  • 广西2024上半年计算机软考什么时候报名?
    广西2024上半年计算机软考3月25日开始报名,具体报名时间见全国各省2024上半年软考报名时间及入口汇总表。2024上半年广西软考考试采用网络报名的方式,考生在规定的报名时间内进入中国计算机技术职业资格网,点击页面右下方的报名入口,进入全国计算机技术与软件专业技术资格(水平)考试网上报名平台,选择“广西”入口后点击进
    广西2024上半年计算机软考什么时候报名?
  • 软考可以申请退税吗
      可以。软考证书是可以抵扣个税的,按照个税6项专项附加扣除标准,在取得软考证书的当年,可以按照3600元定额扣除。  软考证书可以抵扣个税,根据国务院印发的《个人所得税专项附加扣除暂行办法》,第三章继续教育包含三条,具体内容如下:  第八条 纳税人在中国境内接受学历(学位)继续教育的支出,在学历(学位)教育期间按照每
    软考可以申请退税吗
  • win10如何正确禁用IPv6网络协议
       在Windows Vista和Server 2008开始,微软包括本地支持的IPv6(互联网协议第6版),并默认启用。IPv6是新的计算机的地址协议,最终将取代IPv4这是目前最流行的标准。win10中默认开启了对IPv6协议的支持,但是会影响到系统运行速度和磁盘占有率等。除非你的网络有IPv
    win10如何正确禁用IPv6网络协议
  • 2020年数据库系统工程师上午真题及答案解析
      2019上半年数据库系统工程师考试已结束,今天编程学习网小编为大家整理了2020年数据库系统工程师上午真题及答案解析,以便大家了解2020下半年数据库系统工程师基础知识考试真题。  软考数据库系统工程师上午考试为基础知识,编程学习网小编为大家整理了2020年数据库系统工程师上午真题,想知道答案和解析的考生可以直接进入在线题
    2020年数据库系统工程师上午真题及答案解析

目录