linux shell转义符有哪些

发布时间:2021-11-04 10:33:30 作者:柒染
来源:亿速云 阅读:203

本篇文章给大家分享的是有关linux shell转义符有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

\t

表示水平的制表符


\v

表示垂直的制表符


\b

表示后退符


\a

表示“警告”(蜂鸣或是闪动)


\0xx

翻译成ASCII码为八进制0xx所表示的字符


\"

表示引号(")的字面意思

   1 echo "Hello"                  # Hello
   2 echo "\"Hello\", he said."    # "Hello", he said.

\$

表示美元符($)的字面意思(如果在\$跟上变量名将不会引用变量的值)

   1 echo "\$variable01"  # 输出是$variable01

\\

表示反斜杠(\)的字面意思

   1 echo "\\"  # 输出是\
   2 
   3 # 然而 . . .
   4 
   5 echo "\"   # 在命令行,这句将会打印SP2变量值(译者注:变量SP2是输入未完成提示符),并要求你继续输入..
   6            # 在脚本文件里, 这句会出错.

反斜杠的作用要看它是否是自我转义,被引用,或出现在命令替换结构或是在here document里.

  1                       #  简单的转义和引用   2 echo \z               #  z   3 echo \\z              # \z   4 echo '\z'             # \z   5 echo '\\z'            # \\z   6 echo "\z"             # \z   7 echo "\\z"            # \z   8    9                       #  命令替换  10 echo `echo \z`        #  z  11 echo `echo \\z`       #  z  12 echo `echo \\\z`      # \z  13 echo `echo \\\\z`     # \z  14 echo `echo \\\\\\z`   # \z  15 echo `echo \\\\\\\z`  # \\z  16 echo `echo "\z"`      # \z  17 echo `echo "\\z"`     # \z  18   19                       # Here document  20 cat <<EOF                21 \z                        22 EOF                   # \z  23   24 cat <<EOF                25 \\z                      26 EOF                   # \z  27   28 # 这些例子由Stéphane Chazelas提供..

一个字符串赋给变量时里面的组成部分可能会被转义,但如果单独一个转义字符(\)是不能赋给变量的。

  1 variable=\   2 echo "$variable"   3 # 不能工作 - 给出一个错误信息:   4 # test.sh: : command not found   5 # 单独一个转义字符是不能正确地赋给变量的.   6 #   7 #  那上面语句究竟发生了什么呢?实际上转义符"\"转义了新行符,   8 #+ 产生的作用如同       variable=echo "$variable"   9 #+                      而这是无效的变量赋值  10   11 variable=\  12 23skidoo  13 echo "$variable"        #  23skidoo  14                         #  这样就能工作,因为第二行的变量赋值是有效的  15                         #  16   17 variable=\  18 #        \^    转义后面的空格(译者注:粗心的读者一定要注意上面最后的空格)  19 echo "$variable"        # 空格  20   21 variable=\\  22 echo "$variable"        # \  23   24 variable=\\\  25 echo "$variable"  26 # 不能工作 - 产生一个错误:  27 # test.sh: \: command not found  28 #  29 #  第一个\转义第二个\,结果只剩单独的第三个\字符,  30 #+ 这样又会发生上面的情况.  31   32 variable=\\\\  33 echo "$variable"        # \\  34                         # 第二和第四个\字符被转义.  35                         # 这样不会出错了.

转义一个空格可以防止一个字符串参数被分割成多个命令行参数。

   1 file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7"
   2 # 文件列表作为参数传递给命令.
   3 
   4 # 再加两个参数给命令ls,一同列出文件信息.
   5 ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list
   6 
   7 echo "-------------------------------------------------------------------------"
   8 
   9 # 如果我们转义上面的一对空格会发生什么?
  10 ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $file_list
  11 # 出错: 开头的三个文件名被连成一个文件名并传递给了命令'ls -l'
  12 #        因为两个转义字符禁止了空格分割参数的作用。

转义符也提供了写一个多行命令的手段。一般地,每个单独的行有一个不同的命令,而在一行末尾的转义符转义新行符,命令序列则由下一行继续。

   1 (cd /source/directory && tar cf - . ) | \
   2 (cd /dest/directory && tar xpvf -)
   3 # 把Alan Cox目录树全部复制到另外一个目录里,
   4 # 但分为两行可以增加可读性.
   5 
   6 # 你也可以用下面的命令达到一样的效果:
   7 tar cf - -C /source/directory . |
   8 tar xpvf - -C /dest/directory
   9 # 看看下面的注释.
  10 # (多谢,Stéphane Chazelas.)

如果一个脚本行用一个管道线"|"结束行尾,后面可以再跟一个不必一定要的转义符"\"。然而,好的编程习惯最好加上一个转义符“\”。

   1 echo "foo
   2 bar" 
   3 #foo
   4 #bar
   5 
   6 echo
   7 
   8 echo 'foo
   9 bar'    # 没什么不同.
  10 #foo
  11 #bar
  12 
  13 echo
  14 
  15 echo foo\
  16 bar     # 新行符被转义.
  17 #foobar
  18 
  19 echo
  20 
  21 echo "foo\
  22 bar"     # 还是一样,字符\在弱引用中还是被解释为转义字符
  23 #foobar
  24 
  25 echo
  26 
  27 echo 'foo\
  28 bar'     # 由于转义符"\"在强引用符里,所以只能解释为字面上的意思
  29 #foo\
  30 #bar
  31 
  32 # 由Stéphane Chazelas提示写成的例子.

以上就是linux shell转义符有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. 【我的Linux,我做主!】通配符和正则表达式深层解析
  2. linux shell脚本相关知识

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux shell

上一篇:实用Redis可视化工具有哪些

下一篇:分析Angular路由守卫Route Guards

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》