回顾:安全上下文1进程发起者的权限及其组的权限;2访问文件的权限):每一个进程运行都是以某个用户或组的身份在运行(分为两层:
先匹配用户,然后是该用户组的和文件的组是否匹配,最后是other身份运行
chown    chgrp   chmod   -R递归修改 --reference= 以什么为模板
u用户g组o其他a所有 + - =    
globbing 文件名通配 ,元字符不可分割的
*? []    
[:alnum:] 字母加数字
[:alpha:]字母
[:digit:]数字
[:lower:]小写字母
[:upper:] 大写字母
[:punct:] 标点符号
[:blank:] 
[:cntrl:]
[:graph:]  
[:print:]
[:space:]
 [:xdigit:
 
文本编辑器使用(vi,vim,emacsnano)字处理器
ASCII(字符)  7位二进制表达(0-127)最大个数128 最大整数:127
行编辑器(sed,awk)和全屏编辑器
Vi是一种模式化的编辑器 a命令模式,编辑命令b 插入模式 c末行模式
1 打开1可以直接是vim #vim 2vim加一文件名   vim filename
vim +n 文件名 光变直接定义与某一行
2 模式转换 
 i/I   i: 光标所在处的往前输入    I:在当前行的行首
a/A a:光标所在处的往后        A:在当前行的行尾
o/O o 光标所在行的下一行新起一行插入 O:光标所在行的上一行新起一行开始
c/C   插入前先删除一部分东西
输入模式——>命令模式:esc 命令——>末行 
末行——>命令两个esc
3 退出
保存退出:末行模式wq  或 x 在命令模式输入:ZZ
不保存退出:q 强行退出q!
将文件还原:e!
另存为:路径  w加路径名
4命令模式下
光标移动:h左 j下k上l右 可以与数字相组合(n)次跳动几个字符
单词间跳转
w 下个单词的词首 e当前单词或下个单词的尾部 b与e想发
语句间跳转  )(
自然段间跳转 }{
行间跳转   NG到几行 G到最后一行   gg 到第一行
翻屏显示:ctrl+f 向文件尾部翻一屏 ctrl+b 向前一屏
   Ctrl+d 翻后半屏   ctrl+u向前翻半屏
-减号表示下一行 +加号表示上一行 n+空格键是向后移动几个字符
行内跳转0绝对行首,^本行的首个非空白字符 $绝对行尾
c/C删除当前光标与什么之间的内容 C=c$ 删除光标当前位置到行尾  cc删除当前一整行
5删除命令
x:删除光标所在处的单个字符  与数字组合向后删除  
X:之前的与x相反
d:dd删一行 可以组合使用 向后删除
6复制和粘贴
复制:y   yy当前一行可以复制多行使用数字组合 
粘贴:p/P    p光标所在下方 P所在的上方
7替换
在命令行模式下替换光标所在处的字符:r 多个字符数字r+字符
8移动剪切 dd——>p(先删除在粘贴)
9撤销   u/U u:最近一次的操作 U:最近多次的操作(一般50次)
10重做  点号(.)把刚做的在做一次   撤销撤销:ctrl+r
 
可视化模式:v/V v依次选择按字符 V字符块即拖动光标来显示所走过的位置
在末行模式下输入
复制多个行  例如:复制10到100行的内容 :10,100y
全文复制:% 或者1,$   如:%y或者1,$y
跳转:输入某一行号
依次打开多个文件
Vim file1 file2 …..
在末行输入:next 下一个文件 prev前一个文件 last 最后一个 first 第一个
多个文件的分屏显示 vim –o水平分割 vim -O垂直分割
多个屏幕移动:ctrl+w 在按箭头
同一文件的的分割显示 ctrl+w 在按s水平 v垂直
定义显示vim的属性
显示行号:set nu 取消 set nonu
自动缩进:set ai    set noai
关闭/打开语法显示: syntax off/on
Vim的配置文件 /etc/vimrc对所有的用户有效 ~/.vimrc当前用户有效
文件查找
/正向查找
?反向查找
n/N  n重复上面的查找向下开始 N向上开始
查找的同时加以替换s
均在末行模式下使用:s语法
:起始,结束s///    默认查找替换第一次出现的  最后加g表示全局替换
         :点,$ 表当前行至行尾    点表示当前行
思考题:文件中有个baseurl=ftp://192.168.0.254/pub/server中的ftp://192.168.0.254/pub替换成/var/yum
 
将其/反义表达下用反斜杠表示: :%s/ftp:\/\/192.168.0.254\/pub
 
命令行扩展
1        ~ 用户的家目录
2        {} 路径扩展(能实现将逗号隔开字符依次的展开) 比如一个命令创建x,x/y,x/z mkdir –pv {y,z}    一个命令创建m,m/n,m/p,m/n/z    mkdir –p m/{n/z,p}
3        ` $()反引号命令取反将反引号内的命令的执行结果返还给外部命令调用:例如echo "it is $(date '+%T')"echo "it is `date '+%T'`"在英文模式下手动输入
echo –e选项 \n 换行
echo查看变量内容但需要加$
 
变量是命名的存储空间,是以一组文字或符号,来替换一些设置或是一串保留的数据
整数,浮点,布尔,字符
Bash特征:把所有的变量都是字符
1,不区分变量类型
2,不用事先声明,直接使用
${}引用变量的当变量还有内容时必须加{}
如何给变量命名
1字母或者下划线开头 2 名字中一般包含字母数字下划线不要包含特殊字符
3建议使用大写字母
变量类别:本地变量(只对本shell生效)  环境变量(当前shell和子shell) 特殊变量(bash内置位置变量
查看内部系统环境变量:printenz   export
在变量引用中单引号和双引号的区别:单引号属于强引用,单引号内只是一般字符;双引号是弱引用,双引号内可以保持变量内容
反引号:使用命令本事时
Vimtutor教程
声明一标量:“变量名=。。。。”例如:#MYHOME=/user/username  引用是“$变量名”如echo $MYHOME
set命令声明变量,可省略,撤销变量:unset 撤销和赋值时不加$符号
bash打开子shell,exit退出 
声明环境变量:export
已经声明一本地变量使之成为环境变量:直接在本地变量前加export
$USER 当前用户   $SHELL当前使用的shell    $HISTSIZE缓存大小 PATH二进制环境变量  
echo $USER 显示当前的用户    echo $SHELL显示当前用户所用的shell  
保存执行命令的文件:~/.bash_history
which 命令显示一个命令的完整的路径
hash 查看所执行过的命令及所在的位置
PS1定义显示的格式
 
 
 
命令别名:alias
定义alias 别名=原名  例如alias dir=ls  相当于执行dir就是执行ls一样
撤销:unalias 名称 
单独的alias显示系统所有的别名
使用命令本身是:\命令
 
 
shell脚本的编译
编译型语言:静态语言需要与库向连接(cc++,java,c#
1,执行效率高2代码维护成本高
脚本型语言:动态语言(shell,perl,python,ruby
解释执行
脚本就是命令的罗列
 
例子:
Vim myfirstshell.sh 编辑用户
#! /bin/bash 解释器 
#    以#号开头是注释
echo “Add a user user6:”
useradd user6 增加用户
echo “set password for user6:”
echo “123456” |passwd --stdin user6   加密码
echo “The id of user6:”
id user6        显示信息
执行脚本: ./myfirstshell.sh
 
例子:1,显示当期系统日期 时间 用户shell
 1 #! /bin/bash
 2 echo "the current date is:`date '+%D'`"
 3 echo "the current date is:`date '+%T'`"
4        echo "the current user is: $USER and shell is $SHELL"
bash –n 脚本  检查脚本语法
 
 
环境配置文件
全局配置文件:/etc/profile   /etc/profile.d/*   /etc/bashrc
个人独有文件:~/.bashrc   ~/.bash_profile    ~/.bash_logout
profile类文件:设定环境变量,执行一些命令
bashrc类文件:设定本地变量,定义命令别名
用户登录时,shell又分为两种
交互登陆的shell:读取shell的次序
/etc/profile-->/etc/profile.d/*--->~/.bash.profile--->~/.bashrc--->/etc/bashrc
非交互式登陆的shell:读入shell的次序
~/.bashrc--->/etc/bashrc--->/etc/profile.d
比如:
重新读取,立即生效:1重新登陆
2 手动读取配置文件 #source 文件名 或者点(.)文件名
修改变量手动添加一PATH路径:export PATH=$PATH:路径(用冒号隔开)