安全上下文:指的是一类定义某个进程允许做什么的许可和权限的集合。
Ctrl+c 取消命令
命令行编辑快捷方式: Ctrl+a  快速将光标移到命令行行的行首
                     Ctrl+e  快速将光标移到命令行行的行尾
                     Ctrl+-->  <--  一次将光标移动一个单词
                     Ctrl+k   删除光标所在位置到尾部的内容
                     Ctrl+u   删除光标所在位置到首部的内容
                     Ctrl+l  或者 clear   清屏


Gllobing   文件名通配符
   *  匹配人一个任意长度的字符
   ? 匹配任意单个字符
   [] 匹配范围
   [:lower:] 匹配小写字母
   [:upper:] 匹配大写字母
   [:digit:] 匹配数字
   [:alnum:] 匹配字母数字
   [:punct:] 匹配标点
   [:space:] 匹配空格键
file  查看文件内容的类型
~ 当前此用户的家目录
shell 类型
   bsh
   sh
   ksh
   bash
Cat 连接并输出文件的内容,整个内容全部显示
    -n 显示行号
    -A = --show -all
    -E 显示行结尾符
    -V 显示没有打印的操作
cat /etc/shells  显示可用Shell


变量
bash中 都是为char型
分为本地变量,环境变量,位置参数变量,特殊变量
1.变量的使用
变量名:数字,字母,下划线组成,只能以字母开头,区分大小写。
#NAME=jarry (设置NAME变量内容为jarry)
#echo $NAME  (取变量内容)
jarry

#set CLASS=3 (设置CLASS变量内容为3)
#unset CLASS (取消设置的变量)
引用:去变量值
      “”弱引用(变量将依然作为变量)
      ‘’强引用 (变量将不再作为变量)
       `` 命令引用 (引用命令将作为内容付给变量)
echo  显示变量值
2.环境变量 (能被Shell及子Shell共享)
#export CLASS=3
#echo $CLASS
3

#NAME=jerry
readonly NAME  (设置只读变量,不能删)
#export (显示环境变量)
3.特殊变量
echo $? 显示上一个命令返回状态值 (若正确,则为0:;若不正确,则为1~255之间的数。)
echo $$ 显示当前进程号
命令别名
alias

写脚本:
格式
#!/bin/bash
……
……
……

set -x 调试执行(此命令执行后开始追踪)
set +x 调试命令(到此为止,调试结束,此命令执行完结束)
bash 文件名  在没有执行权限时依然可以执行
bash -x 文件名 可调式运行

4.位置参数命令
$1  ${10} ……
I/O 及管道
不指定时为标准输入/标准输出   标准错误输出
 I/O 重定向: > 输出重定向
              < 输入重定向
              1> 标准输出重定向
              2> 标准错误输出重定向
              &> 无论标准还是错误都放在一个文件中,原文件中的内容被覆盖掉了
set -C 拒绝信息覆盖
set +C 允许别人信息覆盖
>1 若别人用set -C 时则强行覆盖
>> 追加重定向,吧新的内容写入文件尾部
<< here document 在脚本生成文件


文本处理工具
Cat
    -A
    -n
    -s  压缩空白行
more 分页查看
less 既能向前查看,也能向后查看,还能搜索                 
tail 查看尾部十行
head 查看首部十行

GREP 全面搜索正则表达式并打印出来
      -v 匹配到的不显示,匹配不到的显示
      -i 在搜索时忽略大小写
      -An 匹配到的下边n行也显示出来
      -Bn 匹配到的上边n行也显示出来
      -Cn 匹配到的上边n行,下边n行都显示出来
  WC  字节、单词、行的统计
     -l 行的统计
     -w 单词的统计
     -c 字节的统计
条件测试
   整数 -eq 等于
        -ne 不等于
        -gt 大于
        -eg 大于等于
        -lt 小于
        -le 小于等于
   字符串 =  等于
          !=  等于
          >    [["$a">"$b"]]
          <    ["$a"\<"$b"]
          -z  空为真
          -n  空为假
   文件   -f  是否为普通文件
          -d  是否为文件
          -e  是否存在
          -x  是否可执行
          -w  是否可写
          -r  是否可读 
          -o  测试此文件属主是否是发起命令的人
   组合条件   -o 表或
              -!表非
              -a 表与
              && 只能连接两个完整的命令
           短路操作符 && 表前边条件只要有假,则后边的不执行
                      || 表前边条件只要有真,则后边的不执行
grep -E  表扩展的正则表达式
grep -F  快速搜索匹配
egrep  (= grep -E)
{} 次数匹配
() 字符组匹配
+ 1~n 次匹配字符
? 0次或n次匹配字符
sort 排序  默认按升序排序(拍完序厚输出结果,对原文件内容无影响)
      -o  把输出结果保存在指定位置
      -r  逆序
      -n  以数值方式排序
      -f  忽略大小写
      -u  把重复的去掉(排完序后)
      -t  默认以空格为分割符,可以指定
      -k  选取段
uniq  取出连续的重复行
     -c 可以显示每行所被重复的次数
     -u 只显示那些不被重复的行
     -d 只显示那些重复的行
aspell 检查该文件是否正确
aspell check + filename
tr  翻译 转换
sed  行编辑器 (非交互式,没有破坏性,不修改原文件)
#sed '/root/p' p 表示显示出来
     -n 只显示匹配到的内容
     -d 删除行
     a\ 在当前行后添加一行或多行   
     i\ 在当前行前添加一行或多行
     s  用一个字符串替换另一个字符串  如:sed 's/root/ROOT/' filname  用ROOT换掉root
     s/root/ROOT/g  g表示把所有出现的都替换掉
     -i 表示对原文件所匹配到的替换(直接修改原文件)


VI编辑器
分为三种模式:
 命令行模式
 编辑模式
 末行模式
三种模式之间的转换:
 进入命令行模式-->输入i a
 进入末行模式-->Esc
 命令-->末行  :
 末行-->命令 Esc
:q 退出
Ctrl+z 挂起推出
shift+z  退出

命令行模式下
  j 向下移动光标
  k 向上移动光标
  l 向右移动光标
  h 向左移动光标
行内移动:^  o  $
  ^ 移动到行首
  o 移动到行首(绝对行首,有空隔的移到空格前行首)
  $ 行尾(绝对行尾。有空格的把空格计算为字符)
以单词移动:w   b   e
  w:到下一个单词的词首
  b:若光标在词首,则到上一个单词的词首。若光标不在词首,     则到当前单词的词首
  e:若光标在词尾,则到下一个单词的词尾,若光标不在词尾,     则到当前单词的词尾
行间移动
nG : 1G 移动一行,  100G 移动100行
末行模式下:
:n  跳到第n行
按照语句跳转:>  <
段落间的跳转  }  {
命令--> 输入:
i :所在出的前面加
I :在光标所在处的前面行首
a : 在光标所在出的后面加
A :在光标所在出的行尾
o :在光标所在出的下一行
O :在光标所在出的上方开启一行,并转为输入状态
c :先删除一些东西,并转入输入状态
C :删除所在行转入输入状态
在命令状态下:
r:替换一个单词
R:覆盖模式
删除操作:
x 删除光标所在处的往后字符
dd 删除所在行
D 只删除内容,位置不变
X 删除光标所在处的往前的字符
ndd 删除n行
复制内容:
Y 复制
p 复制在这行的上方
P 复制在这行的下方
移动内容 d
在末行模式下(删除)
:10 ,100 从10-100行
:. , 100d 从当前到向下100行
:%d 删除全文
可视模式
v 以字符为单位
V 以行为单位
查询
n 向下查询   N 向上查询
撤销  u 撤销最近一次操作
      Ctrl+r 撤销上一次的撤销动作
      .  重做

Shell作业
1,shell 
 if
 三个数,最大数是谁?
代码:
#!/bin/bash
if [ $1 -gt $2 ];then

   if [$3 -gt $1 ];then
     echo "MAX is $3"
    else
     echo "MAX is $1"
   fi
elif [ $2 -gt $3 ];then
    echo "MAX is $2"
   else
    echo "MAX is $3"

fi

 

 

2.shell
   for
 ping C类网
代码:
#!/bin/bash
for I in {1..254};do
   if ping -c1 -w1 192.168.234.$I &> /dev/null;then
     echo "$I is online."
   else
     echo "$I is offline."
   fi
done

 ping B类网
代码:
#!/bin/bash
for M in {1..254};do
   for N in {1..254};do
         if ping -c1 -w1 192.168.$M.$N &> /dev/null;then
             echo "192.168.$M.$N is online.                       else              
             echo "192.168.$M.$N is offline."
         fi
   done
done

 

3.提示用户通过键盘输入一个用户名,来判断这个用户是否存在,如果存在就显示一下用户默认的shell
代码:
#/bin/bash
read -p "Please input your username:" A
if grep "^$A\>" /etc/passwd &> /dev/null ; then
    echo "The user's shell is:"
    grep "^$A\>" /etc/passwd | cut -d: -f7
else
    echo "The user not exist,please give me a correct username!"
fi

 

4.要求用户输入一个文件名,判断如果此文件是个普通文本文件,显示共有多少行
代码:
#!/bin/bash
 let COUNT=0
read -p "Please enter a file:" FILE
if [ -e $FILE -a -f $FILE ];then
   while read LINE
   do
  COUNT++
  done < $FILE
  echo "The file is in total of $FILE lines."
fi


5.写个脚本 通过查找“/etc/sysconfignetwork-scripts/ifcfg-eth0”
如果BOOTPROTO=dhcp,bootp,   改为 static

修改
IPADDR=

NETMASK=

service network restart

ifdown eth0 && ifup eth0
代码:

#!/bin/bash
 
  declare I J K
  let I="BOOTPROTO=dhcp"
  let J="BOOTPROTO=bootp"
  
  let K=`grep "^\<BOOTPROTO" /etc/sysconfig/network-scripts/ifcfg-eth0`
  if [ "$K" == "I"] || [ "$k" == "$J" ];then
      echo "You doesn't direct IP."
   else
      sed 's/IPADDR.*/IPADDR=192.168.145.127/g' /etc/sysconfig/network-scripts/ifcfg-eth0
      sed 's/NETMASK.*"/NETMASK=255.255.255.0' /etc/sysconfig/network-scripts/ifcfg-eth0
  fi

sed -e 's/IPADDR.*/IPADDR=192.168.145.127/g' -e 's/NETMASK.*/NETMASK=255.255.255.0/g' /etc......../ifcfg-eth0


6.100内偶数之和
#!/bin/bash
let SUM=0
let I=0
while [ $I -le 100 ];do
      let SUM+=$I
      let I+=2
done
echo "The SUM is $SUM"