Linux下文本编辑器有Emacs,Vim,gEdit,Nano,gvim,Eclipse,Emacs等文本编辑器,这些文本编辑器不同于Word处理器。

Vim :

gEdit:在图形界面下使用的文本编辑器,类似于文本编辑器。

Nano:简单易用

Eclipse:开源的软件,IBM开发

Emacs:GNU组织的重要产品。

 

Vim模式化的编辑:

编辑模式,命令模式

输入模式,插入模式

末行模式,

#vim

#vim [options] FILE1,FILE2,…  连续打开几个文件

#vim +n  FILE  处在第某行

#vim +/PATTERN /etc/inittab  打开/etc/inittab这个文件直接处在PATTERN这个行。

 

1.i(insert):在光标所在位置插入,光标前面    I:在当前光标所在行的行首

2.a(append):在光标所在位置插入,光标后面  A:行尾,转换成插入操作

3.o:光标所在行的下方新打开一个行         O:在光标坐在行的上方新打开一个行

 

输入模式à编辑模式:ESC

编辑模式à末行模式::

末行模式à编辑模式:ESC,ESC

1.       保存退出

:wq   保存退出

:wqall 保存多个文件

:w!    强行保存

Shift+ZZ键保存退出

2.       不保存退出

不保存退出,没有做过任何编辑

:q!   强行退出

:qall! 强行退出所有

Vim编辑器上如何使用光标移动:

h 表示想左侧移动

表示向下移动

表示向上移动

表示向右移动

先输入一个数值,然后再输入光标移动字母例如5h,表示向左移动5给字符。

w:跳到在下一个单词的词首

e:跳到单词的词尾  <--à  b:跳到单词的词首

 

(左小括号向前跳一句 <–-> )右小括号向后跳一句

{ 向左跳一段  }右跳一段

 

0:绝对行首  ßà$:绝对行尾

^:行首的第一个非空白字符

 

行间跳转:

G:跳到文件的最后一行

nG:跳到第n

在末行模式下可以通过输入数字跳转到某行

 

如何进行翻屏:

Ctrl+f向文件尾部翻一屏  ßà Ctrl+b向文件首部翻一屏

Ctrl+d向文件尾部翻半屏   Ctrl+u向文件首部翻半屏

 

c:跟跳转命令一起使用

C:删除光标所在行

cc:删除光标所在的行,并转入到编辑模式

 

x:相当于Backspace

5x:相当于删除5个字符

X:表示删除光标前的内容

 

删除指定内容:

d

dd 删一行

ndd 删除n

 

替换

r replace

大写R表示到进入到替换模式

 

撤销操作

u:取消最近一次的编辑操作

nu:撤销最近几次的操作

Ctrl+r表示重做上一个动作

. 重复前一个动作

 

复制和粘贴:

y: yank

y$

yy  复制本行

nyy 复制光标所在的向下n行(包含所在那一行)

p:将已复制的数据在光标下一行粘贴

P:将复制的数据在光标的上一行粘贴

 

剪切为先用d删除,然后在粘贴

 

可视化模式:

v按字符选取

V按行选取

 

查找:

/keyword

?keyword

n/N表示下一个

 

替换:substitude

在末行模式下:

ADDR1,ADDR2s/from/to/flags

:表示末行模式下

ADDR1表示开始的行

ADDR2表示结束的行

m,n表示从m到第n

1$表示从第一行到最后一行

.,$ 表示从当前行到最后一行

.,+8表示从当前行到第8

1$-1表示从第一行到倒数第2

%表示全文搜索

s表示搜索

/from表示需要替换的字符

/to 表示替换的字符

/flags 表示动作修正符   -i:表示忽略大小写 –g表示都替换

例如:   .,+8/a/A/g

 

同时打开多个vi,打开多个文章,则可以在末行模式下使用如下命令进行切换

next下一个

last 最后一个

first 第一个

prev 前一个

 

分割窗口:

Ctrl+w, s        水平分割

Ctrl+w, v        垂直分割

Ctrl+w, Arrow    Arrow 方向键进行切换

Ctrl+w, t

Ctrl+w, b

 

自动缩进:

set autoindent

set noai

 

语法高亮:

syntax on|off

 

搜索高亮:

:set hlsearch

 

分割窗口显示多个文件:

#vim –o FILE1 FILE2  水平分割

#vim –O FILE1 FILE2  垂直分割

 

设定vim的工作特征:

set nu

set nonu

 

vim 的配置文件:全局/etc/vimrc   可以在vim编辑

                个人~/.vimrc

 

Bash的算术运算:

+

-

*

/

%

shell下使用let 使用算术表达式:

1、  let expression

[root@localhost ~]# type let

let is a shell builtin

[root@localhost ~]# clear

[root@localhost ~]# let A=2*88

[root@localhost ~]# echo $A

176

2#$[expression]

[root@localhost ~]# A=$[3+7]

3#$((expression))

 

Practice1:100以内的和。

 

  1 #/bin/bash

  2 #

  3 declare -i SUM=0

  4   for I in {1..100};do

  5   SUM=$[$SUM+$I]

  6 done

  7

  8 echo "The SUM is :$SUM"

  9 unset SUM

 

语句的逻辑运算:

&&与运算

statement 1 && statement2  如果statement1执行成功,则statement2执行;如果statement 1为执行失败,则statement不执行。

||或运算

expression1 || expression    如果expression1执行成功,则不执行expression2;如果expression1执行不成功,则expression2执行;

! 非运算

expression

 

例子:

[root@localhost ~]# ping -c1 -W1 172.16.0.1 &> /dev/null && echo "172.16.0.1 online" || echo "172.16.0.1 offline"

172.16.0.1 online

[root@localhost ~]# ping -c1 -W1 172.16.0.7 &> /dev/null && echo "172.16.0.1 online" || echo "172.16.0.1 offline"

172.16.0.1 offline

 

Practice2:100以内偶数的和,提示:seq的帮助

  1 #!/bin/bash

  2 #

  3 declare -i SUM=0

  4 for I in `seq 2 2 100`;do

  5   SUM=$[$SUM+$I];

  6 done

  7

  8 echo "The SUM is $SUM"

 

 

  1 #!/bin/bash

  2 #

  3 declare -i SUM=0

  4 for I in `seq 2 2 100`;do

  5   let SUM=$SUM+$I  SUM=$(($SUM+$I))

  6 done

  7

  8 echo "The SUM is $SUM"

 

  1 #!/bin/bash

  2 #

  3 declare i SUM=0

  4 for I in {1..100};do

  5   M=$[$I%2]

  6   if [ $M -eq 0 ];then

  7     SUM=$[$SUM+$I]

  8   fi

  9 done

 10

 11 echo "Successfully Sum is: $SUM".

 12

 13 unset SUM

使用判断来进行100以内偶数的相加。

 

+=  -=  *=   /=  %=  在原有的基础上加,减,乘,除。

SUM=SUM+1      SUM+=1;

   SUM=SUM-1      SUM-=1;

   SUM=SUM*2     SUM*=2;

   … …

 

SUM=SUM+1,一次进步幅度为1,则也可以这样表示

SUM++,++SUM   SUM=SUM+1,SUM+=1;

SUM--,--SUM     SUM=SUM-1

 

Practice:写一个脚本:

1、添加10个用户user1user10,但要求只有用户不存在的情况下才能添加;

[root@localhost ~]# for I in {1..10};do userdel -r user$I;done

1 #!/bin/bash

  2  for NEWUSER in {1..10} ; do

  3     ! id user$NEWUSER &> /dev/null &&  useradd user$NEWUSER &> /dev/null && echo "user    $NEWUSER" |passwd --stdin user$NEWUSER &> /dev/null && echo "Add user user$NEWUSER suc    cessfully..."

  4 done

 

Practice:写一个脚本:

1、通过ping命令测试192.168.0.151192.168.0.254之间的所有主机是否在线,

         如果在线,就显示"ip is up."

         如果不在线,就显示"ip is down."

#!/bin/bash

#

MYNET=192.168.0

 

for I in {151..254}; do

  ping -c1 -W1 $MYNET.$I &> /dev/null && echo -e "\033[32m$MYNET.$I\033[0m is on." || echo -e "\033[31m$MYNET.$I\033[0m is down."

done

 

unset MYNET

 

#!/bin/bash

#

HOST=192.168.0.254

 

ping -c1 -W1 $HOST &> /dev/null

RETVAL=$?

 

if [ $RETVAL -eq 0 ]; then

  echo "$HOST is up."

else

  echo "$HOST is down."

Fi