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."
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"