#! /bin/bash

  • 写在脚本文件首行,指明执行文件的解释程序
  • 解释程序需要写绝对路径,不会遍历系统变量查找
  • 解释程序可执行,则用其执行脚本;不可执行则默认用$SHELL环境变量对应程序执行;没有执行权限或不存在会合理提示错误
  • 命令行中有指定执行程序时,将会忽略'#!'后定义的解释程序

环境变量

  • env命令打印所有环境变量
  • set\declare打印当前用户的SHELL变量和环境变量
  • export打印由SHELL变量导出而成的环境变量
  • echo $SHELL打印指定变量名称的变量值
  • /etc/profile 用于存储系统全局环境变量,需用source使改动立即生效
  • .bash_profile 当前用户家目录下的私有环境变量,需用source使改动立即生效
  • export用于打印和设置环境变量,可将shell变量变成环境变量,仅在shell进程中有效
  • 可用readonly为变量设置'只读'属性,不可修改和清除【gdb命令可清除】

source

  • 与shell scripts的区别 - source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。

后台运行

  • 命令尾部+'&',ctrl+c正常运行,终端关闭停止运行
  • nohup+命令,ctrl+c停止运行,终端关闭正常运行
  • 所以想要程序注销后也能运行,需'nohup [command] &'结合使用

运算指令

  • shell程序中默认都是字符串操作,在运行数***算符的时候可能得到意想不到的答案

    • var=1
      var=$var+1
      echo $var
      将输出 1+1
  • let

    • 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。
    • 运算符间不能有空格,如果表达式中包含了空格或其他特殊字符,则必须引起来。
    • let可以用(())代替
  • expr

    • 将需要运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开。
  • (())常用于算术运算比较,[[]]常用于字符串的比较

常用命令

  • 磁盘

    • df -h
    • du -h --max-depth=1
    • ls -lhS
  • cpu和进程

    • top
    • ps -ef
    • kill -9
  • 网络

    • netstat -tnpl
      -l listening 只监听listen的端口
      -t tcp
      -n address显示数字,不显示应用程序的名字
      -p 显示PID和program
  • 日志

    • tail [-f/n]
    • cat/less/more/vi
    • grep
    • sed -e 's/old/new/g' file
    • awk [-F:]
  • 压缩/解压缩

    • zip/unzip
    • jar -cvfM0 *.war $path
    • jar -xvf *.war
    • tar -cvf *.tar file2 ...
    • tar -xvf *.tar

script编写

  • 语句间用;分隔,或换行分隔
  • if
    if condition
    then
    command1
    command2
    ...
    fi
  • for
    for var in item1 item2 ... itemN
    do
    command1
    command2
    done
  • while
    while condition
    do
    command
    done