UNIX/Linux期末复习(二)

第六章 vi编辑器的高级用法

6.1 更多有关vi编辑器的知识

  1. 启动vi编辑器有以下两种方式
    - ①vi 回车(这种属于直接进入vi环境,但没申明进入具体哪个文件,所以需要用到以下的操作对输入进行保存)
    - :w myfile 回车 —— 将缓冲区内容保存到myfile文件
    - :wq myfile 回车——将缓冲区内容保存到myfile,同时离开vi模式
    - ②vi myfile
    - :w 回车 —— 将缓冲区内容保存到myfile中
    - :w otherfile 回车—— 将缓冲区内容保存到otherfile中,当前文件仍然为myfile
    - :wq 回车——保存到mufile文件并退出vi模式

  2. 只读选项:-R(eg: vi -R filename),可阅读不可修改
    - :w!或:wq!使只读选项无效,将修改写入文件

  3. 命令选项:-c(eg:vi -c /most filename:打开filename文件后立即查找所有most字符),指将指定vi命令作为命令行的一部分

  4. 编辑多个文件:vi filename1 filename2 ……
    - :w :n —— 先保存对当前文件的修改,再启动下一个文件
    - :n! —— 放弃修改,直接启动下一个文件
    - :q!—— 强制退出vi
    - :ar —— 查看要同时编辑的文件名列表,中括号中的为当前正在编辑的文件
    - :e 文件名—— 切换到指定文件,同时旧文件会被关闭
    - :w :e 文件名—— 保存当前的修改,切换到指定文件
    - :e! 文件名—— 当前修改放弃保存,直接切换
    - :r 文件名—— 指定文件的内容会被插入当前光标的下一行,被插入的文件原始内容不受影响
    - :[a,b] w 文件名 —— 将当前文件的一部分写到指定文件中,如果指定文件已存在,需要在w后面加上!以强制覆盖
    -

6.2 重排文本

在这里插入图片描述

6.2.1 移动行命令,需要使用dd,p,P

eg:将光标目前所停留的行向下移动3行

  • :dd ——先删除光标目前所在的行
  • :2j ——光标向下移动2行
  • :p —— 将被删除行放置在光标所在行的下一行

eg:将光标目前所停留的行向上移动3行

  • :dd
  • :2l —— 光标向上移动2行
  • :P ——将被删除行放置在光标所处行的上一行

需要强调,执行dd命令进行删除操作时,被删除文本会保存在临时缓冲区中,直到被下一个复制或删除操作文本取代

6.2.2 复制行命令,需要使用yy,p,P

eg:将光标目前所停留的行复制到光标之下

  • :yy ——复制
  • :p —— 将被复制行的内容放置在光标所在行的下一行

eg:将光标目前所停留的行复制到光标之上

  • :yy
  • :P ——将被复制行的内容放置在光标所在行的上一行

需要强调,执行dd命令进行删除操作时,被删除文本会保存在临时缓冲区中,直到被下一个复制或删除操作文本取代

扫描二维码关注公众号,回复: 15671858 查看本文章

6.3 vi操作符的域

基本的vi命令只能在一个文本块(一个字符、一个单词、一行、一句或其他指定字符集)上操作。
所以引入域控制键能够更好控制编辑任务——命令 = 操作符 + 域控制键
域控制键:

  • $ 光标位置开始到当前行尾(包括光标所在位置处的字符)
  • 0 光标位置前到当前行首(不包括光标所在位置处的字符)
  • e或w 光标位置开始到当前单词的字尾(包括光标所在位置处的字符)
  • b:光标位置到当前所处单词的字首(不包括光标所在位置处的字符)

6.3.1 使用删除操作符d和域控制键

  • 将该行光标所处位置之后的文本全部删除(作用范围是一行):d$
  • 将该行光标所处位置之前的文本全部删除:d0
  • 删除光标位置到这个单词词尾的所有字符(作用范围只有一个单词):dw 或 de
  • 光标位置开始删除两个单词:2dw
  • 从光标所处位置的前面删除到所处单词的字首:db

6.3.2 使用复制操作符和域控制键

例子1:

  • y$ 将该行光标所处位置之后的文本进行复制
  • 移动光标
  • p 复制文本置于光标之后

例子2:

  • y0 将该行光标所处位置之前的文本进行复制
  • 移动光标
  • P 复制文本置于光标之前

6.3.3 使用修改操作符和控制键

c+域控制符:先将指定域文本清除,然后进入文本编辑模式

  • cw 光标到所处单词词尾的所有字符清除,并进入文本编辑模式
  • ESC 回到命令模式
  • u 撤销刚才的修改操作
  • c$ 光标到所处位置到改行行尾所有字符删除,并进入文本编辑模式

6.5 光标定位键

由于屏幕一般显示行有限,超过行数需要光标滚动文件:

  • ctrl+d 向下翻半页down
  • ctrl+u 向上翻半页up
  • ctrl+f 向下翻一页forward
  • ctrl+b 向上翻一页backward
  • G 光标移动到文件尾部
  • n+G n为行号,光标移动到第n行,G表示大范围移动光标
  • :n n为行号,光标移动到第n行
  • :1 与 1G 与 gg 等价
  • ctrl+g 获取当前行号,在vi底部显示行信息

6.6 定制vi编辑器

vi编辑器拥有一些参数供用户设置来控制工作环境,它们一般都有默认值。

6.6.1 选项的格式

vi模式中用set命令设置选项:

  • 布尔选项(类似开关):(设定)set x (取消)set nox
  • 数字式选项:(赋值)set x=number
  • 串选项:(赋值)set x=string

set命令

  • :set all 显示所有选项和他们的值
  • :set 只显示修改过的选项
  • :set X?显示选项X的值

6.6.2 设置vi环境

使用set命令要在vi编辑器中的命令模式下进行,用set进行的修改都是临时的,只对当前编辑的会话期有效。下面进行一些参数的介绍:
布尔选项:

  • autoindent,默认值是noai(ai表示将新行与前一行的行首对齐)
  • ignorecase,默认值是noic(ic表示在搜索选项中忽略大小写)
  • magic,默认值magic(magic表示在搜索中允许使用特殊字符)
  • number,默认是nonu(nu表示显示行号)

6.6.3 行长和行回绕

6.6.4 缩写和宏

缩写ab:

  • :ab 缩写字符串 被缩写字符串
  • 缩写字符串+空格 能召唤出被缩写的完整字符串
  • :unab 缩写字符串 取消缩写
  • 总结缩写是在命令模式下设定,在文本输入模式下使用

宏操作符map

  • :map 单个键 命令键序列
  • :map q 5dd 将q键指定为删除5行的命令
    注意:
  • ^M 表示将Enter回车键放到宏命令序列
  • ^[ 表示将Esc键放到宏命令序列
    eg:指定键V,在文件中查找字unix并用UNIX替换
  • map V /unix ^M cw UNIX ^[
    - ^M是回车
    - c是清除,会进入文本编辑模式
    - w是域,表示光标往后到该单词结尾的所有字符
    - ^[ 表示从文本编辑模式退出到命令模式
  • unmap 单个键 对相应的宏进行取消
  • 设置的宏是临时的,只能在当前会话中使用

6.6.5 .exrc文件

vi在启动时会读取配置文件.exrc进行选项设置,所以想要长久设置需要改动这个配置文件。

6.7 其他vi的命令

6.7.1 可以在vi的命令模式下运行shell命令

  • :!command
  • :r! command——将命令执行结果加入文本中(光标所在行的下一行)
  • J——行连接,链接光标所处行的下一行,也就是把光标所处行的下一行放到光标这一行的末尾
  • / ——向后搜索
  • ?——向前搜索
  • :[行范围]s / 被替换单词 / 新单词 / [g]
  • 在当前行找到misspelled并把它替换为spelled correctly:s/misspelled/spelled correctly/

第七章 UNIX文件系统的高级操作

8.2 shell重定向

shell重定向操作符能够改变命令获取输入和发送输出的地方:

  • 将命令输出保存到文件
  • 将文件作为命令进行输入

8.2.1 输出重定向

  • command > filename 覆盖重定向
  • command >> filename 追加重定向

8.2.1 输出重定向

输入重定向允许用户从指定文件得到输入来运行命令

  • command < filename 覆盖重定向
  • command << filename 追加重定向

8.2.3 cat命令

  • $ cat filename —— 显示文件内容
  • $ cat < filename —— 将filename文件作为输入并显示内容
  • $ cat -n filename —— 显示文件内容加行号
  • $ cat > filename —— 覆盖式创建文件
  • $ cat >> filename —— 文本追加输入,输入完毕之后按Ctrl+d退出
  • $ cat filename > filename.copy ——使用cat命令和输出重定向可以复制文件

8.4 文件操作命令

如果同级,文件名或目录均可以使用相对路径,不同级则要使用绝对路径

8.4.1 复制文件:cp命令

  • $ cp 文件名1 文件名2 —— 创建文件副本
  • $ cp 文件名1 目录名2 —— 将文件复制到其他目录
  • $ cp 文件名1 文件名2 …… 目录名 —— 将多个文件复制到其它目录
  • $ cp -i 文件名1 目录名2 —— 将文件复制到其他目录,-i是命令选项,表示“如果目标文件已经存在,要求确认”
    • $ cp -r 目录名1 目录名2 —— 将目录复制到其他目录(适用于文件夹的移动)

8.4.2 移动文件:mv命令

  • $ mv 文件名 目录 —— 将文件移动到其他目录(非文件所在目录)
  • $ mv 文件名1/目录1 文件名2/目录2 —— 改变文件名/目录名
  • $ mv 文件名1 文件名2 …… 目录名 —— 将文件批量移动到其它目录
  • $ mv -i 文件名1 目录名2 —— 将文件移动到其他目录,-i是命令选项,表示“如果目标文件已经存在,要求确认”

8.4.3 链接文件:ln命令

ln命令是在已经存在文件和新文件名之间创建链接,为已存在的文件起新名字,使用不同名字引用相同文件,所以改变任一文件内容,文件内容发生改变

  • $ ln 已有文件名 链接文件名
  • $ mv 文件名1 文件名2 …… 目录名 —— 在目录中创建链接文件
    在这里插入图片描述

8.4.4 字数计算:wc命令

wc命令计算一个或多个文件的行数、字数和字符数

  • $ wc filename——对应的显示结果为:行数 字数 字符数
  • wc命令的选项:
    • $ wc -l filename —— 只统计行数
    • $ wc -c filename ——只统计字符数
    • $ wc -w filename —— 只统计字数

8.5 文件名替换

常用通配符:

  • ?匹配任意单个字符
  • * 匹配任意字符串,包括空串
  • [list] 匹配任一在list中的字符
  • [!list] 匹配任一不在list中的字符
  • 使用通配符显示隐藏文件,必须将.作为指定模式的一部分

8.6 其他文件操作命令

8.6.1 查找文件:find命令

  • $ fine 路径名 搜索选项 动作选项(路径名控制在哪找;搜索选项控制找的内容;动作选项指定找到之后怎么办)

8.6.2 find命令中的搜索选项

在这里插入图片描述

  • eg:$ find ./ -name “*.c” -print (文件名可以使用通配符[] ? * ;但需要在使用时用引号括起文件名)
  • 搜索选项中,+表示大于;-表示小于,n后可后缀【cwbkMG】表示单位,默认单位为块。
  • type是通过类型查找文件,而相应的文件类型有四种:
    - b:块特殊设备文件
    - c:字符特殊设备文件
    - d:目录文件
    - f:普通文件

8.6.2 find命令中的动作选项

  • -print 显示找到文件的路径名
  • -exec 用户给出命令,对找到的文件进行操作
    - 命令格式:-exec 命令名 {} \ ;
  • -ok 用户执行命令前需要确认
    - 命令格式:-ok 命令名 {} \ ;

8.6.3 显示文件的头部:head命令

在这里插入图片描述

8.6.4 显示文件的尾部:tail命令

在这里插入图片描述

8.6.5 选择文件的一部分:cut命令

  • $ cut 选项 文件名
  • 选项:
    • -f 指定域位置
    • -c 指定字符位置
    • -d 指定域分隔字符,后面跟非默认域分隔符,与-f连用

8.6.6 连接文件:paste命令

  • paste 文件名1…文件名n
  • 选项:-d 指定具体分隔符,默认是制表符

8.6.7 另页查看工具more命令

在这里插入图片描述

  • more命令控制键
    - Space向下翻一页
    - Enter向下翻一行
    - q或者Q 退出more命令

8.7 UNIX的内部:文件系统

UNIX系统将每个文件名与一个整数(i节点号)相关联,并用文件i节点号来标识每个文件,所有i节点号和对应文件的基础信息保存在i节点表中,存储在磁盘中。

  • :$ ls -i ——查看文件i节点号

第九章:探索shell

9.1 shell角色、特征与功能

9.1.3 显示消息:echo命令

echo:将消息参数显示在用户终端上,没有参数输出空行

  • echo参数可以任意长

  • 相应的命令选项:
    - -n 禁止换行(输出后不换行)
    - -e 解释反斜杠引导的转义字符

  • 转义字符指的是:
    - 用于控制消息格式的字符,是字符串的一部分
    - 以\开始,由shell解释为用户想得到的输出

在这里插入图片描述

9.1.4 消除元字符的特殊含义

shell提供了消除元字符(指shell中具有特殊用途的字符)、通配符的特殊含义的字符

  • \:后面的元字符按照字符字面解释
  • “”:双引号“”中除$ 、’’、\ 外的字符都能按照字面意思解释
  • ‘’:中的任何字符都失去特殊含义

9.2 shell变量与元字符

9.2.1 显示和清除变量:set和unset

set:查看当前使用的shell变量
unset:删除不需要的变量

9.2.2 给变量赋值

shell中可创建用户变量,修改标准变量
赋值方法:变量名=变量值
变量前加$,能够使用echo命令显示变量值

9.2.4 shell的标准变量

  • HOME :保存用户主目录,可用于其他命令定位主目录
  • PATH :设置shell定位命令(程序)时所要查找的目录名
    - 修改PATH值的格式$PATH= $PATH:/usr/mybin
  • PS1:设置作为命令提示符的字符串(赋值方式PS1=“提示符”),PS1中可使用转义序列,默认的PS1为[\u@\h\W]$
    - \u:显示当前用户的名称
    - \h:显示当前机器的主机名
    - \W:显示工作目录(最底层)
    - $:当前用户是root,显示#;否则显示 $
    - \s:当前运行的shell名称
    - \w:工作目录的完整路径
    - \d :显示当前日期
    - \t:显示当前时间
  • PS2:多行输入一条命令时,设置第二行及以后行的提示符,默认是>
  • SHELL:设置登录shell的完整路径
  • TERM:设置终端类型

9.3 其他元字符

‘’是告诉shell先执行重音符号括起来的命令,其结果替换命令行中原来的命令
在一个命令行中分隔多个命令,shell从左至右执行
()几个命令放在一对括号中,编成一组执行,编组命令可以被重定向
&可以让程序在后台运行:command &
|:链接命令,使用管道操作符

  • 管道使用方式:command A | command B
  • 管道流水线:com1 | com2 | com3 | … | …

9.4 内部进程与进程管理

sleep:使执行该命令的进程延时指定的秒数
ps:查看进程详细信息

  • PID 进程ID
  • TTY 控制进程的终端号
  • TIME 进程已经运行的时间
  • CMD 命令名
  • ps命令选项:
    - -e 显示所有进程
    - -f显示信息的完整列表(包括完整的命令行)
    kill 发信号给指定进程,进行进程间的通信
  • kill -l —— kill信号列表
  • kill [信号码/号码] PID
  • eg:$ kill -SIGKLII 5025 —— 向5025号进程发送9号信号
  • eg:$ kill -9 5025 —— 向5025号进程发送9号信号
  • PID为0,会终止所有和shell有关的进程

tee 命令和| 一起实现多重输出

grep 字符串 文件名:在一个或多个文件中查找满足特定格式的行

  • grep命令文件参数可以使用通配符,grep命令选项:
    • c:只显示每个文件中包含匹配样式的行数
    • i: 搜索匹配时忽略大小写
    • l :只显示具有匹配的行的文件名,而不显示匹配行
    • n:每个输出前显示行号
    • v:仅显示不匹配的行

sort 文件名:对文件内容按照字母或数字顺序排序

  • sort命令选项:
    • b:忽略前导空格
    • d: 按字典顺序排序,忽略标点符号和控制字符
    • f :忽略大小写区别
    • n:数字以数值排序,包括负数和小数
    • o:将输出存储在指定文件中
    • r:倒序排序,由升序变为降序

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/KQwangxi/article/details/121994658