命令行笔记

主要是对linux命令号中一些经常会遗漏的事项的记录。

  1. 命令行中执行for和if等语句命令,原来在脚本中换行的地方用;代替:for name in $(ls); do if [[ "$name" == "te" ]] ; then echo $name;fi;done

  2. eval命令:会扫描两遍,第一次做变量替换,第二次如果是命令则执行该命令,用于执行一些需要变量替换的命令

  3. shell中单引号替换环境变量 双引号不替换

  4. 小括号的妙用:(cd /usr;ls) 假如当前目录是home,执行完还是home目录

  5. sz命令传文件夹使用 sz data/* ,不包含文件夹本身

  6. 注意在空目录下使用*的问题,*会报错,例如:test文件夹为空,ls test/*命令报错

  7. 登录时指定.bashrc的问题,另外bash的PS1变量导致长命令行不能换行的问题

  8. 注意重定向的顺序问题,在执行前会先清空文件

  9. cat <<EOF和cat -

  10. pstree命令指定进程直接在后面加上进程号就行,-p打印线程 -a打印命令行

  11. (shell)在子进程中运行命令,{shell}用于在当前shell中运行命令,{}需要注意括号与命令之间包含空格,确保列表最后一个命令以分号结尾

  12. bash参数:

        摘录自阮一峰
        set -x  用于调试,输出正在执行的命令
        set -e  前一个命令执行出错直接退出(默认继续执行)
        set -u  如果遇到不存在的变量报错(默认忽略)
        set -o  pipefail  如果设置了-e,管道命令看的是最后一个命令的执行结果,如果需要管道前一个执行失败就退出时使用
        也可以在bash外面使用: bash -euxo pipefail script.sh
        
  1. ``和$()的区别:
    echo `echo \\\\` # 输出\
    echo $(echo \\\\) # 输出\\
    # 反单号中的\有转义,需要用\\才能表示本来的\

posted on 2019-12-05 15:53  远方789  阅读(188)  评论(0编辑  收藏  举报

导航