安全上下文:process—>resource 一个可执行文件在运行起来的时候以谁的身份在运行
移动光标 :ctrl+a 移动到首位 ctrl+e 回到尾部 ctrl+左右箭头 一次移动一个单词
Ctrl+k 可以删除当前光标至命令行尾部的内容 ctrl+u删除当前光标至行首的命令内容
(Set –o vi 使用vi模式) clear 清屏(或者ctrl+l)
Globbing :文件名通配 * 表示匹配任意个任意长度的字符。 ?匹配任意单个字符
[ ] :范围表达式 指定一个范围 也是匹配单个字符(多选一)[0-9]中间-表示连续的
[:alpha:] :表示取值范围 (alpha表示字母表) [:lower:] 表示所有小写字母
[:upper:] 表示所有大写字母 [:digit:] 表示所有数字 [:alnum:] 表示所有字母和数字
[:punct:] 表示所有的标点符号 File 查看文件类型 ls ~查看当前用户家目录
Cat –n用于显示行号(但是未必有行号) cat-A 显示所有内容
Shell 是应用程序,提供也能过户作为系统接口 还有编程的功能
软件编程:1、编译类:源代码—>目标代码(需要编译器)
1、 脚本类:源代码直接运行(需要解释器,bash),perl 5.8,python,ruby(on rail),shell
变量:(容器) 命名的内存空间
Bash: 本地变量(局部变量) 环境变量:可以被一个进程及其子进程所共享的
位置参数变量 特殊变量$?
变量引用:取变量值 (双引号,单引号,反引号)
“”:弱引用 (会发生变量替换) ‘’:强引用(不会发生变量替换) ``:命令引用$()
Export:导出 输出
Readonly 命令 不能撤销变量(只读的) unset撤销普通变量
Env 可以显示本地环境变量 保证运行程序时在特定的程序下运行
Printenv 显示环境变量 Locale 显示语言区 pwd 显示当前目录
命令别名:alias 后跟定义命令 例如mntcd=’mount /dev/cdrom/media/cdrom’
Unalias 后跟定义命令 说明不再用此定义命令。
写脚本文件 必须以#!开头
Set –x 开始调试功能 set+x到此关闭调试功能(用于nano创建脚本文件时)
追踪的内容在set-x和set+x之间 也可以用bash –x 后跟脚本文件 进行调试
交互式:profile ß 环境变量的定义
读取次序/etc/profile à /etc/profile.d/*à~/.bash_profileà~/.bashrcà /etc/bashrc
非交互式:bashrc ß 别名等的定义
读取次序:~/.bashrcà /etc/bashrcà/etc/profile.d/*
I/O :标准输入输出系统
标准输入 :keyboard,0 标准输出:monitor,1 标准错误输出:monitor,2 3-9用户可以自定义 定义声明:exec exec跟定义数字>&-:关闭自定义。
运行程序 需要:代码,数据。
I/O重定向 >:标准输出的重定向 <:标准输入的从定向 2>:标准错误输出重定向
&> :覆盖重定向 set-C 命令表示可以拒绝别人信息的覆盖 set+C允许覆盖
>| 强行覆盖 >>:追加重定向 不进行覆盖 <<:表示here document 可以在脚本当中生成文件 2>&1:和&>是同一个意思
变量是不会被子shell共享的
More命令 用于分页查看 查看文本文件时想查看文件的首部时用:head 查看尾部:tail
例如查看文件首部或者尾部多少行时:head或者tail –n 后跟文件名
Grep :表示全面搜索正则表达式并打印出来。可以根据指定的模式(pattern)从文本中匹配整个模式,而后显示包含了匹配到了内容的行 例如:grep ‘root’ /etc/root
“.(点)”用于匹配任意单个字符 例如 grep ‘r.t’ /etc/passwd r开头中间匹配任意字符
“*”表示匹配前字符一次或者任意次
“?”匹配0次或者1次 “+”匹配1到任意次
“|”表示或者 例如l(ik)|(ov)e your lover 匹配like your lover,love your lover
“.*” 表示匹配任意字符任意次 例如grep ‘r.*t’ 匹配的root rdfnt rnkfhit
“[^.]表示非句点的字符 空白行表示 ^$
表示明确范围的 \{n\} 作次数匹配的 表示匹配一个范围例如中间一或者两个任意字符 \{0,2\} 表示至少2次到无穷大时\{2,\}
锚定符:^root 找以root开头的 root$找以root结尾的
\< 锚定单词词首 \>锚定单词词尾 \b和\< \> 用法一样
\(..\)表示匹配稍后将要使用的文字标签 例如 root.Jbudh.root
Cut 把整个文件按段切割 支取某个段
Grep –v 反转(反向)查找 -i 在搜索的时候忽略大小写 -n 在匹配的结果里只挑取有限范围的行 (前n行) -An (A
Wc 作字符数字统计 -l显示行 –w显示单词 -c显示字节
Shell脚本 支持条件测试 条件测试方式:整数测试,字符串测试,文件测试。text后跟测试内容 例如1>2结果是0或者非0,0表示真,非0表示假。整数测试:-eq 等于 -gt 大于 -lt 小于 –ne 不等于 -ge 大于等于 -le 小于等于 字符串测试:!=表示不等于
文件测试:-L/-h file 测试一个文件是否为符号链接文件 -O file 测试此文件属主是否是你 -G file 测试属主是否是你所属的组
例如 text expression # text 1 –gt 2 或者 [ expression ] #[ 1 –gt 2 ] 或者`expression`#[[ 1 > 2 ]] -a 表示与 -o表示或
前面加一个! 表示取反(!表示非) ( -a –o !表示连接两个条件的 )
短路操作符:&& 表示与 ||表示或 (&& || 表示连接两个完整语句或命令)
Cut 剪切掉 –f取哪个段 例如cut –d:-f1 /etc/passwd
Sort :排序 可以将文本文件的内容按照升序或者降序排序。例如 sort /etc/passwd
-o 表示输出到什么位置 例如:sort –o /tmp/passwd.sort
-n 表示以数值来排序 -f 排序时忽略大小写 -u 表示在排完序后把重复的行去掉
-r 表示排序时按逆序排列
Uniq :去除重复的行 (挨着连续的才认为是重复)所以要先排序
-c 可以在每行之前显示每行被重复的次数 例如 sort sort.txt | uniq –u
-d 只显示重复的行 -u 显示没重复的行
Diff/patch 生成补丁/打补丁 diff不仅可以比较两个文件 还可以比较两个目录
Tr 转换字符集 例如tr ‘a-z’‘A-Z’把小写全转换成大写
Sed :stream editor 流(行)编辑器 一次只处理一行 非交互式编辑器 没有破坏性,不修改源文件。Sed还支持sed脚本。Sed表示搜索文件中处理的范围。 -n 不显示模式空间内的内容,只显示匹配到的且被处理的内容。-i 直接编辑源文件。
d表示删除行 s 表示用一个字符串替换另一个(默认只替换每行出现的第一个) 要把文件中任一行中都替换 加g例如:sed ‘d/root/ROOT/g’ /etc/passwd 小写换成大写并且全部替换。加i忽略大小写。 Sed也可以允许指定查找范围 add1,add2s/// 例如:sed ‘1,5d/root/ROOT/g’ /etc/passwd $表示最后一行,例如:10,$s/root/ROOT/g 指定范围可以从行到行 例如:/root/,/student/s/root/ROOT/ &表示替代前面括号中出现的字符(引用整个串,而不是括号里面的串)例如:sed ‘s/r..t/&able àsed ‘s/root/rootable 或者sed ‘s/r\(..\)t/R\1T/g’ /etc/passwd
a\ 在搜索到的行后面增加一行 例如:sed ‘/baseurl/a \enable=
\n表示换行符。-e 连接两个条件 –f表示从这个文件中读取条件并应用到文件中