linux系统中斜杠的含义,linux中的特殊字符含义

或许可以符合这种需求。它代表当前shell 的 PID。echo "$HOSTNAME, $USER, $MAIL" > ftmp.$$使用它来作为文件名的一部份,可以避免在同一时间,产生相同文件名的覆盖现象。ps: 基本上,系统会回收执行完毕的 PID,然后再次依需要分配使用。所以 script 即使临时文件是使用动态档名的写法,如果script 执行完毕后仍不加以清除,会产生其他问题。(   ) 指令群组 (command group)用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。我们来看个例子# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e "\n $a \n")echo $a#./ftmp-01incgfsh除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。((  ))这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。#!/bin/bash(( a = 10 ))echo -e "inital value, a = $a\n"(( a++))echo "after a++, a = $a"{  } 大括号 (Block of code)有时候 script 当中会出现,大括号中会夹着一段或几段以"分号"做结尾的指令或变数设定。# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e "\n $a \n"}echo $a#./ftmp-02inbcinbc这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。大括号也被运用在 "函数" 的功能上。广义地说,单纯只使用大括号时,作用就像是个没有指定名称的函数一般。因此,这样写 script也是相当好的一件事。尤其对输出输入的重导向上,这个做法可精简 script 的复杂度。此外,大括号还有另一种用法,如下{xx,yy,zz,...}这种大括号的组合,常用在字串的组合上,来看个例子mkdir {userA,userB,userC}-{home,bin,data}我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,这几个目录。这组符号在适用性上相当广泛。能加以善用的话,回报是精简与效率。像下面的例子chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}如果不是因为支援这种用法,我们得写几行重复几次呀![   ] 中括号常出现在流程控制中,扮演括住判断式的作用。if [ "$?" != 0 ]thenecho "Executes error"exit1fi这个符号在正则表达式中担任类似 "范围" 或 "集合" 的角色rm -r 200[1234]上例,代表删除 2001, 2002, 2003, 2004 等目录的意思。[[     ]]这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与&& 逻辑等符号。#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi|| 逻辑符号这个会时常看到,代表 or 逻辑的符号。&& 逻辑符号这个也会常看到,代表 and 逻辑的符号。& 后台工作单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。tar cvfz data.tar.gz data > /dev/null&\<...> 单字边界这组符号在规则表达式中,被定义为"边界"的意思。譬如,当我们想找寻 the 这个单字时,如果我们用grep the FileA你将会发现,像 there 这类的单字,也会被当成是匹配的单字。因为 the 正巧是 there的一部份。如果我们要必免这种情况,就得加上 "边界" 的符号grep '\' FileA+ 加号 (plus)在运算式中,她用来表示 "加法"。expr 1 + 2 + 3此外在规则表达式中,用来表示"很多个"的前面字元的意思。# grep '10\+9' fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元。- 减号 (dash)在运算式中,她用来表示 "减法"。expr 10 - 2此外也是系统指令的选项符号。ls -expr 10 - 2在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是 GNU指令的共通选项。譬如下例tar xpvf -这里的 - 符号,既代表从标准输入读取资料。不过,在 cd 指令中则比较特别cd -这代表变更工作目录到"上一次"工作目录。% 除法 (Modulo)在运算式中,用来表示 "除法"。expr 10 % 2此外,也被运用在关于变量的规则表达式当中的下列${parameter%word}${parameter%%word}一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。= 等号 (Equals)常在设定变数时看到的符号。vara=123echo " vara = $vara"或者像是 PATH 的设定,甚至应用在运算或判断式等此类用途上。== 等号 (Equals)常在条件判断式中看到,代表 "等于" 的意思。if [ $vara == $varb ]...下略!= 不等于常在条件判断式中看到,代表 "不等于" 的意思。if [ $vara != $varb ]...下略^这个符号在规则表达式中,代表行的 "开头" 位置,在[]中也与"!"(叹号)一样表示“非”输出/输入重导向>      >>      &>   2&>   2<>>&   >&2文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。常用的文件描述符如下:文件描述符          名称         常用缩写     默认值0               标准输入      stdin            键盘1               标准输出      stdout         屏幕2            标准错误输出   stderr          屏幕我们在简单地用时,相当于使用 0< 或 1>(下面会详细介绍)。* cmd > file把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。* cmd >> file

把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。* cmd < file使cmd命令从file读入* cmd << text从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用< file以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。* cmd >| file功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。: > filename把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).cmd >&n把输出送到文件描述符ncmd m>&n 把输出到文件符m的信息重定向到文件描述符ncmd >&-关闭标准输出cmd &n-移动输出文件描述符 n而非复制它。注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。本文转载http://blog.csdn.net/xifeijian/article/details/9253011

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值