UNIX/Linux期末复习(二)

本文介绍了vi编辑器的高级用法,如文本移动、复制、修改、行号定位、定制选项,以及UNIX文件系统中的重定向、文件操作、shell命令和find命令。还涵盖了shell变量、宏、文件名替换和各种实用工具的使用。
摘要由CSDN通过智能技术生成

第六章 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命令进行删除操作时,被删除文本会保存在临时缓冲区中,直到被下一个复制或删除操作文本取代

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:倒序排序,由升序变为降序

在这里插入图片描述

1、制作ramdisk,给出主次设备号,并使用df命令显示相关信息。(20分) 要求:(1) ramdisk的大小为学号的后3位*2,单位为M; (2)对文件系统采用ext2进行格式化。 2、编写一个c程序实现下面的功能:监视一个文件,如果文件被其他进程追加了内容,就把追加的内容打印出来。(15分) (1) 假定所编辑的c程序为mytail.c,使用命令行方式将该源程序编译,目标执行程序为mytail。给出具体的编译实现过程。 (2) 假定日志文件为/usr/tmp/pppd.log,给出打印追加内容的方法。 3、设用户mali记录了在Linux系统中的某些用户的月工资清单,记录在文件mylist.txt中,假定文件mylist.txt的内容如下: #================================================== # 登录名 工作证号 姓名 月份 工资 奖金 补助 扣除 总额 #--------------------------------------------------- wang 2076 wangxi 01 1782 1500 300 175 3407 liang 2074 liangyu 02 1560 1400 280 90 3150 zhang 3087 zhangdi 03 1804 1218 206 213 3015 wang 2076 wangxi 03 1832 1550 230 245 3367 wang 2076 wangxi 04 1832 1450 230 245 3267 liang 2074 liangyu 05 1660 1450 230 70 3270 zhang 3087 zhangdi 06 1700 1310 283 270 3023 #================================================== 只允许用户zhang读取行首字符为#的行和与用户zhang有关的行,与其他用户有关的行对用户zhang保密。(15分) (1) 编写相应的查询query.c,给出目标文件为query的实现方法; (2) 给出设置mylist.txt文件权限为仅对文件主具有读写权限的实现命令; (3) 给出设置query文件用户ID权限实现命令; (4) 给出用户zhang执行程序query的结果。 4、使用fork,exec以及wait函数构造简单的shell解释程序。(15分) (1) 假定所编辑的c程序为myxsh.c,使用命令行方式将该源程序编译,目标执行程序为myxsh。给出具体的编译实现过程。 (2) 假定当前目录下有文件信息如下: 文件的行大小 文件名 文件的行大小 文件名 920 auther.c 146 licp.txt 127 myxsh.c 124 fus.h 160 chap1.h 152 myxse.c 46 fsme.h 164 fsme 运行myxsh程序出现提示符=>后,分析find . -name *.[ch] -exec wc -l {} ; 执行结果。 5、对/usr目录进行压缩归档,结果文件名位myusr.tar。(10分) 要求:(1)以控制台方式运行; (2)将该任务挂起,再转后台,再转前台,查看进程的状态变迁过程。 6、编写程序实现通过Windows客户端对Linux服务器端进行相关网络信息配置。(25分) 要求:(1)新修改服务器的IP 地址的构成方式:网络号为192.168.2.0,主机号为学号的后3位-150;掩码为255.255.255.0;默认网关为:网络号与服务器相同,主机号为1,DNS202.117.96.10; (2)服务器端程序以deamon程序的方式运行,监听端口为学号的后4位; (3)客服端使用VC++,以GUI 方式完成对服务器端的IP 地址、掩码、默认网关、DNS信息配置输入; (4)服务器端在接收客户端的配置信息后,使用exec 系列函数完成对IP 地址、掩码、默认网关、DNS修改,并写入相应的配置文件。结果验证:使用ifconfig检查IP地址信息配置的正确性;使用nslookup检查DNS信息的正确性。 把实现的信息结果与配置文件比较,检查其一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值