安全上下文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,pythonrubyon rail),shell

变量:(容器) 命名的内存空间  

Bash 本地变量(局部变量)  环境变量:可以被一个进程及其子进程所共享的  

位置参数变量   特殊变量$?

变量引用:取变量值 (双引号,单引号,反引号)

“”:弱引用 (会发生变量替换) ‘’:强引用(不会发生变量替换)   ``:命令引用$()

Export:导出  输出

Readonly 命令 不能撤销变量(只读的)   unset撤销普通变量

Env 可以显示本地环境变量 保证运行程序时在特定的程序下运行

Printenv  显示环境变量      Locale 显示语言区    pwd 显示当前目录

命令别名:alias 后跟定义命令 例如mntcd=’mount  /dev/cdrom/media/cdrom’

Unalias 后跟定义命令 说明不再用此定义命令。

写脚本文件  必须以#!开头

Set –x 开始调试功能 set+x到此关闭调试功能(用于nano创建脚本文件时)

追踪的内容在set-xset+x之间     也可以用bash –x 后跟脚本文件 进行调试

交互式:profile  ß 环境变量的定义

读取次序/etc/profile à /etc/profile.d/*à~/.bash_profileà~/.bashrcà /etc/bashrc

非交互式:bashrc ß 别名等的定义

读取次序:~/.bashrcà /etc/bashrcà/etc/profile.d/*

I/O :标准输入输出系统 

标准输入 keyboard0    标准输出:monitor1  标准错误输出:monitor2   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到任意次 

|表示或者  例如lik|ove your lover 匹配like your loverlove your lover

.* 表示匹配任意字符任意次   例如grep r.*t 匹配的root  rdfnt  rnkfhit

[^.]表示非句点的字符   空白行表示 ^$

表示明确范围的 \{n\}  作次数匹配的    表示匹配一个范围例如中间一或者两个任意字符 \{02\}    表示至少2次到无穷大时\{2\}

锚定符^root 找以root开头的  root$找以root结尾的

\< 锚定单词词首   \>锚定单词词尾  \b\< \> 用法一样

\(..\)表示匹配稍后将要使用的文字标签 例如 root.Jbudh.root

Cut 把整个文件按段切割 支取某个段

Grep –v 反转(反向)查找   -i 在搜索的时候忽略大小写  -n 在匹配的结果里只挑取有限范围的行 (前n行)   -An A1 A2)把匹配到的行下面再显示n  -Bn表示前面  -Cn表示中间  --color=auto 默认显示时用颜色标识  定制颜色:例如:GREP_COLOR=’01,34’

Wc 作字符数字统计  -l显示行 –w显示单词  -c显示字节

Shell脚本 支持条件测试 条件测试方式:整数测试,字符串测试,文件测试。text后跟测试内容 例如1>2结果是0或者非00表示真,非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也可以允许指定查找范围 add1add2s/// 例如: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=0’ server.repo  -i保存源文件 \i在搜索到的行前面增加一行。

\n表示换行符。-e 连接两个条件 –f表示从这个文件中读取条件并应用到文件中