1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
[root@centos6 ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@centos6 ~]# sed -i 's/^[[:space:]]/#/' /tmp/rc.sysinit
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
[root@centos6 ~]# cp /boot/grub/grub.conf /tmp/ [root@centos6 ~]# sed -i 's/^[[:space:]]//' /tmp/grub.conf
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
[root@centos6 ~]# sed 's@^#[[:space:]]\+@@g' /tmp/rc.sysinit
4、为/tmp/grub.conf文件中前三行的行首加#号;
[root@centos6 ~]# sed '1,3s@^.*@#&@g' /tmp/rc.sysinit | head -3 ##!/bin/bash ## ## /etc/rc.d/rc.sysinit - run once at boot time
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
sed 's/enabled=0/enabled=1/g;s/gpgcheck=0/gpgcheck=2/g' /etc/yum.repos.d/CentOS-Media.repo | egrep "(enabled|gpgcheck)"
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
00 */4 * * * root /bin/tar -zcf /backup/etc-`date +%Y%m%d%H%M` /etc
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
00 00 * * 2,4,6 /bin/tar -zcf /backup/messages_logs/messages-`date +%Y%m%d` /var/log/messages
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
[root@centos6 backup]# mkdir /stats 00 */2 * * * /bin/grep '^S' /proc/meminfo >>/stats/memory.txt
9、工作日的工作时间内,每两小时执行一次echo "howdy"
00 8-17/2 * * 1-5 /bin/echo "howdy"
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
11、在此目录创建100个空文件:file1-file100
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
13、创建10用户user10-user19;密码同用户名;
14、在/tmp/创建10个空文件file10-file19;
15、把file10的属主和属组改为user10,依次类推。
#!/bin/bash # DIR=/tmp/testdir-`date +%Y%m%d` touch /tmp/$DIR/file{1..100} sed -n 'n;p' /etc/passwd|cut -d: -f1 for i in `seq 10 19`;do useradd user$i echo "user$i" | passwd --stdin user$i touch /tmp/file$i chown user$i:user$i /tmp/file$i done
vim编辑器
1 什么是vim编辑器
vim是模式化的编辑器
文本编辑器:
文本:纯文本,ASCII text;Unicode;
文本编辑种类:
行编辑器:sed
全屏编辑器:nano, vi
2 vim基本模式
编辑模式,命令模式
输入模式
末行模式:内置的命令行接口;
2.1 模式转换
2.1.1 编辑模式–>输入模式
i:insert, 在光标所在处输入;
a: append,在光标在处后方输入;
o:在光标所在处的下方打开一个新行;
I:在光标所在行的行首输入;
A:在光标所在行的行尾输入;
O:在光标所在处的上方打开一个新行;
2.1.2 输入模式–>编辑模式
ESC
2.1.3 编辑模式–>末行模式
:
2.1.3 末行模式 –> 编辑模式
ESC
3 打开文件
# vim [options] [file ..]
+#:打开文件后,直接让光标处于第#行的行首;
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
[root@centos6 ~]# vim +5 /etc/fstab #打开/etc/fstab文件,让光标处于第5行行首
[root@centos6 ~]# vim +/UUID /etc/fstab #打开/etc/fstab文件,让光标处于第一个被匹配到的字符“UUID”行的行首
[root@centos6 ~]# vim + /etc/fstab #打开/etc/fstab文件,让光标处于最后一行的行首
4 关闭文件:
4.1 编辑模式下
ZZ:保存并退出;
4.2 末行模式下
:q 退出
:q! 强制退出,不保存此前的编辑操作
:wq 保存并退出;
:w, :q
:x 保存并退出;
:w /PATH/TO/SOMEFILE 另存为
5 光标跳转
5.1 字符间跳转
h:左
j:下
k:上
l:右
#COMMAND:跳转由#指定的个数的字符;
5.2 单词间跳转
w:下一个单词的词首;
e:当前或后一个单词的词尾;
b:当前或前一个单词的词首;
nCOMMAND:跳转由n指定的个数的单词;
5.3 行首行尾跳转
^:跳转至行首的第一个非空白字符;
0:跳转至行首;
$:跳转至行尾;
5.4 行间跳转
nG:n为数字,跳转至这个文件的第n行;
1G, gg:跳转珐第一行;
G:跳转至最后一行;
n+[Enter]键:n为数字,光标向下跳转n行(常用)
5.5 句间跳转:
)
(
5.6 段间跳转
}
{
5.7 翻屏:
Ctrl+f:向文件尾翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
Enter:按行向后翻
6 vim的编辑命令
6.1 字符编辑
x:删除光标所在处一个的字符
X:删除光标所在处之前的一个字符
nx:n为数字,删除光标所在处起始的n个字符
xp:交换光标所在处的字符与其后面字符的位置;
6.2 替换命令
r:替换光标所在处的字符一次
R:会一直替换光标所在处的字符,直到按下[Esc]键为止(常用)
6.3 删除命令
dd:删除光标所在处的那一整行(常用)
ndd:n为数字,删除光标所在的向下n行,例如20dd则是向下删除20行(常用)
d$:删除从光标所在处到该行行尾的字符
d^:删除从光标所在处到该行行首的字符
dw:删除光标所在处的这个单词至下个单词词首
de:删除光标所在处的这个单词
db:删除光标所在处前面的一个单词
d0:那个是数字的0,删除从光标所在处到该行的最前面的一个字符
6.4 粘贴命令
p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;(常用)
P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;(常用)
6.5 复制命令
yy:复制光标所在的那一行(常用)
nyy:n为数字,复制光标所在的向下n行,例如20yy则是向下复制20行(常用)
y1G:复制光标所在行到第一行的所有数据
yG:复制光标所在行到最后一行的所有数据
y0:复制光标所在的字符到该行行首的所有数据
y0:复制光标所在的字符到该行行尾的所有数据
6.6 改变命令(chage,c)
编辑模式 –> 输入模式,实现删除操作;
cc:删除光标所在的行,并转换为输入模式;
ncc:n为数字,删除光标所在的向下n行,并转换为输入模式;例如20cc则是向下删除20行(常用)
6.7 可视化模式
v:按字符选定;
V:按行选定;
结合编辑命令使用:d, c, y
6.8 撤销(undo)操作:
u:撤销此前的操作;(常用)
nu:n为数字,撤销此前的n个操作;
Ctrl+r:恢复此前的撤销(常用)
.:重复执行前一个编辑操作
默认可以撤销50个之前的操作
vim自带的练习教程:vimtutor
7 vim末行模式:
vim末行模式是内建的命令行接口
7.1 地址定界
:start_position[,end_position]:起始位置,结束位置
n:特定的第#行,例如5即第5行;
.:点号表示当前行;
$:最后一行;
n,n:指定行范围,左侧为起始行,右侧为结束行;
n,+n:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7,从第3行开始向后+7行
.,$-1:表示从当前行到倒数第二行
1,$:表示从第一行到最后一行;
%:表示全文
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
例如,/first/,$:从第一次能被first匹配到的行开始到最后一行结束;
/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
可同编辑命令一同使用,实现编辑操作:
d、y、c
w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
范例:
:5r /root/test.txt:将/root/test.txt文件中的5行内容添加到当前文件中。
7.2 查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
n:这个n是英文n按键,继续查找下一个,与命令方向相同;
N:这个n是英文N按键,继续查找上一个,与命令方向相反;
7.3 查找查找并替换
s:末行模式的命令;使用格式:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式;
替换为的内容:不能使用下则表达式,但可以引用;
如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
i:忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换;
范例:
:1,20s/this/THIS/ig:将1到20行的this替换为THIS,并忽略大小写
可把分隔符替换为其它非常用字符:s@@@、s###
示例:
:%s@\<t\([[:alpha:]]\+\)\>@T\1@g:表示把文件中以t开头的单词替换为T开头
:%s@\<t[[:alpha:]]\+\>@&er@g:表示把文件中以t开头的单词尾部都加上一个er
练习1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;
[root@www ~]# cp /etc/grub2.cfg /tmp/
[root@www ~]# vim /tmp/grub2.cfg
:%s@^[[:space:]]\+@@
练习2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;
:%s@^[[:space:]]\+[^[:space:]]@#&@g
练习3、为/tmp/grub2.cfg文件的前三行的行首加上#号;
练习4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;
:%s@\(enabled\|gpgcheck\)=0@\1=1@g
8 vim的多文件功能:
8.1 多文件
vim FILE1 FILE2 …
8.1.1 在文件间切换:
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
8.1.2 退出所有文件:
:wqall 保存所有文件并退出;
:wall
:qall
8.2 多窗口
-o:水平分割窗口
-O:垂直分割窗口
在窗口间切换:Ctrl+w, ARROW
注意:单个文件也可以分割为多个窗口进行查看:
Ctrl+w, s:水平分割窗口
Ctrl+w, v:垂直分割窗口
9 vim的环境设置
注意:在末行模式下的设定,仅对当前vim进程有效;
永久有效:
全局:/etc/vimrc
用户个人:~/.vimrc
1、行号
显示:set number, 简写为set nu
取消显示:set nomber, 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
课外作业:如何设置tab键缩进4个字符;
vim /etc/vimrc set ts=4 set expandtab set autoindent
原创文章,作者:zhuckee,如若转载,请注明出处:http://www.178linux.com/56738