shell中的特殊符号总结详解程序员


~ 帐户的 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/” inhalp) echo /”Usage: Command -halp -version filename/”;;version) echo /”version 0.1/” ;;esac 

‘string’ 单引号 (single quote) 
被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。 
heyyou=homeecho ‘$heyyou’ # We get $heyyou 

, 逗点 (comma,标点中的逗号) 
这个符号常运用在运算当中当做/”区隔/”用途。如下例 
#!/bin/bashlet /”t1 = ((a = 5 + 3, b = 7 – 1, c = 15 / 3))/”echo /”t1= $t1, a = $a, b = $b/” 

+ 加号 (plus) 
在运算式中,她用来表示 /”加法/”。 
expr 1 + 2 + 3 
此外在规则表达式中,用来表示/”很多个/”的前面字元的意思。 
# grep ’10//+9′ fileB109100910000910000931010009#这个符号在使用时,前面必须加上escape 字元。 

– 减号 (dash) 
在运算式中,她用来表示 /”减法/”。 
expr 10 – 2 
此外也是系统指令的选项符号。 
ls -expr 10 – 2 
在 GNU 指令中,如果单独使用 – 符号,不加任何该加的文件名称时,代表/”标准输入/”的意思。这是 GNU指令的共通选项。譬如下例 
tar xpvf – 
这里的 – 符号,既代表从标准输入读取资料。 
不过,在 cd 指令中则比较特别 
cd – 
这代表变更工作目录到/”上一次/”工作目录。 

 

EnvironmentFile=-/etc/sysconfig/sshd

  所有的启动设置之前,都可以加上一个连词号(-),表示”抑制错误”,即发生错误的时候,不影响其他命令的执行。比如,EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。

shell中的特殊符号总结详解程序员 

IT虾米网 


输出/输入重导向 
> >>   <   <<   :>   &>   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变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。 
* cmd <<< word 
把word(而不是文件word)和後面的换行作为输入提供给cmd。 
* cmd <> file 
以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。 
* cmd >| file 
功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。 
: > 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而非复制它。(需要解释) 
注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/1876.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论