#! /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
- netstat -tnpl
日志
- 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