CentOS7 如何计划任务 保存退出 centos7保存并退出命令_debian重启命令


1.1 Linux系统介绍

GUN,GPL,LGPL介绍

  • GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统
  • GPL协议的主要内容是只要在一个软件中使用("使用"指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。
  • LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

Linux特性介绍

  • 开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
  • 多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。
  • 多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。
  • Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。
  • Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
  • 可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。

Linux常见的发行版本介绍

Linux的发行版本大体可以分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的RedHatLinux为代表,后者以Debian为代表。

  • Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由 Ian Murdock于1993年创建,分为三个版本分支: stable(服务器版), testing(稳定版) 和unstable(测试版)。
  • Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。
  • Marc Ewing [马克尤恩]成立了 Red Hat 软件公司,成为最著名的Linux分销商之一,要求用户先购买承诺保证产品的稳定性,安全性。
  • Fedora和Redhat这两个Linux的发行版联系很密切。Redhat 自9.0以后,不再发布桌面版的,而是把这个项目与开源社区合作,于是就有了Fedora 这个 Linux 发行版。Fedora项目是由 Red Hat 赞助,由开源社区与 Red Hat 工程师合作开发的项目统称。
  • CentOS(Community EnterpriseOperating System社区企业操作系统)计划是在2003年红帽决定不再提供免费的技术支持及产品认证之后的部份"红帽重建者"(RedHat rebuilders)之一。
  • SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉,openSUSE 项目是由Novell公司资助的全球性社区计划,旨在推进 Linux 的广泛使用。这个计划提供免费的openSUSE 操作系统。

目前最著名的发行版本:Debian,ubuntu、OpenSuse(原Suse)、CentOS、fedora等。

Linux的基本思想

一切都是文件,短小精悍单一功能组成,组合小程序完成大任务

1.2 Linux基本命令

  • · 文件处理命令
  • · 权限管理命令
  • · 文件搜索命令
  • · 帮助命令
  • · 用户管理命令
  • · 压缩解压命令
  • · 网络命令
  • · 关机重启命令

1.2.1 文件处理命令

ls


ls 选项[-ald] [文件或目录]
 -a 显示所有文件,包括隐藏文件
 -l 详细信息显示
 
[huichen@localhost test]$ 
[huichen@localhost test]$ ls
1 1.txt
[huichen@localhost test]$ ls -a
. .. 1 1.txt
[huichen@localhost test]$ ls -l
总用量 0
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1.txt


mkdir


语法:mkdir -p [目录名]
功能描述:创建新目录
选项:-p 递归创建
 
范例:
[huichen@localhost test]$ ls -l
总用量 0
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1.txt
[huichen@localhost test]$ mkdir test1
[huichen@localhost test]$ ls -l
总用量 4
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1
-rw-rw-r-- 1 huichen huichen 0 12月 1 16:49 1.txt
drwxrwxr-x 2 huichen huichen 4096 12月 1 17:05 test1
[huichen@localhost test]$ mkdir test2/test3
mkdir: 无法创建目录"test2/test3": 没有那个文件或目录
[huichen@localhost test]$ mkdir -p test2/test3
[huichen@localhost test]$ ls test2
test3


pwd


语法:pwd
功能描述:创建新目录
 
范例:
[huichen@localhost ~]$ pwd
/home/huichen
[huichen@localhost ~]$


rmdir


语法:rmdir [目录名]
功能描述:删除空目录,非空删不了
选项:
 -p:递归删除
 -v:显示删除信息
范例:
[huichen@localhost test]$ ls
1 1.txt test1 test2
[huichen@localhost test]$ ls test2
test3
[huichen@localhost test]$ rmdir test2
rmdir: 删除 "test2" 失败: 目录非空
[huichen@localhost test]$ rmdir -pv test2/test3
rmdir: 正在删除目录 "test2/test3"
rmdir: 正在删除目录 "test2"
[huichen@localhost test]$


cp


语法:cp [options] source dest
 cp [options] source... directory
功能描述: cp命令主要用于复制文件或目录。
选项:
 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
 -f:覆盖已经存在的目标文件而不给出提示。
 -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
 -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
 
范例:
[huichen@localhost test]$ ls
1 1.txt test1
[huichen@localhost test]$ ls test1/
[huichen@localhost test]$ cp 1 test1/
[huichen@localhost test]$ ls test1/
1
[huichen@localhost test]$ cp test1/ test2
cp: 略过目录"test1/"
[huichen@localhost test]$ ls
1 1.txt test1
[huichen@localhost test]$ cp -fr test1/ test2
[huichen@localhost test]$ ls
1 1.txt test1 test2
[huichen@localhost test]$ ls test2
1
[huichen@localhost test]$


mv


语法:mv [原文件或目录] [目标目录]
功能描述:剪切文件、改名
选项:
 -f 如果重复则直接覆盖
 -i 覆盖前询问用户
 -v 显示执行过程信息
 
范例:
[huichen@localhost test]$ ls
1 1.txt test1 test2
[huichen@localhost test]$ mv -iv 1 2
"1" -> "2"
[huichen@localhost test]$ ls
1.txt 2 test1 test2
[huichen@localhost test]$ ls test1
1
[huichen@localhost test]$ mv 2 test1
[huichen@localhost test]$ ls
1.txt test1 test2
[huichen@localhost test]$ ls test1
1 2
[huichen@localhost test]$


rm


语法:rm -rf [文件或目录]
功能描述:删除文件
选项:
 -r 删除目录,递归删除
 -f 强制执行
 
范例:
[huichen@localhost test]$ ls
1.txt test1 test2
[huichen@localhost test]$ rm 1.txt 
[huichen@localhost test]$ ls
test1 test2
[huichen@localhost test]$ rm test1
rm: 无法删除"test1": 是一个目录
[huichen@localhost test]$ rm -f test1
rm: 无法删除"test1": 是一个目录
[huichen@localhost test]$ rm -fr test1
[huichen@localhost test]$ ls
test2
[huichen@localhost test]$


touch


语法:touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
功能描述:修改时间戳,顺便创建空文件
选项:
 -a 改变档案的读取时间记录。
 -m 改变档案的修改时间记录。
 -c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
 -d 设定时间与日期,可以使用各种不同的格式。
 -t 设定档案的时间记录,格式与 date 指令相同。
 
范例:
[huichen@localhost test]$ ls
test2
[huichen@localhost test]$ touch 1.txt
[huichen@localhost test]$ ls
1.txt test2
[huichen@localhost test]$ stat 1.txt
 File: "1.txt"
 Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: fd00h/64768d Inode: 157169 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 502/ huichen) Gid: ( 502/ huichen)
Access: 2017-12-01 18:04:49.779578582 +0800
Modify: 2017-12-01 18:04:49.779578582 +0800
Change: 2017-12-01 18:04:49.779578582 +0800
[huichen@localhost test]$ touch -a 1.txt
[huichen@localhost test]$ stat 1.txt
 File: "1.txt"
 Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: fd00h/64768d Inode: 157169 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 502/ huichen) Gid: ( 502/ huichen)
Access: 2017-12-01 18:05:26.014644631 +0800
Modify: 2017-12-01 18:04:49.779578582 +0800
Change: 2017-12-01 18:05:26.014644631 +0800
[huichen@localhost test]$ touch -m 1.txt 
[huichen@localhost test]$ stat 1.txt 
 File: "1.txt"
 Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: fd00h/64768d Inode: 157169 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 502/ huichen) Gid: ( 502/ huichen)
Access: 2017-12-01 18:05:26.014644631 +0800
Modify: 2017-12-01 18:05:54.285096319 +0800
Change: 2017-12-01 18:05:54.285096319 +0800
[huichen@localhost test]$ touch -t 201603011201.23 1.txt 
[huichen@localhost test]$ stat 1.txt 
 File: "1.txt"
 Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: fd00h/64768d Inode: 157169 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 502/ huichen) Gid: ( 502/ huichen)
Access: 2016-03-01 12:01:23.000000000 +0800
Modify: 2016-03-01 12:01:23.000000000 +0800
Change: 2017-12-01 18:07:59.509905033 +0800
[huichen@localhost test]$


cat


语法:cat [文件名]
功能描述:显示文件内容
选项:
 -n显示行号
 
范例:
[huichen@localhost test]$ ls
1.txt test2
[huichen@localhost test]$ cat 1.txt 
hello
world
[huichen@localhost test]$ cat -n 1.txt 
 1 hello
 2 world
[huichen@localhost test]$


more


语法:more [文件名]
功能描述:显示文件内容
选项:
 (空格) 翻页
 (Enter) 换行
 q或Q 退出


tail


语法:tail [文件名]
功能描述:显示文件后面几行
选项:
 -n 指定行数
 -f 动态显示文件末尾内容(echo “ddd”>>1)
 
范例:
[huichen@localhost test]$ cat 1.txt 
hello
world
world
world
world
world
world
[huichen@localhost test]$ tail -n 3 1.txt 
world
world
world
[huichen@localhost test]$


wc


语法:wc [OPTION]... [FILE]...
功能描述:显示文件后面几行
选项:
 -c 统计字节数
 -l 统计行数
 -m 统计字符数。这个标志不能与 -c 标志一起使用
 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
 -L 打印最长行的长度
 
范例:
[huichen@localhost test]$ cat 2.txt 
nux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
Linuxmint
[huichen@localhost test]$ wc 2.txt 
 7 8 66 2.txt
[huichen@localhost test]$ wc -l 2.txt 
7 2.txt
[huichen@localhost test]$ wc -w 2.txt 
8 2.txt
[huichen@localhost test]$ wc -L 2.txt 
17 2.txt


1.2.2 权限管理命令


语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
 [mode=421 ] [文件或目录]
 
功能描述:改变文件或目录权限
选项:
 -R递归修改
范例:
[huichen@localhost test]$ ll
总用量 16
-rw-rw-r-- 1 huichen huichen 84 12月 1 18:33 1.txt
-rw-rw-r-- 1 huichen huichen 66 12月 1 18:37 2.txt
-rw-rw-r-- 1 huichen huichen 6 12月 1 18:42 hello.sh
drwxrwxr-x 2 huichen huichen 4096 12月 1 17:44 test2
[huichen@localhost test]$ chmod +x hello.sh 
[huichen@localhost test]$ ll
总用量 16
-rw-rw-r-- 1 huichen huichen 84 12月 1 18:33 1.txt
-rw-rw-r-- 1 huichen huichen 66 12月 1 18:37 2.txt
-rwxrwxr-x 1 huichen huichen 6 12月 1 18:42 hello.sh
drwxrwxr-x 2 huichen huichen 4096 12月 1 17:44 test2
[huichen@localhost test]$ chmod o+w 1.txt 
[huichen@localhost test]$ ll
总用量 16
-rw-rw-rw- 1 huichen huichen 84 12月 1 18:33 1.txt
-rw-rw-r-- 1 huichen huichen 66 12月 1 18:37 2.txt
-rwxrwxr-x 1 huichen huichen 6 12月 1 18:42 hello.sh
drwxrwxr-x 2 huichen huichen 4096 12月 1 17:44 test2
[huichen@localhost test]$ chmod 664 2.txt 
[huichen@localhost test]$ ll
总用量 16
-rw-rw-rw- 1 huichen huichen 84 12月 1 18:33 1.txt
-rw-rw-r-- 1 huichen huichen 66 12月 1 18:37 2.txt
-rwxrwxr-x 1 huichen huichen 6 12月 1 18:42 hello.sh
drwxrwxr-x 2 huichen huichen 4096 12月 1 17:44 test2
[huichen@localhost test]$


chown


语法: chown [OPTION]... [OWNER][:[GROUP]] FILE...
 
功能描述:改变文件用户或者组
选项:
 -R递归修改
范例:
将文件 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt
将目前目录下的所有文件与子目录的拥有者皆设为 users 群体的使用者 lamport :
chown -R lamport:users *


chgrp


语法: chown [OPTION]... [OWNER][:[GROUP]] FILE...
 
功能描述:改变文件用户或者组
选项:
 -f或--quiet或--silent  不显示错误信息。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--verbose  显示指令执行过程。
 --reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
范例:
[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log
"log2012.log" 的所属组已更改为 bin
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
 
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
[root@localhost test]# chgrp --reference=log2012.log log2013.log 
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log


1.2.3 文件搜索命令

find


语法: find path -option [ -print ] [ -exec -ok command ] {} ;
 
功能描述:改变文件用户或者组
选项:
 -amin n : 在过去 n 分钟内被读取过
 -anewer file : 比文件 file 更晚被读取过的文件
 -atime n : 在过去 n 天过读取过的文件
 -cmin n : 在过去 n 分钟内被修改过
 -cnewer file :比文件 file 更新的文件
 -ctime n : 在过去 n 天过修改过的文件
 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
 -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
 d: 目录
 c: 字型装置文件
 b: 区块装置文件
 f: 一般文件
 l: 符号连结
范例:
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;


locate


语法: locate [-d ][--help][--version][范本样式...]
 
功能描述:查找文件路径
选项:
 
范例:$ locate inittab locate命令用于查找文件,它比find命令的搜索速度快,
它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。
当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在
/var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符
下直接执行#updatedb 命令即可.


grep


语法: grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
 
功能描述:查找内容
选项:-v或--revert-match 反转查找。
 -n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号
 -h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
 -H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
 -i或--ignore-case 忽略字符大小写的差别。
 -l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。
 -c或--count 计算符合范本样式的列数。
 
范例:
$ grep test test* #查找后缀有“test”的文件包含“test”字符串的文件  
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行  
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行  
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行 
 
反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
 
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  
testfile1:helLinux! 
testfile1:Linis a free Unix-type operating system. 
testfile1:Lin 
testfile_1:HELLO LINUX! 
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. 
testfile_1:THIS IS A LINUX TESTFILE! 
testfile_2:HELLO LINUX! 
testfile_2:Linux is a free unix-type opterating system.


1.2.4 帮助命令

man


语法: man [命令或配置文件]
功能描述:获得帮助信息
选项:
范例:
man ls
 查看ls命令的帮助信息
         $ man services
 查看配置文件services的帮助信息
 man –f 命令:可以查看该命令所有的帮助文档列表


1.2.5 压缩命令

tar


语法: tar选项[-zcf] [压缩后文件名] [目录]
功能描述:打包压缩
选项:
 -c打包
 -v显示详细信息
 -f指定文件名
 -z打包同时压缩
 
范例:
$ tar  -zcvf Japan.tar.gz Japan
将目录Japan打包并压缩为.tar.gz文件
tar命令解压缩语法:
-x解包
-v显示详细信息
-f指定解压文件
-z解压缩
范例:$ tar  -zxvf Japan.tar.gz


1.2.6 网络命令

ping


语法: ping选项 IP地址
功能描述:测试网络连通性
选项:
 -c指定发送次数
 
范例:
范例: #  ping 192.168.1.156


ifconfig


语法:ifconfig网卡名称 IP地址
功能描述:查看和设置网卡信息
选项:
 -c指定发送次数
 
范例:
# ifconfig  eth0 192.168.8.250
ifconfig eth0 up
Ifconfig eth0 down(CRT挂)
ifconfig eth0 192.168.120.56 netmask 255.255.255.0


1.2.7 关机命令


语法:shutdown [选项] 时间
功能描述:关机重启
选项:
 -c:取消前一个关机命令
 -h:关机
 -r:重启
 
 
其他重启命令
reboot
init 6
"init 6" 基于一系列/etc/inittab文件,并且每个应用都会有一个相应shutdown脚本。
'init 6' 调用一系列shutdown脚本(/etc/rc0.d/K*)来使系统优雅关机;
'reboot'并不执行这些过程,reboot更是一个kernel级别的命令,不对应用使用shutdown脚本。
我们应该在通常情况下使用 init 6.
在出问题的状况下或强制重启时使用reboot.


1.3 重定向

1.3.1 重定向使用场景

n 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;

n 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;

n 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;

n 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;

n 错误讯息与正确讯息需要分别输出时。

1.3.2 重定向标号

>:输出重定向到一个文件或设备 覆盖原来的文件

>>:追加

<:输入重定向

输入输出标记

标准输入:代码为 0 ;或称为 stdin ;使用的方式为 <

标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>

错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

标准错误重定向符号

2>: 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件

2>>:追加

2>&1(>&):将一个标准错误输出重定向到标准输出

1.3.3 实践

1.#显示当前目录文件 test.sh test1.sh test1.sh实际不存在

2.#正确输出与错误输出都显示在屏幕了,现在需要把正确输出写入suc.txt

3.#把错误输出,不输出到屏幕,输出到err.txt

4.#继续追加把输出写入suc.txt err.txt “>>”追加操作符

5.#将错误输出信息输出到黑洞

1.4 VI/VIM

1.4.1 VI/VIM工作模式

一般模式、编辑模式、命令行模式

工作模式的切换


CentOS7 如何计划任务 保存退出 centos7保存并退出命令_debian重启命令_02


1.4

.2 VI/VIM基本操作

文件查找

操作键

功能

/word

从上而下在文件中查找字符串“word”

?word

从下而上在文件中查找字符串“word”

n

定位下一个匹配的被查找字符串

N

定位上一个匹配的被查找字符串

保存文件及退出vi编辑器

功能

命令

备注

保存文件

:w

:w /root/newfile

另存为其它文件

退出vi

:q

未修改退出

:q!

放弃对文件内容的修改,并退出vi

保存文件退出vi

:wq

文件内容替换

命令

功能

:%s/old/new/g

在整个文件范围内替换所有的字符串“old”为“new”

:%s/old/new/gc

在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

命令模式的常用命令

命令

说明

功能键

命令

说明

功能键

h

向左移一个字符


Ctrl+f(b)

向后(前)翻一页

PageDown(Pageup)

l

向右移一个字符


H

移至窗口的第一行

j

向上移一个字符


M

移至窗口的中间行

k

向下移一个字符


L

移至窗口的最后一行

0

移动到该行首

Home

G

移至文件的最后行

$

移动到该行之末

End

nG

移至文件第n行

删除与修改

命令

说明

命令

说明

x

删除光标后的字符

s

删除光标所在字符,并进入输入状态

X

删除光标前的字符

S

删除光标所在行,并进入输入状态

dd

删除光标所在的行

u

恢复刚才被修改的文本

ndd

删除包括光标所在行的n行文本

U

恢复光标所在行的所有修改

r

修改光标所在字符

.

重复上一次命令操作

R

进入替换状态,直至按Esc回到指令模式状态

复制与粘贴

命令

说明

命令

说明

Y

复制到当前行的编辑缓冲区

p

将编辑缓冲区的内容粘贴到光标后的一行

nY

复制当前行开始的n行至编辑缓冲区

P

将编辑缓冲区的内容粘贴到光标前的一行

1.5实践练习

任务一:按要求完成以下操作

1. 在/下建立目录think,把/etc/inittab文件复制到/think下

2. 使用快捷键使光标移动到inittab文件第5行

3.在think下新建文件mod.c,往里面输入如下内容并保存退出。


#include<stdio.h> 
void main( )
{ 
int i; float s; 
scanf(“%d”,&i); 
s=i*i+20; 
printf(“%d”,s); 
}


4.打开mod.c,使该文档显示行号

5. 将光标直接定位到i*i,考虑如何关掉行号

6.将 /etc/man.config 复制到/think下

7. 使用 vi 打开/think/man.config,光标移动到第一行,并且向下搜寻一下“teTeX”这个字符串,若存在,请问在第几行?

8.将 50 到 100 行之间的 man 改为 MAN ,并且一个一个挑选是否需要修改

9. 若修改完之后,要全部复原,如何操作?

10.复制 51 到 60 行这十行的内容,粘贴到最后一行之后;

11.删除 11 到 30 行之间的 20 行;

12.将think/man.config另存为 man.test.config

13.选中所有空行,然后删除它们

14.该文件有多少行与多少字符?

15.删除包含MAN的行,保存文件

任务二: 重定向

1.#显示当前目录文件 test.sh test1.sh test1.sh实际不存在

2.#正确输出与错误输出都显示在屏幕了,现在需要把正确输出写入suc.txt

3.#把错误输出,不输出到屏幕,输出到err.txt

4.#继续追加把输出写入suc.txt err.txt “>>”追加操作符

5.#将错误输出信息输出到黑洞

6.#将错误输出2 绑定给 正确输出 1,然后将标准输出 发送给 /dev/null设备

1.6 参考答案