网络班N22期第六周博客作业

请详细总结vim编辑器的使用并完成以下练习题

打开文件: ~]# vim [options] [file ..]
      +#:打开文件后,直接让光标处于第#行
      +/PARTTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行
vim有三种模式,分别为:编辑模式(默认打开就是此模式)、输入模式、末行模式
模式转换:
    编辑模式(默认打开模式)-->输入模式,按ESC键退回编辑模式
     按i键,在光标所在处输入
       按o键,在光标所在处的下方新打开一行
       按a键:在光标所在处的后方输入
       按I:在光标所在处的行首输入
       按A:在光标所在行的行尾输入
       按O:在光标所在处的上方打开一个新行
     编辑模式-->末行模式(命令模式,vim内置的命令行),按:键,按ESC退回编辑模式
关闭文件:
      ZZ:保存退出
      :q:退出,q!,强制退出
      :wq:保存退出
      :x:保存并退出
      :w /PATH/TO/FILE :另存为
      :r /PATH/FROM/FILE:将指定的文件中的文本读取并插入至指定位置
光标跳转:
         字符间跳转:
              h,l:左,右
              j,k:下,上。(h,l,j,k)#:一次跳转指定#个字符
         单词间跳转
              w:下一个单词的词首
              e:下一个单词的词尾
              b:当前或前一个单词的词首,(w,e,b)#:跳转#指定个单词
         行首行尾跳转
              ^:跳转至行首的第一个非空白字符
              0:跳转至行首
              $:跳转至行尾
         行间跳转
              #G:跳转至#指定的行,跳转至最后一行,G
              gg:跳转至第1行,或 1G
         句间跳转
              )
              (
         段间跳转
              }
              {
 翻屏:
         Ctrl+f:向文件尾部翻一屏
         Ctrl+b:向文件首部翻一屏
         Ctrl+d:向文件尾部翻半屏
         Ctrl+u:向文件首部翻半屏
         Enter:按行向后翻
编辑命令:
         字符编辑
               x:删除光标所在处的单个字符,#x:删除光标所在处起始的#个字符
               xp:交换光标所在处的字符与其后面的字符的位置
         替换命令
               r:替换光标所在处的字符,rCHAR,替换成指定的字符
         删除命令
               d:删除命令,可结合光标跳转符实现范围删除
               d$:删除光标所在处至行尾之间的字符
               d^:删除光标所在处至行首之间的字符
               dw:向后删除一个单词
               db:向前删一个单词
               de:通dw
               dd:删除光标所在处的整行,或者#dd,删除#指定的多少行
         粘贴命令
               p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
               P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
         复制命令
               y:复制,相似于d命令
               y$
               y^
               ye
               yw
               yb
               yy:复制整行,#yy:复制#行
               cc:删除光标所在的行,并转换为输出模式
         可视化模式
               V:选择整行
               v:可选单个字符
         撤销操作
               u:撤销此前的操作
               #u:撤销此前的#个操作
               Ctrl+r:撤销此前的撤销
               . :重复执行前一个编辑操作(点号)
末行模式:
         地址定界
               #:特定的第#行,例如5即第5行
               #,#:指定行范围,左侧为起始行,右侧为结束行
               #,+#:指定行范围,左侧为起始行绝对行号,左侧为相对左侧行号的偏移量,例如,3,+7,从3行开始往后数7行
               .,$-1:
               1,$:
               %:全文
               /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
               /pat1/,/pat2/:从光标所在处起始,第一次由pat1所匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行,可以结合 d,y,c命令使用
         查找
               /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
               ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
                       n:下一个
                       N:上一个
         查找并替换:
               s:末行模式的命令,格式:s/要查找的内容/替换为的内容/修饰符
                      要查找的内容:可使用正则表达式
                      替换为的内容:不能使用正则表达式,但可以引用
                      如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用
                      直接引用查找模式匹配到的全部文本,要使用 &符号,例如:%s@\<t[[:alpha:]]\+\>@&er@g
               修饰符:
                      i:忽略大小写
                      g:全局替换 
多文件编辑功能:
         ~]# vim file1 file2
         在文件间切换
               :netxt 下一个
               :prev 上一个
               :first 第一个
               :last 最后一个
         退出所有文件
               :wqall,保存所有文件并退出
               :wall,保存所有文件
               :qall,退出所有文件
         多窗口
               -o:水平分割窗口
               -O:垂直分割窗口
                   单个文件分割窗口:Ctrl+w,s,水平分割,Ctrl+w,v,垂直分割窗口
定制vim特性
         在末行模式下的设定,仅对当前vim进程有效
         永久有效:
             全局:编辑/etc/vimrc
             个人:~/.vimrc
                1、行号,显示:set number,简写set nu;取消:set nonmber,简写set nonu
                2、括号匹配显示高亮,匹配:set showmatch,set sm;取消:set nosm
                3、自动缩进,启用:set ai ;禁用:set noai
                4、高亮搜索,启用:set hlsearch;禁用:set  nohlsearch
                5、语法高亮,启用:syntax on;禁用:syntax  off
                6、忽略字符大小写,启用:set  ic;禁用:set  noic
                获取帮助:
                  :help,或者:help subject,例如:help  set

1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

[root@bogon job]# sed 's@^[[:space:]]\+@#@;w /tmp/rc.sysinit2' /etc/rc.d/rc.sysinit
[root@bogon job]# head -20 /tmp/rc.sysinit2
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m
if [ -f /etc/sysconfig/network ]; then
#. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
#HOSTNAME=localhost
fi
if [ ! -e /proc/mounts ]; then
#mount -n -t proc /proc /proc


2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;

[root@bogon job]# sed 's@^[[:space:]]\+@@;w /tmp/grub.conf' /boot/grub/grub.conf 
# grub.conf generated by anaconda
# #
# # Note that you do not have to rerun grub after making changes to this file
# # NOTICE:  You have a /boot partition.  This means that
# #          all kernel and initrd paths are relative to /boot/, eg.
# #          root (hd0,0)
# #          kernel /vmlinuz-version ro root=/dev/mapper/vg_cactiezv10-LogVol00
# #          initrd /initrd-[generic-]version.img
# #boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CactiEZ (2.6.32-71.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/vg_cactiezv10-LogVol00 rd_LVM_LV=vg_cactiezv10/LogVol00 rd_LVM_LV=vg_cactiezv10/LogVol01 rd_NO_LUKS rd_NO_MD rd_NO_DM.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.x86_64.img
[root@bogon job]# ls /tmp/grub.conf 
/tmp/grub.conf


3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符

[root@bogon job]# sed -i 's@^#[[:space:]]\+@@' /tmp/rc.sysinit
[root@bogon job]# head /tmp/rc.sysinit 
#!/bin/bash
#
/etc/rc.d/rc.sysinit - run once at boot time
#
Taken in part from Miquel van Smoorenburg's bcheckrc.
#
HOSTNAME=$(/bin/hostname)
set -m


4、为/tmp/grub.conf文件中前三行的行首加#号;

1、[root@bogon job]# vim /tmp/grub.conf
2、在vim末行模式下输入1,3s@^[^[:space:]]\+@#&@g
3、
[root@bogon job]# head -3 /tmp/grub.conf 
## grub.conf generated by anaconda
## #
## # Note that you do not have to rerun grub after making changes to this file


5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

1、[root@bogon job]# vim /etc/yum.repos.d/CentOS-Media.repo
2、在vim末行模式下输入 %s@\(enabled\|gpgcheck\)=0@\1=1@g
3、
[root@bogon job]# tail -5 /etc/yum.repos.d/CentOS-Media.repo
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202

1、[root@bogon job]# mkdir /backup
2、[root@bogon job]# vim backup.sh
#!/bin/bash
#
DATE=`date +%Y%m%d`
cp -r /etc /backup/etc-$DATE
3、crontab -e
* */4 * * * /bin/bash /root/job/backup.sh > /dev/null
4、手动执行一次脚本
[root@bogon job]# ls /backup/
etc-20151204


7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402

1、vim backup.sh
#!/bin/bash
#
DATE=`date +%Y%m%d`
cp -a /var/log/messages /backup/messages_log/messages-$DATE
2、crontab -e
* * * * 2,4,6 /bin/bash /root/job/backup.sh > /dev/null
3、手动执行一次脚本
[root@bogon job]# ls /backup/messages_log/
messages-20151204


8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

1、crontab -e
2、* */2 * * * /bin/grep '^S' /proc/meminfo >>/stats/memory.txt

9、工作日的工作时间内,每两小时执行一次echo "howdy"

1、crontab -e
* 9-17/2 * * 1-5 /bin/echo "howdy"

脚本编程练习

10、创建目录/tmp/testdir-当前日期时间;

[root@bogon ~]# date
Wed Dec  2 16:37:55 CST 2015

#!/bin/bash
#
DATE=`date +%Y-%m-%d-%H:%M`
mkdir /tmp/testdir-$DATE

[root@bogon ~]# ls /tmp
etc.test      rc.sysinit  testdir-2015-12-02-16:36  testdir-2015-12-02-16:38
maxusers.txt  test        testdir-2015-12-02-16:37

11、在此目录创建100个空文件:file1-file100

#!/bin/bash
#
for i in {1..100};do
    mkdir ./file$i
done
[root@bogon job]# ls
100.sh   file17  file26  file35  file44  file53  file62  file71  file80  file9   file99
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;

1、vim sed.sh
#!/bin/bash
#
sed -n 'n;p' /etc/passwd >>/root/job/pass.txt
cat pass.txt | cut -d: -f1
2、bash sed.sh
[root@bogon job]# bash sed.sh 
bin
adm
sync
halt
uucp
games
ftp
dbus
vcsa
saslauth
rpcuser
haldaemon
sshd
student
rtkit
avahi-autoipd
user12
user13
hello3
user7
user9
user3
user1
hadoop2
hadoop4
hadoop6
hadoop8
hadoop10
user2
slackware
mysql
bash
basher
user14
user17
user19
bin
adm
sync
halt
uucp
games
ftp
dbus
vcsa
saslauth
rpcuser
haldaemon
sshd
student
rtkit
avahi-autoipd
user12
user13
hello3
user7
user9
user3
user1
hadoop2
hadoop4
hadoop6
hadoop8
hadoop10
user2
slackware
mysql
bash
basher
user14
user17
user19

13、创建10用户user10-user19;密码同用户名;

#!/bin/bash
#
for i in {10..19};do
   useradd user$i
   echo user$i | passwd --stdin user$i &>/dev/null
done

[root@bogon job]# id user10
uid=5018(user10) gid=5018(user10) groups=5018(user10)
[root@bogon job]# id user11
uid=5004(user11) gid=5004(user11) groups=5004(user11)
[root@bogon job]# id user12
uid=5003(user12) gid=5003(user12) groups=5003(user12)

14、在/tmp/创建10个空文件file10-file19; 

#!/bin/bash
#
for i in {10..19};do
   touch /tmp/file$i
done
[root@bogon job]# ls /tmp
file10  file11  file12  file13  file14  file15  file16  file17  file18  file19

15、把file10的属主和属组改为user10,依次类推。

#!/bin/bash
#
for i in {10..19};do
   chown user$i:user$i /tmp/file$i
done
~   
[root@bogon job]# ll /tmp/
-rw-r--r-- 1 user10 user10 0 Dec  2 17:01 file10
-rw-r--r-- 1 user11 user11 0 Dec  2 17:01 file11
-rw-r--r-- 1 user12 user12 0 Dec  2 17:01 file12
-rw-r--r-- 1 user13 user13 0 Dec  2 17:01 file13
-rw-r--r-- 1 user14 user14 0 Dec  2 17:01 file14
-rw-r--r-- 1 user15 user15 0 Dec  2 17:01 file15
-rw-r--r-- 1 user16 user16 0 Dec  2 17:01 file16
-rw-r--r-- 1 user17 user17 0 Dec  2 17:01 file17
-rw-r--r-- 1 user18 user18 0 Dec  2 17:01 file18
-rw-r--r-- 1 user19 user19 0 Dec  2 17:01 file19

原创文章,作者:凸b男波万,如若转载,请注明出处:http://www.178linux.com/47655

(0)
凸b男波万凸b男波万
上一篇 2016-09-26
下一篇 2016-09-26

相关推荐

  • 马哥教育网络班19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥用来连接两个不同的网络间的设备;集线器的作用是把接受的信号放大,从另一个端口再穿法出去,说白了就是延长网络的传输距离;   二层交换机工作在数据链路层,根据源和目的MAC地址进行数据转发;三层交换机就是具有部分路由器功能的交换机,三层交换…

    Linux干货 2016-07-07
  • linux学习心得

    Linux学习心得 之前没怎么了解过linux运维,机缘巧合来到了这里,刚刚开始一脸蒙圈,或者说现在仍然是,不过最大的收获是我在这里真正认真学习了,有了一个端正的态度,一切都是好的开始。 这一周,我学习了linux的发展史,如何安装系统,一些简单的命令等。。。。下面我一一介绍一下,初学者,可能简单粗暴,多多指教! 系统安装: 1:首先用光盘进行linuxIS…

    2017-07-16
  • Linux系统的软链接和硬链接

    Linux的链接是一种共享文件和访问它的用户的若干目录项之间建立联系的一种方法。一共分为两种链接,分别是软链接和硬链接。 一、硬链接 1、硬链接的本质上是一个文件,它们除了名字不一样,其他都一样,占用的空间是一个。硬链接会增加文件的链接数。如下图 (1)建立硬链集之前     (2)建立硬链接之后 2、删去一个链接名,链接数减一…

    Linux干货 2016-10-22
  • 软件包管理

      软件运行环境       API:Application Programming Interface         POSIX :Portable OS      码程序源代码 –>预处理 –> 译…

    Linux干货 2016-08-29
  • 马哥教育网络班21期第六周作业

    详细总结VIM编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加# cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :%s/^[[:space:]]\+/#/…

    Linux干货 2016-08-22
  • 网络基础总结

    这周南老师出差了,由王老师给我们代课,这周我们主要学习了网络基础,相比着之前,主要是理论加理解。下面我总结一下。 处于21世纪的我们,互联网时代,网络在我们身边的各个角落,覆盖了我们的衣食住行,带来 很多方便;首先什么是网络, 家庭办公室,移动用户,总部,分支机构。。。都在用互联网相连着,省去了许多麻烦,时间,加快了办公效率; 资源共享的功能和优点:数据和应…

    2017-09-02

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:44

    crontab的题目都不对,在仔细想想