千家信息网

linux shell转义符有哪些

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇文章给大家分享的是有关linux shell转义符有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。\t表示水平的制表符\v表示垂
千家信息网最后更新 2025年02月03日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 <一个字符串赋给变量时里面的组成部分可能会被转义,但如果单独一个转义字符(\)是不能赋给变量的。

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

0