N26-第六周作业

vim编辑器的使用

编辑模式:默认模式
编辑模式–>输入模式;
i:insert,在光标所在处输入;
a:append,在光标所在处后方输入
o:在光标所在处下方打开的一个新行;光标处在行首;
I:在光标所在行的行首输入
A:在光标所在处的行尾输入;
O:在光标所在处的上方打开一个新行;

输入模式–>编辑模式
ESC

编辑模式–>末行模式
:
末行模式–>编辑模式
ESC

关闭文件:
ZZ:保存并推出
:q 退出
:q! 强制退出,不保存此前的编辑操作
:wq 保存并退出
:x 保存并退出
:w /PATH/TO/SOMEFILE

光标跳转:

字符间跳转
h(左),l(右)
j(下),k(上)
#COMMAND:跳转由#指定字符
单词间跳转:
w:下一个单词的词首;
e:当前或后一个单词的词尾
b:当前或前一个单词的词首

#COMMAND:跳转由#指定单词;

行首行尾跳转
^:跳转至行首的第一个非空白字符;
0:跳转至行首;
$:跳转至行尾;

行间跳转
#G:跳转至由#指定的行。
1G,gg:跳转至第一行;
G:最后一行;

句间跳转:
):下一句
(:前一句
段间跳转
}下一个段落
{ 前一个段落

翻屏:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻

vim的编辑命令:

字符编辑
x:删除光标所在处的字符;
#x:删除光标所在处起始的#个字符;

xp:交换光标所在处字符与其后面的字符的位置;

替换命令(replace):
r:替换光标所在处的字符;

删除命令:
d:删除命令,可结合光标跳转字符,实现范围删除;
d$:
d^:
dw:
de:
db:
#COMMAND:
dd:删除光标所在的一整行;
#dd:删除光标所处的行起始供#行;
粘贴命令(p,put,paste)
p:缓冲区中的内容如果为整行,则粘贴在当前所在行的下方;否则,粘贴至当前光标所在处的后方;
P:缓冲区中的内容如果为整行,则粘贴在当前所在行的上方;否则,粘贴至当前光标所在处的前方;
复制命令(yank,y)
y:复制,工作行为相似于d命令;
y&
y^
y0

ye
yw
yb

#COMMAND

yy:复制一整行
#yy:复制#行

改变命令(change,c)
编辑模式–>输入模式,实现删除操作;
c$
c^
C0

cb
ce
cw
#COMMAND

cc:删除光标所在的行,并转换为输出模式;
#cc:

可视化模式:
v:按字符选定;
V:按行选定;

结合编辑命令使用:d,c,y

撤销操作:
u:撤销此前的操作;
#u:撤销此前的#个操作

撤销此前的撤销:
Ctrl+r

重复执行 前一个编辑操作:
.

vim自带的练习教程:vimtutor

vim末行模式:
内建的命令行接口

(1)地址定界
   :start_pos[,end_pos]
    #:特定的第#行,例如5即第5行;
    .:当前行;
    $:最后一行;
    #,#:指定行范围,左侧为起始行,右侧为结束行;
    #,+#: 指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
    .,$-1:从当前行到倒数第一行。

    %:全文
    /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
    /first/
    /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;

    可同编辑命令一同使用,实现编辑操作:
    d
    y
    c

w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
r  /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;

(2)查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:下一个,与命令方向相同;
N:上一个,与命令方向相反;

(3)查找替换
s:末行模式的命令;使用格式:s
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但是可以引用;
如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用向后引用;
直接引用查找模式匹配到的全部文本,要用&符号
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换;
vim的多文件功能:
多文件:
vim FILE1 FILE2 …

大文件间切换:
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个

退出所有文件:
:wqall 保存所有文件并推出;
:wall 保存所有文件
:qall 退出所有文件

多窗口:
-o:水平分隔窗口
-O:垂直分隔窗口

在窗口间切换:Ctrl+w,ARROW

注意:单个文件也可以分隔为多个窗口进行查看:
Ctrl+w,s:水平分隔窗口
Ctrl+w,v:垂直分割窗口
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;

[root@zhao-centos6 ~]# sed 's@^[[:space:]]@#@' /tmp/rc.sysinit

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

[root@zhao-centos6 ~]# sed 's%^[[:space:]]\+%%' /tmp/grub.conf

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

[root@zhao-centos6 ~]# sed 's%^#[[:space:]]\+%%' /tmp/rc.sysinit 

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

[root@zhao-centos6 ~]# sed '1,3i\#' /tmp/grub.conf 

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

[root@zhao-centos6 ~]# sed -e 's@enabled=0@enabled=1@' -e 's@gpgcheck=0@gpgcheck=1@' /etc/yum.repos.d/CentOS-Media.repo 

-e用于多处编辑

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

mkdir /backup
crontab -e
1 */4 * * * cp /etc/* /backup/etc\-$(date+"%Y%m%d%h%M")

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

mkdir -p /backup/messages_logs
crontab -e
1 1 * * 2,4,6 cp /var/log/messages /backup/messages_logs/messages\-$(date+"%Y%m%d%")

前面必须标注时间,不然会变成每小时每分钟执行

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

mkdir -p /stats/memory.txt
crontab -e
1 */2 * * * grep "^S" >> /status/memory.txt

必须加分,不然会变成每两小时每分执行一次。

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

crontab -e
1 */2 * * 1-5 echo "howdy"

脚本编程练习
10、创建目录/tmp/testdir-当前日期时间; 

[root@zhao-centos6 ~]# mkdir -p /tmp/testdir\-$(date +"%Y%m%d%H%M")

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

#!/bin/bash
for i in {1..100};do
        touch file"$i"
done  

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

#!/bin/bashdeclare -i num=`wc -l /etc/passwd | wc -l /etc/passwd | cut -d' ' -f1`declare -i i=0while [ $i -lt $num ];dosed -n ''$i'p' /etc/passwd | cut -d: -f1i=$[ $i+2 ]done

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

#!/bin/bashfor i in {1..19};do        useradd user"$i"        echo user"$i" | passwd --stdin user"$i"i=$[ $i+1 ]done

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

#!/bin/bashcd /tmpdeclare -i i=10for i in {10..19};do        touch file"$i"        i=$[ $i+1 ]done

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

#!/bin/bashdeclare -i i=10for i in {10..19};dochown user"$i" file"$i"chgrp user"$i" file"$i"i=$[ $i+1 ]done

原创文章,作者:lafengjinzi,如若转载,请注明出处:http://www.178linux.com/71061

(0)
lafengjinzilafengjinzi
上一篇 2017-03-13 22:27
下一篇 2017-03-14 16:09

相关推荐

  • Linux基础知识之GUN awk

    awk:报告生成器,格式化文本输出    基本用法:    gawk [options] 'program' FILE …    options:     &…

    Linux干货 2016-09-20
  • 马哥网络教育班21期-第一周课程练习

      一、计算机的组成及其功能 1.1计算机的组成      1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分,分别为运算器、控制器、存储器、输入设备和输出设备。 1.2计算机的组成 控制器(Contro…

    Linux干货 2016-07-12
  • nfs与samba实现文件共享服务的流程

    nfs与samba实现文件共享服务的流程     nfs与samba都是能够实现文件共享的服务应用,其用法大致相同,但是挂载选项与配置文件的设置机制不同,下面介绍这两种文件共享服务的内容。     一.nfs服务的安装与配置     服务端主机的配置:   &…

    Linux干货 2016-10-23
  • 超文本传输安全协议—HTTPS

        超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。H…

    Linux干货 2017-08-07
  • mariadb基础应用

    mariadb基础应用 一、 前言 MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users …

    Linux干货 2016-12-16
  • 磁盘管理—MBR分区与GPT分区总结

    描述: 1,什么是磁盘分区   磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。 2,硬盘结构及参数   3D参数(Disk Geometry):CHS(Cylinder/Head/Sector)  &nb…

    Linux干货 2016-08-29