linux shell转义符有哪些

本篇文章给大家分享的是有关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转义符有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/199651.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

相关推荐

发表回复

登录后才能评论