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)
black_fishblack_fish
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • LAMP快速部署及LAMP组合深入讲解-2

      lamp SQL 数据管理模型:层次模型、网状模型、关系模型数据分类:结构化数据、半结构化数据、非结构化数据 关系模型 数据库:一个方案、一个项目 二维关系: 表:row, column 索引:index 视图:view SQL接口:Structured Query Language;类似于OS的shell接口;也提供编程功能; ANSI: S…

    2017-06-04
  • N25-第三周作业

    第三周作业 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]#who | cut -d' ' -f 1 | sort | uniq 2、取出最后登录到当前系统的用户的相关信息。 ~]#who |tail -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]#cat…

    Linux干货 2016-12-18
  • N26-博客作业-week4

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel /home/tuser1~]# chmod -R 700 /home/tuser1 2、编辑/etc/group文件,添加组hadoop。 ~]# echo “hadoop…

    Linux干货 2017-02-26
  • rsync+inotify实现数据实时同步备份

    定时备份和实时备份        说到备份,无疑于定时备份和实时同步备份。定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify);通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性。 软件介绍之rsyn…

    Linux干货 2015-02-28
  • 命令的查看帮助 和 命令行的历史

    命令的查看 分内部命令 和外部命令  查看外部命令 可用 man command–help info  查看内部命令 可用 help command man 帮助是 使用最频繁的 命令查看 而 man 又有很多选项 如下    man – format and display the on-li…

    Linux干货 2016-08-12
  • shell脚本编程进阶

    一些常用的编程语句,

    2017-12-23