1、echo添加 -e使用转义,env命令查看环境变量。
2、变量赋值不要加空格,加$打印变量内容,export声明全局环境变量,export PATH=$PATH:/xxx/yyy新增环境变量,众所周知的环境变量HOME、PWD、USER、UID、SHELL。
3、识别当前shell,echo $SHELL或echo $0。root用户的UID为0。
4、$?上一个命令的执行结果,标准输入0 标准输出1 标准出错2,打印出来同时重定向到文本用tee,tee把输出的一个副本送到标准输出,另一个副本拷贝到相应文件。以EOF结尾输入文件 cat << EOF > log.txt
5、可以使用数组,alias创建别名
6、获取终端信息 tput cols,tput lines,tput longname,获取时间 date ,date + %s
7、调试脚本 bash -x yy.sh,set + x
8、支持函数 IFS if then else fi 条件判断[ x -eq y ],gt lt ge le,文件系统相关测试: -f x d e c ....
9、注释是#号,单引号和双引号中的#不解释为注释开始。分号可用来分割多个命令,.命令等价于source命令。
10、:和true相同,> test.sh和 cat /dev/null > test.sh 作用一样,都是清空文件。/dev/null为比特池无底洞。
11、$变量替换
12、touch创建文件,chmod ugoa +- rwx, chmod -r /* 更改子目录权限。目录权限会覆盖目录内文件权限。目录的rwx代表可列出文件、可创建文件和可搜索访问文件。
13、suid,guid,运行时有权限,运行完后回归普通用户,s位占据x位。chown owner file改变属主,chgrp改变属组。id命令查询自己所属用户组。
14、umask,创建文件的缺省模式,目录最大可设为7,文件最大为6,umask是拿走权限,022对文件的默认权限是644,对目录的默认权限是755.
15、符号链接ln [-s] source_path target_path
16、find pathname -options [-print -exec -ok] -name,-perm,-user,-mtime,-type,-prune忽略某个目录
xargs和find结合,xargs后面是命令
17、定时任务,cron、at、&
command > out.file 2>&1
18、*匹配任何字符串 ?单个字符 [ ]范围 -
19、read variable,读取输入
20、command > filename重定向到文件,command filename 2>&1标准输出和标准出错重定向到一个文件,command < filename,以文件作为输入,command << delimiter从标准输入中读入直到遇到分界符。
21、连接两个命令:&& ||,在一个shell中执行一组命令 (command1;command2;...),在子shell中执行一组命令 {command1;command2;...}。
22、正则表达式基本元字符集: ^ $ * [] \ . pattern\{n\} pattern\{n,\} pattern \{n,m\} 扩展字符集:? + () |
bash本身不支持正则表达式,使用正则表达式的是shell命令和工具如grep、sed和awk
23、grep [选项] 基本正则表达式 文件
-c 输出匹配行 -i 不区分大小写 -n 显示匹配行及行号 -v 显示不包含匹配的所有行 -E 使用扩展 包括|
24、sort -cmu -o -t: output_file input_file
unique join ct paste split
25、变量赋值 =,+(覆盖) unset 清除变量值,位置变量$n
26、用户角色通过UID唯一识别,linux用户分为root用户、虚拟用户(daemon、ftp)、普通真实用户
27、cp -r 实现目录复制, mv src dst,若dst为文件时,将把源文件或目录重命名。mkdir -m 设置权限,-p 设置路径
cd - 返回上次访问目录。
28、vi编辑器,/word向下查找,?word向是哪个查找
29、sed,流编辑器,从一个文本行或标准输入中读取数据复制到缓冲区然后读取命令进行编辑,只是对缓冲区原始文件副本进行编辑,并不编辑原始文件。
sed [选项] 'sed命令' 输入文件
-n 不打印所有行到标准输出 -e 将下一个字符串解析为sed命令(多个编辑命令时用,与分号作用等同) , -f 调用sed脚本文件
sed命令由定位文本行和编辑行命令两部分组成,定位文本行有两种方法:使用行号和使用正则表达式。
x x,y /pattern/ /pattern/pattern/ /pattern/,x x,/pattern/ x,y!
编辑命令:
p 打印匹配行 = 打印文件行号 a\行后追加信息 i\行前插入信息 d 删除 c \用新文本替换定位文本
{在定位文本行执行的命令组}
替换文本: [address] s /旧字符串/新字符串/[选项 n g p w文件名] 如果界定符有\,用!做界定符 。新字符串中&保存被替换的字符串。
序列变换: sed 'y/被变序列/变换序列/' 输入文件
30、awk [-F 域分隔符] 'awk程序段' 输入文件
程序段由BEGIN 处理 END组成。awk语句由模式和动作组成。模式用于测试输入行是否需要执行动作的规则。awk认为输入文件是结构化的,记录、域、分隔符。域操作符$,$0所有的域,$1第1个域,匹配正则表达式符号~。
awk有if/else条件语句,关系运算符,逻辑运算符,算术运算符
awk使用printf控制输出格式,printf{格式控制符,参数}
awk提供内置字符串函数,实现文本替换、查找及分割功能。可以向awk脚本传递参数,awk条件语句、循环语句、数组与C完全一样,无需定义数组类型和大小,直接赋值后使用。
31、tar -x 解压缩文件 -z gzip工具创建安 -r 为包添加新内容 -t 列出包文件
32、字符串变量有一个默认的整型值0,declare 用于定义和限制变量的属性。
33、$# 传递到脚本的参数数量
$*和$@ 传递到脚本的所有参数,在双引号中有差异
$$ 脚本运行的进程号
$? 命令的退出状态
34、单引号 引用所有字符(使用原意)
双引号 引用除$'\之外的所有字符
反引号 解释为系统命令
35、命令替换:反引号和$(),后者可以嵌套。
36、测试 [ expression ], -d -f -L -r -s -w-u-x,使用逻辑操作符 -a -o !,字符串测试 = != -z -n,测试数值 -eq -ne -gt -lt ,expr一般用于整数值。
37、if then else fi case 值 in 模式1) ...; ; ease 模式可为变量或常量,变量部分可用模式匹配
for 变量名 in 列表 do ...done 列表可以是枚举、ls结果,省去in表示$@、$*中取值。
until do ...done while do ...done break n跳出n层循环 continue
38、函数定义 [function] 函数名 {} return 函数内用_xxx变量接收传进来的参数$n,shift解除传递9个参数的限制,将参数位置偏移,shift n偏移n。第10个以后的参数还可以通过${n}获得。
getops option_string variable
39、type查看內建命令 who -r查看运行级别
basedname 从路径中分离文件名
40、cat、pg、head、tail、more
41、kill -9 pro_id,wall广播命令