linux中特殊符号用法

1 #

   #  管理员账户

   $  普通账户

  在脚本中 #也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后边是注解文字,不会被执行

例如

    #!/bin/bash

    #this line is comments

   由于这个特性,当临时不想执行某行指令时,可以在行首加上#就你可以了

  如果被用在指令中,或者引号双引号扩住的话,或者在反斜线的后面,那他就变成一般的符号了,不具备上述的功能了

——————————————————————————————————-

2 ~  账户的home目录

   代表用户的home目录, cd ~ 也可以在后面加上某个用户的名称:cd ~ USERNAME,或者当成路径的一部分:~/bin

   ~+  表示当前的工作目录,这个符号代表当前的工作目录,这和内嵌的指令pwd的作用是相同的

   ~-  表示上一次的工作目录

—————————————————————————————————–

3  ; 分号,command separator

   在shell中,担任连续指令功能的符号

—————————————————————————————————–

4  ;; 连续的分号(terminator)

   专用在case条件语句选项中,担任Terminator的角色

—————————————————————————————————–

5  . 点 dot

   在shell中一个.代表当前目录,两个..代表上层目录

—————————————————————————————————–

6   'string' 单引号(single quote)

   被单引号括住的内容,将被视为单一字符串。在引号内的代表变数$符号,没有作用,也就是说,将被视作一般符号处理,放置任何变量替换

   "string"双引号(double quote)

   被双引号括住的内容,将被视为单一字符串,防止通配符的扩展,但允许变量扩展 ,这点与单引号的处理方式不同

   `command` 倒引号(backticks)

   在前面的单引号,括住的字符串如果是命令,那么命令是不会执行的,会被当作平通字符串处理,如果要执行命令,就要使用倒引号

—————————————————————————————————–

7  , 逗号(comma)

  逗号常运用在运算当中当作"区隔"用途

—————————————————————————————————–

8  / 斜线 (forward slash)

  在路径表示时,代表目录

  通常单一的/代表root根目录的意思,在四则运算中,代表除法符号

—————————————————————————————————–

9  \反斜线 

   在交互模式下的反斜线有以下几个作用。

   (1)放在指令前面,有取消别名的作用

   (2)放在特殊符号前面,则该特殊符号作用消失

   (3)放在指令的最末端,表示指令连接下一行。 

—————————————————————————————————–

10  |  管道(pipeline)

  连接上个指令的标准输出,作为下个指令的标准输入。

—————————————————————————————————–

11   ! 惊叹号(negate or reverse)

   通常表示反逻辑的作用,譬如,用!=表示不等于

—————————————————————————————————–

12  : 冒号

   在bash中,冒号是一个内建命令:“什么事都不干”,但是返回对状态值为0。

 例1

  :${HOSTNAME?}${USER?}${MAIL?}

这一行的作用是,检查这些环境变量参数是否已经设置,没有设置的将会以标准错误显示错误信息。

 例2

 写法一

repeat()

{

  while true

  do 

   $@ && return

  done

}

 写法二

repeat()

{

 while :

 do $@ && return

 done

}

   第一种写法中的true是作为/bin下的一个二进制文件来实现的,这就意味这每执行一次while循环,shell就不得不生成一个进程。使用shell内建的:命令,它总是返回为0的退出码,速度比第一种块很多

  除了上述之外,还有一个地方必须使用冒号,在用户自己的HOME目录下的.bash_profilehuo或者任何功能相似的档案中,设定关于PATH的场合中,我们使用冒号来作分隔

—————————————————————————————————–

13  ? 问号(wild card)

 在文件名扩展上表示匹配任意一个字符,但不包含null

 *星号

 在文件名扩展中表示任意字符,包含null

 在运算时表示乘法

—————————————————————————————————–

14  $ 钱号 (dollar sign)

变量替换的代表符号

在正则表达式中被定义为"行"的最末端

—————————————————————————————————–

15 ${}  位置变量的表达式

  $*

    $*引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,以此类推,引用变量的代表方式如下 $0,$1,$2,$3,$4,$5,$6,$7,$8,$9,${10},${11},${12}…..

各位数的可以直接使用数字,但是两位数以上的,则必须使用{}符号括住.    

    $*则是代表引用变量的符号,使用时,要依据情况加上双引号,例如 echo "$*"

    还有一个与$*具有相同作用的符号,但效果和处理方式有些不同  $@

$@

    $@与$*具有相同作用的符号,不过两者有一个不同点。$*将所有的变量视为一个整体,但是$@则仍保留每个引用变量的区段概念

$# 

    $#表示引用变量的总数量是多少

$?状态值(status ariable)

    一般来说,Unix like系统的进程以执行系统调用exit()来结束。这个回传值就是status值。回传给父进程,来检查子进程的执行状态。一般指令执行成功,其回传值为0;失败为1

    由于进程的ID是唯一的,所以在同一时间,不可能有重复的PID。有时script会需要产生临时文件,用来存放必要的材料。而此script有可能在同一时间被使用者们使用。在这种情况下,固定文件名的写法就显得不可靠。唯有产生动态文件名,才能符合要求。符号$$或许可以符合这种要求。他代表当前shell的PID,使用它来作为文件名的一部分,可以避免在同一时间,产生相同文件名的覆盖现象

—————————————————————————————————–

16  ( )指令群组(command group)

    用括号将一串指令括起来,这种用法对shell来说,成为指令群组。指令群组有一个特性,shell会以产生subshell来执行这组指令。因此,在其中所定义的变量,仅作用于指令群组本身。除了指令群组,括号也用在array变量的定义上,另外也应用在其他可能需要加上escape字符才能使用的场合,例如运算式

   ((  ))

    这组括号的作用于了let指令类似,用在算术运算上,是bash的内建功能。所以,在执行效率上会比使用let指令块许多

    {  } 大括号(Block of code)

    有时候script当中会出现,大括号中间夹着一段或几段以分号作结尾的指令或变量设定。这种用法与上面介绍的指令群组非常相似,但是大括号不会在当前的shell中产生subshell   

    大括号也被用在"函数"功能上。广义上说,单纯只适用大括号时,作用就像是个没有指定名称的函数一般。因此,这样写script也是相当好的一件事,尤其对输入输出的重定向上,这个做法可以精简script的复杂的。

    此外,大括号还有另一种用法,如下

{xx,yy,zz,…}

    这种大括号的组合,常用在子串的组合上,例如

mkdir {userA,userB}-{home,bin,data}

    我们得到userA-home,userA-bin,userA-data,userB-home,userB-bin,userB-data这几个目录。这组符号在适用性上相当广泛。再来看个例子

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

    如果不是因为这种用法,我们得写几行重复几次呢?

[  ]中括号

    常出现在流程控制中,扮演括住判断式的作用。if [ "$?" != 0 ];then  echo "execute error";exit 1;fi

    这个符号在正则表达式中担任类似范围的或集合的角色rm -f 200[1234]

[[  ]]

    这组符号与先前的[]符号,基本上作用相同,但它允许在其中直接使用||和&&逻辑等符号

—————————————————————————————————–

17  ||  逻辑符号

    这个代表 or 逻辑的符号

   

   &&  逻辑符号

    这个代表 and 逻辑的符号

  

   &  后台工作

    单一个&符号,且放在完整指令列的最末端,即表示将该指令列放入后台中工作

   \<…\>  单词边界

    这组符号在正则表达式中,被定义为"边界"的意思。当匹配时匹配整个单词

   +  加号plus

     在运算式中,用来表示加法

    在正则表达式中,用来表示匹配前面字元至少一次的意思

   –  减号

    在运算式中,用来表示"减法",expr 10 – 2

    此外也是系统指令的选项符号,ls -la /etc/

    在GNU指令中,如果单独使用 – 符号,不加任何该文件名称时,代表"标准输入"的意思。譬如,tar xpvf-   这里的 – 符号代表从标准输入读取资料

    不过在 cd 指令中比较特别   cd –   这代表变更工作目录到"上一次"工作目录。

————————————————————————————

18   %  除法(Modulo)

    在运算式中,用来表示除法

    此外,也被用在关于变量的正则表达式当中,例如

${parameter%word}${parameter%%word}

    一个%表示最短的word匹配,两个表示最长的word匹配

————————————————————————————

19   = 等号equals

    常在设定变量时看到的符号

    或者是PATH的设定,设置应用在运算或判断式等此类用途上

   ==  等号 equals

    常在条件判断式中看到,代表"等于"的意思

   !=  不等于

    常在条件判断式中看到,代表"不等于"

   ^  

    这个符号在正则表达式中,代表行的"开头"位置,在[]中也与"!"一样表示"非"的意思

————————————————————————————

20   输入/输出重定向

   >  >> <  <<  :>   &>   2&>   2<>>&  >&2

    文件描述符(file descriptor),用一个数字(通常为0-9)来表示一个文件。常用的文件描述符如下

   文件描述符    名称    常用缩写    默认值

     0      标准输入    stdin      键盘

    1      标准输出    stdout      屏幕

    2     标准错误输出    stderr      屏幕

   我们在简单的使用 < 或 > 时,相当于使用 0< 或 1> 

cmd > file

   把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件

cmd >> file

   把cmd命令的输出重定向到文件file中,如果file文件已经存在,则把信息追加到file中

cmd < file

   使cmd命令从file中读入

cmd << text

   从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行业可以是一堆tab再加上一个与text相同的内容  

cmd <<< word

   把word(而不是文件word)和后面的换行行为输入提供给cmd

cmd <> file

   以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的

 

:>filename

   把文件"filename"截断为0长度,如果文件不存在,就创建一个0长度文件(与'touch'的效果相同)

cmd >& n    把输出送到文件描述符n

cmd m>&n     把输出到文件描述符m的信息重定向到文件描述符n

cmd >&-     关闭标注输出

cmd <&n    输入来自文件描述符n

cmd m<&n     m来自文件描述符n

cmd <&-     关闭标准输入

cmd <&n-    移动输入文件描述符n而非复制它

cmd >&n-    移动输出文件描述符n而非复制它

部分摘自http://web.itivy.com/article-821-1.html

原创文章,作者:black_fish,如若转载,请注明出处:http://www.178linux.com/35067

(1)
上一篇 2016-08-15 16:55
下一篇 2016-08-15 21:45

相关推荐

  • 推荐-​以各种方式实现yum源,简单暴力,绝对实操干货!

    以各种方式实现yum源,简单暴力,绝对实操干货! 科普:yum不是程序包安装工具,而是rpm包前端管理工具,通过yum可以更好的管理rpm的安装卸载 以各种方式实现yum源,简单暴力,绝对实操干货! 一、本地yum源之“挂载光盘镜像实现”! 二、本地yum源之“挂载本地磁盘上的镜像文件”! 三、如能上网,实现自定义指定镜像网站yum源 四、炸天重磅来袭!!!…

    Linux干货 2016-04-11
  • 软件包管理2

    四、程序包编译     程序包编译安装:     Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装     源代码&#82…

    Linux干货 2016-08-27
  • NoSQL—mongodb常见使用和入门

    NoSQL介绍: NoSQL数据管理系统是目前非常流行的一种非关系性、分布式、不支持ACID设计规范式的数据库;NoSQL简单的数据模型、元数据和数据分离、弱一致性、高吞吐量、高水平扩展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL数据库一种非常流行的实现方式。   常见的NoSQL数据存储模型 列式模型 文档类型 应用场景:…

    2015-09-01
  • 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0、虚拟化、云计算、大数据、微架构、DevOps再到今天的容器Docker与Mesos。 Docker的出现方便了应用的测试、部署、与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行。Docker的轻量级、快…

    Linux干货 2016-07-10
  • N26_第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 演示: [root@joylin test]# who|cut -d” ” -f1|uniq root gentoo [root@joylin test]# who|cut -d” ” -f1|uniq -c 5 root 1 gentoo 或者 [root@joyl…

    Linux干货 2017-02-21
  • grep的用法(CentOS7)及有关正则表达式的使用

    http://www.cnblogs.com/wzhuo/p/6659352.html

    Linux干货 2017-04-08