美文网首页
特殊字符

特殊字符

作者: rochestor | 来源:发表于2017-10-14 12:12 被阅读5次

    # 注释符

    #!/bin/bash 写在脚本开始的最前面,表示这个脚本需要使用/bin/bash 来解释
    # 这是一行注释,不会被执行

    ; 分号, 命令分隔符

    if [ -f "${file}" ];then
        echo "${file} is an existing file"; cp ${file} ${file}_name
    fi
    

    ;; 条件语句终止符号,用在case语句

    #!/bin/bash
    
    variable='abc'
    case ${variable} in
        abc)
            echo "\$variable=abc" ;;
        cde)
            echo "\$variable=cde" ;;
        *)
            echo "default"
    esac
    

    . 句点

    1. 等价于source e.g.  source .bashrc   等价于  . .bashrc
    2. 作为文件名的一部分,表示是隐藏的文件
    3. 代表当前目录   cp /users/rochestor/test.sh . 将test.sh 复制到当前目录
    

    \ 反斜杠【转译符】

    \n 换行
    \t 制表符

    / 正斜杠【文件分割符】

    分割路径的作用 /Users/rochestor/test.sh
    除法运算符 12 / 3

    ` 命令替换符 [backquotes] [backticks]

    var=command 使得命令的输出结果赋值给一个变量
    跟$(command) 的作用类似

    : 空命令 【冒号】,等价于 no op ,即 空命令

    # 它与true效果一样,并且都是内建命令
    :
    echo $?   # 返回 0
    
    
    # 可在 if/then 中充当占位符:
    if condition
    then :   # 什么都不做,跳出判断执行下一条语句
    else
       take-some-action
    fi
    
    
    #与>重定向操作符结合,可以在不改变文件权限的情况下清空文件。如果文件不存在,那么将创建这个文件。+
    : > data.xxx   # 文件 "data.xxx" 已被清空
    
    # 与 cat /dev/null >data.xxx 作用相同
    # 但是此操作不会产生一个新进程,因为 ":" 是shell内建命令。
    
    
    #:也可以作为一个域分隔符,比如在/etc/passwd和 $PATH 变量中
    echo $PATH
    /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
    

    $ 取值符号,用来进行变量替换

    # $variable 这种写法是 ${variable} 的简化形式。在某些特殊情况下,使用 $variable 写法会造成语法错误,使用完整形式会更好
    
    var1=5
    var2=6
    
    echo ${var1}  # 等价于 echo $var1
    
    
    在正则表达式中,$ 匹配行尾字符串
    
    $@  $* 位置参数
    $$  运行脚本的进程ID
    $?  保存上一个命令的执行结果
    

    () 括号

    #命令组(a=hello;echo $a)
    #通过括号执行一系列命令会产生一个子shell(subshell)。 括号中的变量,即在子shell中的变量,在脚本的其他部分是不可见的。父进程脚本不能访问子进程(子shell)所创建的变量。
    
    数组初始化
    array=(ele1 ele2 ele3 ele4)
    

    {} 花括号扩展结构

    echo \"{these, words,are,qupted}\" # 除非被引用或被转义,否则空白符不应在花括号中出现。
    # output: "These" "words" "are" "quoted"
    
    {a..z}  扩展的花括号结构
    echo {a..z}  #  a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    # 使用扩展花括号初始化一个数组
    base64_charset=( {A..Z} {a..z} {0..9} + / = )
    
    #代码块[花括号],又被称作内联组(inline group)。它实际上创建了一个匿名函数(anonymous function),即没有名字的函数。但是,不同于那些“标准”函数,代码块内的变量在脚本的其他部分仍旧是可见的
    
    #!/bin/bash
    # 读取文件 /etc/fstab
    
    File=/etc/fstab
    
    {
    read line1
    read line2
    } < ${File}
    
    echo "First line in ${File} is:"
    echo "${line1}"
    echo
    echo "Second line in ${File} is:"
    echo "${line2}"
    
    exit 0
    #与由圆括号包裹起来的命令组不同,由花括号包裹起来的代码块不产生子进程
    
    
    # 文本占位符。在 xargs -i 后作为输出的占位符使用
    # -t是处理之前打印出命令,  使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符
    ls . | xargs -i -t cp ./{} $1 
     
    

    {} ; 路径名 import 这个很重要,所以单独拉出来说

    #通常在 find 命令中使用,但这不是shell的内建命令
    在执行find -exec时最后需要加上;,但是分号需要被转义以保证其不会被shell解释。
    find .  -type f --maxdepth 1 -name "*.log" -ctime +7 -exec rm {} \;
    # 删除当前目录下面, 7天以前的log文件
    

    [ ] 测试

    [ 是shell内建命令 test 的一个组成部分

    [[ ]] 测试

    在 [[ ]] 之间填写测试表达式。相比起单括号测试 ([ ]),它更加的灵活。它是一个shell的关键字

    $[ ... ], 整数扩展符

    a=3
    b=7
    
    echo $[$a+$b]   # 10
    

    (( )) 整数扩展符

    整数扩展符。在 (( )) 中可以计算整数的算术表达式。

    > &> >& >> < <> 重定向

    command &>filename 
    # 将命令 command 的标准输出(stdout) 和标准错误输出(stderr) 重定向到 filename。
    
    # 将命令的标准输出重定向至标准错误输出。
    command >&2 
    
    #重定向在用于清除测试条件的输出时特别有效,只想知道命令是否执行成功,不想获取执行的输出
    
    type bogus_command &>/dev/null
    echo $?
    
    # 正则表达式中的单词边界(word boundary)
    grep '\<the\>' textfile
    

    &, 后台运行操作符

    nohup sh mudi.sh 2 > mudi.log 2>&1 &
    # 将脚本 mudi.sh 放到后台跑
    

    || ,逻辑或

    # 在测试结构中,任意一个测试条件为真,整个表达式为真。返回 0(成功标志位)
    

    Ctrl-U

    删除光标所在字符之前的所有字符。 在一些情况下,不管光标在哪个位置,Ctrl-U 都会删除整行文字。

    参考

    [find命令之xargs](http://www.cnblogs.com/peida/archive/2012/11/15/2770888.html)
    [自动删除n天前日志](http://www.cnblogs.com/peida/archive/2013/03/25/2980121.html)
    

    唯爱与技术不可辜负

    相关文章

      网友评论

          本文标题:特殊字符

          本文链接:https://www.haomeiwen.com/subject/tfpxuxtx.html