【1】特殊符号

一、引号


  • ’string’ 单引号 (single quote)
    被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
[root@localhost ~]# echo '$LANG'
$LANG
  • "string" 双引号 (double quote)
    被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。
#允许变量扩展
[root@localhost ~]# echo “$LANG”
“zh_CN.UTF-8”
#不支持通配符
[root@localhost init.d]# ls *ME
README
[root@localhost init.d]# ls "*ME"
ls: 无法访问*ME: 没有那个文件或目录
  • `command` 反引号 (backticks)
    在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用倒单引号来做。
[root@localhost init.d]# fdv=`date +%F`
[root@localhost init.d]# echo “Today $fdv”
“Today 2020-12-17”

在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。

二、重定向符号


输出/输入重导向

>    >>    <    <<     2>    2>>    2>&1   

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

文件描述符名称常用缩写默认值
0标准输入stdin键盘
1标准输出stdout屏幕
2标准错误输出stderr屏幕

文件描述符 名称 常用缩写 默认值
0 标准输入 stdin 键盘
1 标准输出 stdout 屏幕
2 标准错误输出 stderr 屏幕

我们在简单地用 < 或 > 时,相当于使用 0< 或 1>(下面会详细介绍)。

  • cmd > file
    把cmd命令的输出重定向到文件file中。如果file已经存在,则先把文件内容清空再追加。
  • cmd >> file
    把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件后面。
  • cmd < file
    使cmd命令从file读入。
  • cmd << text
    从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。
  • cmd 2> file
    把cmd命令的错误输出重定向到文件file中。如果file已经存在,则先把文件内容清空再追加。
  • cmd 2>> file
    把cmd命令的错误输出重定向到文件file中,如果file已经存在,则把信息加在原有文件后面。
  • cmd > file 2>&1
    把cmd命令的输出(包含错误的内容和正确的内容)重定向到文件file中。如果file已经存在,则先把文件内容清空再追加。
  • cmd >> file 2>&1
    把cmd命令的输出(包含错误的内容和正确的内容)重定向到文件file中。如果file已经存在,则把信息加在原有文件后面。

三、位置符号


  • 家目录 ~
#切换到当前用户的home目录;
[root@localhost ~]# cd ~
[root@localhost ~]# pwd
/root
#切换到指定用户的目录
[root@localhost ~]# cd ~ zhangsan
#作为路径的一部分
[root@localhost ~]# cd ~/
anaconda-ks.cfg  .bash_logout     .bashrc          .tcshrc          
.bash_history    .bash_profile    .cshrc           .viminfo 
  • 当前目录 .
    在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。
    CDPATH=.:~:/home:/home/web:/var:/usr/local
    在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。
    如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,在 regularexpression 中,一个 dot 代表匹配一个字元。

  • 上层目录 …
    在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。
    CDPATH=.:~:/home:/home/web:/var:/usr/local
    在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。
    如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,在 regularexpression 中,一个 dot 代表匹配一个字元。

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

四、逻辑符号


  • ||
    代表 or 逻辑的符号。

  • &&
    代表 and 逻辑的符号。

五、无分类


  • # 井号 (comments)
    #!/bin/bash
    井号常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。
    # This line is comments.
    echo “a = $a” # a = 0
    由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程中。
    #echo “a = $a” # a = 0
    如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

  • $
    变量替换(Variable Substitution)的代表符号。
    vrs=123echo “vrs = $vrs” # vrs = 123
    另外,在 Regular Expressions 里被定义为 “行” 的最末端 (end-of-line)。这个常用在grep、sed、awk 以及 vim(vi) 当中。

  • |

  • !

  • ;

六、通配符


相当常用的符号。在文件名扩展(Filename expansion)上,她用来代表任何字元,包含 null 字元。
# ls aa a1 access_log
在运算时,它则代表 “乘法”。
let "fmult=2
3"
除了内建指令 let,还有一个关于运算的指令expr,星号在这里也担任"乘法"的角色。不过在使用上得小心,他的前面必须加上escape 字元。


  • 在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含 null 字元。
    # ls a?a1
    善用她的特点,可以做比较精确的档名匹配。

  • {}

  • []

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值