Linux特殊符号大全
linux 双斜杠表达式

linux 双斜杠表达式在Linux系统中,双斜杠(//)是一种特殊的表达式,它在不同的上下文中具有不同的意义和用法。
在本文中,我将详细介绍双斜杠表达式在Linux中的几种常见用法,并探讨其最佳实践。
首先,双斜杠可以用作注释符号。
在Linux中,注释用于说明代码的功能或提供相关的说明。
在大多数编程语言中,使用双斜杠可以将一行代码或一段代码标记为注释,从而使其在程序执行时被忽略。
这是一种广泛使用的注释形式,因为它简单明了,易于阅读和理解。
例如,在C语言中,我们可以使用双斜杠注释掉一行代码,如下所示:int x = 10; // 定义一个变量x并初始化为10另外,双斜杠也可以用于正则表达式。
正则表达式是一种强大的模式匹配工具,用于在文本中查找和替换特定的模式。
在正则表达式中,双斜杠用于包裹模式,并与其他字符结合使用以定义匹配规则。
例如,下面的正则表达式将匹配所有以字母开头的单词:/[a-zA-Z]+/此外,双斜杠还可以用于文件路径。
在Linux中,文件路径用于指定文件或目录的位置。
在文件路径中,双斜杠用于分隔目录层级。
例如,下面的路径指定了一个名为"test"的目录下的一个名为"file.txt"的文件:/home/user/test/file.txt需要注意的是,在Linux中,文件路径是区分大小写的,因此使用正确的大小写非常重要。
最后,双斜杠还可以用于URL(统一资源定位符)。
URL用于指定互联网上的资源位置。
在URL中,双斜杠用于分隔协议和主机名。
例如,下面的URL指定了一个名为""的网站上的一个名为"index.html"的页面:/index.html在使用URL时,我们可以根据需要指定不同的协议,例如HTTP、HTTPS、FTP等。
综上所述,双斜杠在Linux中具有多种用途和用法。
它可以用作注释符号、正则表达式、文件路径和URL中的分隔符。
每日linux命令学习-引用符号(反斜杠,单引号,双引号)

每⽇linux命令学习-引⽤符号(反斜杠,单引号,双引号)引⽤符号在解析器中保护特殊元字符和参数扩展,其使⽤⽅法有3种:反斜杠(\),单引号(’‘),双引号(“”)。
单引号和双引号必须匹配使⽤,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要⽤于信息的原样输出,防⽌任何变量的扩展,双引号(软转义)允许变量扩展、转义符和命令替换。
单引号保护双引号,双引号保护单引号。
1. 反斜杠反斜杠通过解析器将1个字符转化为引⽤符号或转义。
1)在单引号内使⽤反斜杠,反斜杠不会被解析,保持原样输出。
2)在双引号内使⽤反斜杠,主要⽤于美元符号($),反单引号(``),双引号(""),单引号('')的输出,以及转义符的解析,其中单引号的输出中,反斜杠和双引号不能同时使⽤。
3)不使⽤单引号和双引号(如:echo \,输出为空),则反斜杠可以被看做⾃动忽略。
2. 单引号1)单引号内不允许任何变量、元字符、通配符、转义符的解析,均被原样输出。
2)使⽤双引号或反斜杠转义可显⽰输出单引号,但是双引号和反斜杠不能被同时使⽤。
如命令:echo “\'”,输出结果会为(\'),⽽不是(')3)可解析正则表达式,与sed和grep命令配合使⽤3. 双引号保护特殊元字符和通配符不被shell解析,但是允许变量和命令替换,以及转义符的解析。
4. 附录在此顺便学习⼀下linux常见的特殊字符,包括通配符、转义符和元字符。
4.1 通配符(wildcard)通配符实际上是⼀种shell实现的路径扩展功能,当shell在“参数”中遇到通配符后,会将其当做路径或⽂件名在磁盘上搜寻可能的匹配,以下表格中列出了⽐较常⽤的shell通配符,以供⼤家参考和学习。
字符含义实例*匹配⼀个或多个字符a*b a与b之间可以有任意长度的字符匹配任意⼀个字符a?b a与b之间必须也只能有⼀个字符[list]匹配list中任意单⼀字符a[xyz]b a与b之间必须也只能有⼀个[xyz]之间的字符a[0-9]b a与b之间必须也只能有⼀个0-9之间的数字字符a[!0-9]b a与b之间有且只有⼀个字符,同时字符不能为0-9{string list}匹配字符串列表中的任⼀字符串a{abc,xyz,123}b a与b之间只能为abc或xyz或123需要说明的是,通配符与正则表达式语句有些相似,但它与正则表达式不同,只能将其理解为shell特殊字符即可,⽽且只涉及*,?,[]和{}。
linux中特殊符号大全

在linux中你会用这些特殊符号吗?在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=# 井号 (comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。
# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。
这常用在撰写过程中。
#echo "a = $a" # a = 0如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。
~ 帐户的 home 目录算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user 或者当成是路径的一部份:~/bin~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。
# echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。
# echo ~-/etc/httpd/logs; 分号 (Command separator)在 shell 中,担任"连续指令"功能的符号就是"分号"。
譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.;; 连续分号 (Terminator)专用在 case 的选项,担任 Terminator 的角色。
程序运行之ELF符号表

程序运⾏之ELF符号表当⼀个⼯程中有多个⽂件的时候,链接的本质就是要把多个不同的⽬标⽂件相互粘到⼀起。
就想玩具积⽊⼀样整合成⼀个整体。
为了使不同的⽬标⽂件之间能够相互粘合,这些⽬标⽂件之间必须要有固定的规则才⾏。
⽐如⽬标⽂件B⽤到了⽬标⽂件A中的函数”foo”,那么我们就称⽬标⽂件A定义了函数foo,⽬标⽂件B引⽤了函数foo。
每个函数和变量都有⾃⼰独特的名字,避免链接过程中不同变量和函数之间的混淆。
在链接过程中,我们将函数和变量统称为符号。
函数或者变量名就是符号名每⼀个⽬标⽂件都会有⼀个相应的符号表,这个表⾥⾯记录了⽬标⽂件中所⽤到的所有符号。
每个定义的符号有⼀个对应的值,叫做符号值,对于变量和函数来说,符号值就是它们的地址。
我们可以通过nm命令来查看⽬标⽂件中的符号结果。
root@zhf-maple:/home/zhf/c_prj# nm main.o0000000000000000 T func10000000000000004 C global_init_varU _GLOBAL_OFFSET_TABLE_0000000000000000 D global_var0000000000000024 T mainU printf0000000000000000 b static_var2.22570000000000000004 d static_var.2256符号表条⽬有如下结构(from elf.h):typedef struct {ELF32_Word st_name;ELF32_Addr st_value;ELF32_Word st_size;unsigned char st_info;unsigned char st_other;Elf32_Half sth_shndx;} Elf32_Sym;ELF符号表域说明:域描述st_name符号串表索引. 串表⽤于保存符号名.st_value符号值:符号的section索引为SHN_COMMON:符号对齐要求.重定位⽂件:离section起始位置的偏移.执⾏⽂件:符号的地址.st_size对象⼤⼩.st_info >> 4⾼4位定义符号的绑定[binding ]:STB_LOCAL (0) symbol is local to the fileSTB_GLOBAL (1) symbol is visible to all object filesSTB_WEAK (2) symbol is global with lower precedencest_info & 15低4位定义符号的类型:STT_NOTYPE (0) ⽆类型STT_OBJECT (1) 数据对象(变量)STT_FUNC (2) 函数STT_SECTION (3) section名STT_FILE (4) ⽂件名st_other未使⽤.st_shndx定义符号sectiond的索引.特殊的section数包括:SHN_UNDEF (0x0000) 未定义sectionSHN_ABS (0xfff1) 绝对, 不可重定位符号SHN_COMMON (0xfff2) 不分配, 外部变量符号所在的段宏定义名值说明SHN_ABS0xfff1该符号包含了⼀个绝对值,⽐如表⽰⽂件名的符号SHN_COMMON0xfff2表⽰该符号是⼀个"COMMON块"的符号⼀般来说,未初始化的全局符号定义就是这种类型的。
linux特殊符号大全

linux特殊符号⼤全在shell中常⽤的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=# 井号 (comments)这⼏乎是个满场都有的符号,除了先前已经提过的"第⼀⾏"#!/bin/bash井号也常出现在⼀⾏的开头,或者位于完整指令之后,这类情况表⽰符号后⾯的是注解⽂字,不会被执⾏。
# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执⾏某⾏指令时,只需在该⾏开头加上 # 就⾏了。
这常⽤在撰写过程中。
#echo "a = $a" # a = 0如果被⽤在指令中,或者引号双引号括住的话,或者在倒斜线的后⾯,那他就变成⼀般符号,不具上述的特殊功能。
~ 帐户的 home ⽬录算是个常见的符号,代表使⽤者的 home ⽬录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user或者当成是路径的⼀部份:~/bin ~+ 当前的⼯作⽬录,这个符号代表当前的⼯作⽬录,她和内建指令 pwd的作⽤是相同的。
# echo ~+/var/log~- 上次的⼯作⽬录,这个符号代表上次的⼯作⽬录。
# echo ~-/etc/httpd/logs; 分号 (Command separator)在 shell 中,担任"连续指令"功能的符号就是"分号"。
譬如以下的例⼦:cd ~/backup ; mkdir startup ;cp ~/.* startup/.;; 连续分号 (Terminator)专⽤在 case 的选项,担任 Terminator 的⾓⾊。
linux常用符号

Linux常用的符号包括:
1. `*`:表示匹配以该符号开头的任何文件名或目录名。
2. `?`:表示匹配任何单个字符。
3. `[]`:表示匹配方括号中的任何一个字符。
4. `()`:表示将几个命令组合成一个命令组。
5. `{}`:表示将几个命令组合成一个命令组,与大括号匹配。
6. `|`:表示管道符,将前一个命令的输出作为下一个命令的输入。
7. `<`、`>`:分别表示将输入重定向到文件或设备,或将输出重定向到文件或设备。
8. `&`:表示将命令放到后台执行。
9. `;`:表示在同一个命令行中执行多个命令,以分号分隔。
10. `:`:表示空命令,不执行任何操作。
11. `#`:表示注释符号,后面的内容被注释掉,不会被执行。
12. `$`:表示变量符号,用于引用变量值。
13. `%`:表示求余符号,用于计算整数除法的余数。
14. `/`:表示路径分隔符,用于分隔目录路径。
15. `\`:表示转义符号,用于转义特殊字符。
数据结构的特殊符号 大全

数据结构的特殊符号大全数据结构中常见的特殊符号有很多,下面是一些常见的特殊符号及其含义:1. `{}`,花括号,表示一个集合或者一个代码块的开始和结束。
2. `[]`,方括号,用于表示数组或者列表。
3. `()`,圆括号,用于表示函数调用、运算符优先级和分组。
4. `<>`,尖括号,用于表示泛型类型参数。
5. `.`,点号,用于表示对象的成员访问。
6. `:`,冒号,用于表示赋值、声明变量类型、键值对之间的分隔符。
7. `;`,分号,用于表示语句结束。
8. `=`,等号,用于表示赋值操作。
9. `+`,加号,用于表示加法操作。
10. `-`,减号,用于表示减法操作。
11. ``,乘号,用于表示乘法操作。
12. `/`,除号,用于表示除法操作。
13. `%`,取模运算符,用于取得两个数相除的余数。
14. `==`,等于号,用于表示相等比较。
15. `!=`,不等于号,用于表示不等比较。
16. `>`,大于号,用于表示大于比较。
17. `<`,小于号,用于表示小于比较。
18. `>=`,大于等于号,用于表示大于等于比较。
19. `<=`,小于等于号,用于表示小于等于比较。
20. `&&`,逻辑与运算符,用于表示逻辑与操作。
21. `||`,逻辑或运算符,用于表示逻辑或操作。
22. `!`,逻辑非运算符,用于表示逻辑非操作。
23. `&`,位与运算符,用于表示按位与操作。
24. `|`,位或运算符,用于表示按位或操作。
25. `^`,位异或运算符,用于表示按位异或操作。
26. `~`,位非运算符,用于表示按位取反操作。
27. `<<`,左移运算符,用于将一个数的各二进制位全部左移若干位。
28. `>>`,右移运算符,用于将一个数的各二进制位全部右移若干位。
以上是一些常见的数据结构中使用的特殊符号,它们在编程语言中起着重要的作用,用于表示不同的操作和语义。
linux elf 符号表

linux elf 符号表摘要:1.引言2.Linux ELF 文件结构概述3.符号表的定义与作用4.符号表的类型5.符号表的编码方式6.符号表的应用示例7.结论正文:1.引言Linux 是一个广泛使用的开源操作系统,其背后的核心技术之一就是ELF (Executable and Linkable Format)可执行和可链接文件格式。
在ELF 文件中,符号表是一个重要的组成部分,它记录了程序中各种符号的信息,如函数名、变量名等。
本文将详细介绍Linux ELF 文件中的符号表。
2.Linux ELF 文件结构概述ELF 文件由三部分组成:ELF 头部(ELF Header)、程序头部表(Program Header Table)和节(Section)。
- ELF 头部:包含了ELF 文件的类型、入口地址等信息。
- 程序头部表:包含了多个程序头部,每个程序头部对应一个ELF 节。
- 节:是ELF 文件中可执行代码和数据的组织单位,包含了代码、数据、符号表等各种信息。
3.符号表的定义与作用符号表是一个数据结构,用于存储程序中各种符号的信息,如函数名、变量名等。
在ELF 文件中,符号表位于某个节(Section)内,通常以".symtab" 或".dynsym" 命名。
符号表的主要作用是:- 为调试器提供符号信息,方便程序员调试程序。
- 作为链接器链接目标文件的依据,确保链接过程中符号的正确解析。
4.符号表的类型符号表有多种类型,根据不同的需求和应用场景,可以选择不同类型的符号表:- 普通符号表(Common Symbol Table):包含了所有可见的符号(即在当前模块中定义的符号和在其他模块中引用的符号)。
- 动态符号表(Dynamic Symbol Table):包含了所有动态加载的符号,如共享库中的符号。
- 弱符号表(Weak Symbol Table):包含了弱符号,即在链接过程中可以被其他符号覆盖的符号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux特殊符号大全在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $$$ $* "string"* **: ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=?# 井号(comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。
# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上# 就行了。
这常用在撰写过程中。
#echo "a = $a" # a = 0如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。
~ 帐户的home 目录算是个常见的符号,代表使用者的home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user或者当成是路径的一部份:~/bin~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令pwd的作用是相同的。
# echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。
# echo ~-/etc/httpd/logs; 分号(Command separator)在shell 中,担任"连续指令"功能的符号就是"分号"。
譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.;; 连续分号(Terminator)专用在case 的选项,担任Terminator 的角色。
case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version " ;;esac. 逗号(dot,就是“点”)在shell 中,使用者应该都清楚,一个dot 代表当前目录,两个dot 代表上层目录。
CDPATH=.:~:/home:/home/web:/var:/usr/local在上行CDPATH 的设定中,等号后的dot 代表的就是当前目录的意思。
如果档案名称以dot 开头,该档案就属特殊档案,用ls 指令必须加上-a 选项才会显示。
除此之外,在regularexpression 中,一个dot 代表匹配一个字元。
'string' 单引号(single quote)被单引号用括住的内容,将被视为单一字串。
在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
heyyou=homeecho '$heyyou' # We get $heyyou"string" 双引号(double quote)被双引号用括住的内容,将被视为单一字串。
它防止通配符扩展,但允许变量扩展。
这点与单引数的处理方式不同。
heyyou=homeecho "$heyyou" # We get home`command` 倒引号(backticks)在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。
要处理这种情况,我们得用倒单引号来做。
fdv=`date +%F`echo "Today $fdv"在倒引号内的date +%F 会被视为指令,执行的结果会带入fdv 变数中。
, 逗点(comma,标点中的逗号)这个符号常运用在运算当中当做"区隔"用途。
如下例#!/bin/bashlet "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"echo "t1= $t1, a = $a, b = $b"/ 斜线(forward slash)在路径表示时,代表目录。
cd /etc/ ../..cd /通常单一的/ 代表root 根目录的意思;在四则运算中,代表除法的符号。
let "num1 = ((a = 10 / 2, b = 25 / 5))"\ 倒斜线在交互模式下的escape 字元,有几个作用;放在指令前,有取消aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。
# type rmrm is aliased to `rm -i'# \rm ./*.log上例,我在rm 指令前加上escape 字元,作用是暂时取消别名的功能,将rm 指令还原。
# bkdir=/home# echo "Backup dir, \$bkdir = $bkdir"Backup dir,$bkdir = /home上例echo 内的\$bkdir,escape 将$ 变数的功能取消了,因此,会输出$bkdir,而第二个$bkdir则会输出变数的内容/home。
| 管道(pipeline)pipeline 是UNIX 系统,基础且重要的观念。
连结上个指令的标准输出,做为下个指令的标准输入。
who | wc -l善用这个观念,对精简script 有相当的帮助。
! 惊叹号(negate or reverse)通常它代表反逻辑的作用,譬如条件侦测中,用!= 来代表"不等于"if [ "$"!= 0 ]thenecho "Executes error"exit 1fi在规则表达式中她担任"反逻辑" 的角色ls a[!0-9]上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。
: 冒号在bash 中,这是一个内建指令:"什么事都不干",但返回状态值0。
:echo $# 回应为0: > f.$$上面这一行,相当于cat /dev/null >f.$$。
不仅写法简短了,而且执行效率也好上许多。
有时,也会出现以下这类的用法: ${HOSTNAME} ${USER}${MAIL}这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。
像这种检查如果使用类似test 或if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。
除了上述之外,还有一个地方必须使用冒号PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla在使用者自己的HOME 目录下的 .bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。
问号(wild card)在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含null 字元。
# ls a?a1善用她的特点,可以做比较精确的档名匹配。
* 星号(wild card)相当常用的符号。
在文件名扩展(Filename expansion)上,她用来代表任何字元,包含null 字元。
# ls a*a a1 access_log在运算时,它则代表"乘法"。
let "fmult=2*3"除了内建指令let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。
不过在使用上得小心,他的前面必须加上escape 字元。
** 次方运算两个星号在运算时代表"次方" 的意思。
let "sus=2**3"echo "sus = $sus" # sus = 8$ 钱号(dollar sign)变量替换(Variable Substitution)的代表符号。
vrs=123echo "vrs = $vrs" # vrs = 123另外,在Regular Expressions 里被定义为"行" 的最末端(end-of-line)。
这个常用在grep、sed、awk 以及vim(vi) 当中。
${} 变量的正规表达式bash 对${} 定义了不少用法。
以下是取自线上说明的表列${parameter:-word} ${parameter:=word} ${parameter:word} ${parameter:+word} ${parameter:offset} ${parameter:offset:length} ${!prefix*} ${#parameter} ${parameter#word} ${parameter##word} ${parameter%word} ${parameter%%word} ${parameter/pattern/string} ${parameter...个位数的,可直接使用数字,但两位数以上,则必须使用{} 符号来括住。
$* 则是代表所有引用变量的符号。
使用时,得视情况加上双引号。
echo "$*"还有一个与$* 具有相同作用的符号,但效用与处理方式略为不同的符号。
$@$@ 与$* 具有相同作用的符号,不过她们两者有一个不同点。
符号$* 将所有的引用变量视为一个整体。
但符号$@ 则仍旧保留每个引用变量的区段观念。
$#这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。
echo "$#"$ 状态值?(status variable)一般来说,UNIX(linux) 系统的进程以执行系统调用exit()来结束的。
这个回传值就是status 值。
回传给父进程,用来检查子进程的执行状态。
一般指令程序倘若执行成功,其回传值为0;失败为1。
tar cvfz /home/user > /dev/nullecho"$"$$由于进程的ID是唯一的,所以在同一个时间,不可能有重复性的PID。
有时,script会需要产生临时文件,用来存放必要的资料。